Free disaster data API
Every event, country and statistic on this site is available as JSON. No key, no registration, no cost. The same endpoints power this website and the Android app, so what you get is exactly what we show.
At a glance
| Base URL | https://worldnaturaldisasters.com/api/v1 |
|---|---|
| Authentication | None |
| Format | JSON, UTF-8. GeoJSON on one endpoint. |
| CORS | Enabled — browser requests work from any origin |
| Rate limit | 120 requests per minute per IP. Over that you get 429 with Retry-After. |
| Freshness | Earthquake and weather sources (USGS, EMSC, NOAA/NWS) are re-synced every 2 minutes. Satellite and humanitarian sources (GDACS, NASA EONET, NASA FIRMS, ReliefWeb) refresh at most every 15 minutes, because that is as often as they publish. Live status for each. |
| OpenAPI spec | /openapi.json — OpenAPI 3.1 |
| Licence | Free to use with attribution — see data sources |
Just want it on your page? If you only need a live feed of events on your own website, the free embeddable widget is one block of HTML and needs no code at all. The API is for when you want the raw data.
Endpoints
GET /api/v1/events
Recent events, newest first.
limit— 1–100 (default 30)type—earthquake,flood,wildfire,storm,hurricane,volcano,tsunami,landslide,droughtand othersseverity—minor,moderate,severe,extremecountry— ISO 3166-1 alpha-2, e.g.PKbalanced=1— spread the results across every hazard instead of returning the newest N. Raises thelimitceiling to 400.lite=1— omit the pre-rendered HTML fields. Roughly 45% smaller; use this unless you specifically want our markup.
https://worldnaturaldisasters.com/api/v1/events?type=earthquake&severity=severe&limit=10&lite=1
Use balanced=1 for anything map-shaped. Satellite fire
detections and US county weather warnings arrive in the hundreds an hour, so the
newest 100 rows are almost entirely those two and every earthquake is crowded out.
The balanced mode deals the hazard buckets round-robin instead.
GET /api/v1/events/geojson
The same events as a GeoJSON FeatureCollection, ready to drop into Leaflet, Mapbox or QGIS. days = 1–30 (default 7).
https://worldnaturaldisasters.com/api/v1/events/geojson?days=3
GET /api/v1/notable
The few events worldwide that are actually notable, ranked by scale and capped at one per country. limit = 1–6.
This exists because ordering by recency is nearly useless at global scale — a sample of
the 100 most recent extreme events came back as 98 US tornado warnings. If
you want "what is happening in the world right now" in a sentence, use this rather than
/events.
GET /api/v1/stats
Live global counts: active events, countries affected, earthquakes in the last 24 hours, fires, storms, and the last sync time.
GET /api/v1/countries and GET /api/v1/country/{slug}
All countries, or one country profile with its hazard overview, seasonal risk profile and links to its official national agencies.
https://worldnaturaldisasters.com/api/v1/country/pakistan
GET /api/v1/year/{year}
Year-to-date totals from the agencies' own archives — earthquakes by magnitude from USGS, and large events from NASA EONET.
GET /api/v1/alerts/latest and GET /api/v1/search?q=
The homepage alert feed, and free-text search across events.
Timestamps
Everything is UTC. Event times carry an explicit offset
(2026-08-09T12:34:56+00:00). One field does not:
last_update in /stats is a bare
YYYY-MM-DD HH:MM:SS, and it is UTC. Parse it as UTC — reading it as local
time is a real bug we shipped in our own app and had to fix.
Attribution
The data is not ours. It comes from USGS, EMSC, GDACS (European Commission / UN),
NASA EONET, NOAA/NWS and ReliefWeb (UN OCHA), and each event carries its
source. If you publish from this API, credit those agencies; a link back
to this page is appreciated but the agencies are the ones
who must be named.
What this API is not
It is not an official warning system, and it must not be the only thing between anyone and a hazard. We aggregate public feeds on a two-minute cycle; national agencies issue warnings, and they are the authority. Please build accordingly, and say so in your own interface.
Limits and fair use
120 requests a minute is far above any normal client and there is no key to revoke, so
please cache. Responses carry Cache-Control and most data changes at most
every two minutes. If you need something the limit does not allow,
get in touch rather than working around it.