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 URLhttps://worldnaturaldisasters.com/api/v1
AuthenticationNone
FormatJSON, UTF-8. GeoJSON on one endpoint.
CORSEnabled — browser requests work from any origin
Rate limit120 requests per minute per IP. Over that you get 429 with Retry-After.
FreshnessEarthquake 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
LicenceFree 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, drought and others
  • severity — minor, moderate, severe, extreme
  • country — ISO 3166-1 alpha-2, e.g. PK
  • balanced=1 — spread the results across every hazard instead of returning the newest N. Raises the limit ceiling 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.