API, live stream and MCP server
The same fused catalogue that drives the map, as plain JSON. No key, CORS open, cached for 30 seconds. Please credit SeismoAtlas and the agencies in the attribution block.
Endpoints
| GET /api/v1/events | Latest fused events. range=24h|7d|30d, minmag, cc, bbox, near=lat,lon,km, order, limit, format=json|geojson |
| GET /api/v1/events/{id} | One event: every agency solution, nearby cities, aftershocks |
| GET /api/v1/near | Events near a point, nearest first. lat, lon, km ≤ 1000, days ≤ 30 |
| GET /api/v1/regions | Countries with region pages and 30-day counts |
| GET /api/v1/regions/{cc} | 30-day country summary: counts by magnitude and depth, largest, latest |
| GET /api/v1/history | USGS catalogue since 1900. start, end, minmag, bbox | cc | near |
| GET /api/stream | Server-Sent Events: new and revised events as they are ingested |
| POST /mcp | Model Context Protocol server (Streamable HTTP) |
Machine-readable description: /api/openapi.json (OpenAPI 3.1). A plain-text overview for language models: /llms.txt.
Examples
curl "https://seismoatlas.com/api/v1/events?minmag=4.5"curl "https://seismoatlas.com/api/v1/near?lat=38.42&lon=27.14&km=200&days=7"curl "https://seismoatlas.com/api/v1/events?range=30d&cc=JP&format=geojson"curl "https://seismoatlas.com/api/v1/events/us6000abcd"
{
"event": {
"id": "us6000abcd",
"title": "M5.2 earthquake 12 km NE of İzmir, Türkiye",
"mag": 5.2, "magType": "mww", "depth": 10.0,
"reviewed": true, "revised": false,
"solutions": [ { "provider": "usgs", "mag": 5.2 }, { "provider": "geofon", "mag": 5.0 } ],
"url": "https://seismoatlas.com/earthquake/us6000abcd-m5-2-earthquake-12-km-ne-of-izmir-turkiye"
},
"attribution": { "sources": [ { "name": "U.S. Geological Survey", "licence": "Public domain" } ] }
}Compact events use short keys to keep the live feed small: t time (ms, UTC), m magnitude, d depth (km), st review state (r/a), ag one entry per agency solution. The full schema is in the OpenAPI file.
Live stream
/api/stream is a Server-Sent Events stream. On connect you receive a hello event, then a quake event for every new or revised earthquake. Fetch the initial list from /api/v1/events and apply the stream on top.
const list = await (await fetch("https://seismoatlas.com/api/v1/events")).json();
const es = new EventSource("https://seismoatlas.com/api/stream");
es.addEventListener("quake", (m) => {
const { type, e } = JSON.parse(m.data); // type: "created" | "updated"
console.log(type, e.m, e.title);
});MCP server for AI assistants
SeismoAtlas runs a read-only remote MCP server at https://seismoatlas.com/mcp (Streamable HTTP, no sign-in). Tools: latest_earthquakes, earthquake_details, earthquakes_near, region_summary and historical_search. Each result has a short text summary, structured data, canonical links and source credits.
- Claude (claude.ai or the desktop app): Settings → Connectors → Add custom connector, and paste
https://seismoatlas.com/mcp. - ChatGPT: Settings → Apps & Connectors → create a connector with the same URL (developer mode may be required on some plans).
- Claude Code and other clients:
claude mcp add --transport http seismoatlas https://seismoatlas.com/mcpcurl -s https://seismoatlas.com/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"latest_earthquakes","arguments":{"min_magnitude":5,"hours":48}}}'Limits and caching
- API: bursts of 120 requests, then 2 per second per IP. MCP: bursts of 60, then 1 per second. Beyond that you get HTTP 429 with a Retry-After header.
- Responses are cached for 30 seconds; polling faster gains nothing. Use the stream for real time.
- The in-memory deployment keeps about 30 days; use
/api/v1/historyfor older data.
Attribution
Every response includes an attribution block listing the agencies behind the returned events. Keep it visible when you publish the data: USGS (public domain, credit appreciated), GFZ GEOFON and INGV (CC BY 4.0), JMA (出典:気象庁, noting processing), and EMSC or AFAD where they appear. Link back to the event page when you can. Details on Data sources.
Embed
For a ready-made list on your own site, use the embeddable widget.
Built by Novpix. Questions about the API: hello@seismoatlas.com.