DEV Community

Noble Ronin
Noble Ronin

Posted on

Earthquake Data Has a Free JSON API — Every Quake on Earth, No Key Required

Earthquake Data Has a Free JSON API

If you've ever needed earthquake data — for a mapping app, a risk model, a news feed, or just a hobby dashboard — you don't need to scrape earthquake.usgs.gov's web pages, and you don't need a paid data vendor. The USGS runs the FDSN Event Web Service, a free, keyless JSON API over its entire global earthquake catalogue, updated continuously.

No sign-up. No API key. No token. It's a public US government service and it's meant to be hit directly.

The base

https://earthquake.usgs.gov/fdsnws/event/1/query
Enter fullscreen mode Exit fullscreen mode

Ask for GeoJSON and you get a standard FeatureCollection — one Feature per earthquake, each with a geometry.coordinates ([longitude, latitude, depthKm]) and a properties object carrying everything else:

curl "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2026-07-01&minmagnitude=4.5&limit=5"
Enter fullscreen mode Exit fullscreen mode

Each feature's properties block includes mag, magType, place, time / updated (epoch ms), tsunami (0/1 flag), alert (PAGER level: green/yellow/orange/red), sig (significance score), felt (number of "did you feel it?" reports), cdi/mmi (intensity), status (automatic/reviewed), type (earthquake, quarry blast, …), plus a detail URL for the full per-event record.

Filtering

Param Meaning Example
starttime / endtime Time window, ISO or YYYY-MM-DD starttime=2026-07-01&endtime=2026-07-27
minmagnitude / maxmagnitude Magnitude range minmagnitude=5.0
minlatitude/maxlatitude/minlongitude/maxlongitude Bounding-box search minlatitude=32&maxlatitude=42&minlongitude=-125&maxlongitude=-114
latitude/longitude/maxradiuskm Circle search around a point latitude=35.4&longitude=139.7&maxradiuskm=200
mindepth / maxdepth Depth range, km maxdepth=70
alertlevel PAGER alert filter alertlevel=orange
orderby time, time-asc, magnitude, magnitude-asc orderby=magnitude
format geojson (recommended), csv, xml, text format=geojson

Examples

# Every M4.5+ quake in the last window, newest first
curl "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&minmagnitude=4.5&orderby=time"

# California bounding box, this month
curl "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2026-07-01&minlatitude=32&maxlatitude=42&minlongitude=-125&maxlongitude=-114"

# Within 200km of Tokyo, magnitude 5+
curl "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&latitude=35.4&longitude=139.7&maxradiuskm=200&minmagnitude=5"

# Only quakes that triggered a PAGER alert (orange/red = significant humanitarian impact)
curl "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&alertlevel=orange"
Enter fullscreen mode Exit fullscreen mode

There's also a rolling set of pre-built summary feeds if you just want "what's happening right now" without building a query — https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/{significant,4.5,2.5,1.0,all}_{hour,day,week,month}.geojson — e.g. .../summary/4.5_day.geojson for every M4.5+ quake in the last 24 hours. Same GeoJSON shape as the query endpoint, refreshed every few minutes.

Notes & gotchas

  • Keyless, no rate-limit registration — just be reasonable with request volume; it's a shared public service.
  • format=geojson is the easiest to work with; format=text gives a pipe-delimited feed if you want something grep-friendly.
  • status starts as automatic right after an event and flips to reviewed once a seismologist confirms it — for anything safety-critical, filter on status=reviewed or expect revisions.
  • Depth and magnitude type (magType) vary by network — mww, ml, mb etc. aren't directly comparable across all ranges; don't average them naively.
  • Circle search (latitude/longitude/maxradiuskm) and bounding-box search are mutually exclusive — pick one.

Earthquake feed structure

Related

Full endpoint reference + copy-paste table: noble-ronin/usgs-earthquake-api on GitHub.

Want the filtered rows without building the query string yourself? The Earthquake Data Scraper on Apify wraps this same endpoint — set magnitude/time/bbox in a form, get clean rows out, schedule it as a live alert feed.

Top comments (0)