QuakeIndex API
Free, no key, no sign-up. Every response carries generated and
source, and every event carries source_url pointing at
its USGS event page — which is the record of authority for all of its values.
The same document is available as JSON at
/api/?format=json, or by sending
Accept: application/json.
Conventions
- Timestamps are epoch milliseconds UTC, with an ISO 8601 string alongside.
- Provenance is on every response, not in the documentation only.
- Freshness: events are ingested from the USGS
all_hourfeed every 30 seconds. - No forecasts. Nothing in this API predicts anything. Method →
Rate limits
A fixed window per IP address. A fixed window can admit a burst at a window
boundary; that is an accepted trade for a public read-only API and is stated here
rather than hidden. Exceeding it returns HTTP 429 with a Retry-After
header.
| Endpoint | Limit |
|---|---|
/api/latest | 120 / 60 s |
/api/near | 60 / 60 s |
/api/felt | 60 / 60 s |
GET /api/latest
The most recent events, newest first.
| Parameter | Range | Default |
|---|---|---|
limit | 1–100 | 20 |
min_magnitude | float | none |
{
"generated": 1790399450000,
"generated_iso": "2026-09-26T05:10:50.000Z",
"source": "USGS",
"count": 20,
"events": [{
"id": "ci41339287",
"url": "https://quakeindex.com/quake/ci41339287/7-km-ene-of-anza-ca/",
"time": 1790399215610,
"time_iso": "2026-09-26T05:06:55.610Z",
"magnitude": 0.52,
"magnitude_type": "ml",
"depth_km": 14.02,
"latitude": 33.5815,
"longitude": -116.607,
"place": "7 km ENE of Anza, CA",
"status": "automatic",
"felt_reports": null,
"reported_intensity": null,
"measured_intensity": null,
"impact_alert": null,
"tsunami": false,
"event_type": "earthquake",
"indexed_by_quakeindex": false,
"first_seen_by_quakeindex": 1790399418055,
"source": "USGS",
"source_url": "https://earthquake.usgs.gov/earthquakes/eventpage/ci41339287"
}]
} GET /api/near
Events within a radius of a point, newest first, each with distance_km.
| Parameter | Range | Default |
|---|---|---|
lat | −90…90, required | — |
lon | −180…180, required | — |
km | 1–1000 | 50 |
days | 1–365 | 30 |
limit | 1–200 | 20 |
min_magnitude | float | none |
truncated is true when the result hit limit,
so a caller can tell a full page from a complete answer.
curl 'https://quakeindex.com/api/near?lat=37.77&lon=-122.42&km=80&days=7' GET /api/felt
"Was that an earthquake?" for a point and a time window.
| Parameter | Range | Default |
|---|---|---|
lat | required | — |
lon | required | — |
minutes | 5–180 | 60 |
km | 10–500 | 150 |
answer is one of three values, and the middle one is the point of the endpoint:
yes— an event was found;events[0]is the most likely one.not_yet_reported— nothing found, and the window is 30 minutes or less. A small earthquake can take several minutes to reach the USGS catalogue, so this is not the same asno. Anything that renders this as a negative is misusing it.no— nothing found over a window long enough that a felt earthquake would normally be catalogued by now.
GET /sitemap-quakes.xml
Indexable events from the last 48 hours. Which events are indexable is defined on the method page: magnitude 2.5 and above in the United States, 4.5 and above elsewhere.
Attribution
The earthquake data is USGS's and is public domain — cite USGS for it. For our computed figures (the activity score, the strips, the per-place statistics) please cite QuakeIndex and link to the page. See the terms.
Need a higher limit, or a bulk export? team at voittovirta.com.