UXONEWS
A world map and event database for publicly reported explosive incidents. Reporting is ingested continuously, deduplicated across outlets and languages, geolocated, and published with the sources it came from.
- Nothing is generated
- No stage calls a language model. Term tables, regular expressions, a local gazetteer and lexical similarity do the classification, so a run is reproducible and no place name appears that was not in the reporting.
- Provenance is kept
- Every record carries the outlets it was built from, with the time each was seen. A figure that changed can be traced to the report that changed it.
- Disagreement is preserved
- Where independent accounts conflict, the conflict is recorded and the confidence drops. Sources are never averaged into a single number that no outlet actually published.
Eight stages, no model.
Every stage is deterministic — term tables, regular expressions, a local gazetteer and lexical similarity. Nothing calls a language model, so a run costs nothing, produces the same answer twice, and never invents a place name that was not in the reporting.
- Sources
- Agency wires, national outlets, humanitarian reporting and curated feeds, polled continuously across languages.
- Detection
- Candidate incidents surfaced from the stream before anything is written to the record.
- Deduplication
- Wire copy republished across dozens of outlets collapses to the one event it describes.
- Geolocation
- Place names resolved against a gazetteer. A pin is placed only at city precision or finer.
- Cross-source verification
- Independent accounts compared field by field. Where they disagree, the disagreement is kept.
- Confidence assessment
- Corroboration, source independence and internal consistency produce a graded score.
- Structured incident
- Type, coordinates, time precision, casualties, status and provenance — one machine-readable record.
- Live map
- The record reaches the global interface and keeps updating as reporting develops.
What the platform classifies.
Seven event types, and the code each record carries. A report that does not fit one of them is not filed under a nearest match — it is not filed.
- EXPExplosionBlasts of established or undetermined cause — industrial, gas, munitions storage, or as yet unattributed.
- AIRAirstrikeAir-delivered munitions, where reporting attributes the strike to an aircraft.
- UASDrone incidentUnmanned-system events, including interceptions and debris damage from engagements.
- CLAArmed clashGround engagements between armed parties, where the reporting supports a location.
- IEDIEDImprovised devices, whether detonated, discovered or rendered safe.
- UXOUXO / ERWExplosive remnants of war: landmines, submunitions and abandoned ordnance, found or cleared.
- INFInfrastructureDamage to power, water, transport or telecommunications resulting from an incident.
Codes shown are the values carried in the record and returned by the API.
Where the reporting is densest.
Zones are drawn from where incidents actually cluster, not from a list of countries someone decided were interesting. A region leaves the set when the reporting stops.
| Zone | Intensity | Incidents / 30d | Trend | |
|---|---|---|---|---|
| 1Eastern Europe corridor | Ukraine | Severe | 412 | +8% |
| 2Horn of Africa | Sudan · Somalia | High | 197 | +14% |
| 3Sahel belt | Mali · Burkina Faso · Niger | High | 164 | +3% |
| 4Eastern Mediterranean | Levant | Severe | 233 | −6% |
| 5Southeast Asia | Myanmar | Elevated | 88 | +2% |
| 6Central Asia | Afghanistan · Pakistan border | Elevated | 71 | −4% |
Illustrative figures.
Straight into your systems.
Every field in the interface is a field in the response. Time and place both carry their own precision, so a consumer can decide what is accurate enough for the decision they are making rather than inheriting ours.
{ "id": "UXN-4417-B2", "type": "explosion", "occurred": { "at": "2026-09-07T09:41:00Z", "precision": "hour" }, "location": { "name": "Nairobi", "country": "KE", "lon": 36.8200, "lat": -1.2900, "precision": "city" }, "casualties": { "killed": 8, "injured": 23, "status": "revised" }, "confidence": "high", "sources": [ { "publisher": "Reuters", "seen": "2026-09-07T09:58:00Z" } ] }{ "id": "UXN-4417-B2", "type": "explosion", "headline": "Explosion reported at industrial depot, Nairobi", "occurred": { "at": "2026-09-07T09:41:00Z", "precision": "hour" }, "location": { "name": "Nairobi", "country": "KE", "lon": 36.8200, "lat": -1.2900, "precision": "city" }, "casualties": { "killed": 8, "injured": 23, "status": "revised" }, "confidence": "high", "sources": [ { "publisher": "Reuters", "seen": "2026-09-07T09:58:00Z" }, { "publisher": "AP", "seen": "2026-09-07T10:02:00Z" } ], "updated": "2026-09-07T10:12:00Z" }
GET /api/events
The event stream, filtered by type, confidence, country or window.
GET /api/events/:id
One record, with its full source list and revision history.
GET /api/countries/:iso/events
Everything filed against one country.
GET /api/conflicts
The monitored zones and their current incident density.
GET /api/search
Free-text search across headlines, summaries and place names.
GET /api/map/counts
Aggregated counts for map rendering, without the record bodies.
GET /api/status
Pipeline health and the timestamp of the last completed run.
Put it to work.
Access is granted per account on the platform itself. Write to us instead if the question is whether the data answers your problem at all — that one is worth a conversation before an account.
Who reads this data
- Security & risk management
- Insurance & underwriting
- Logistics & transportation
- Intelligence & security firms
- Media organisations
- Research institutions