Skip to content
SeismoAtlas
Developers

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/eventsLatest 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/nearEvents near a point, nearest first. lat, lon, km ≤ 1000, days ≤ 30
GET /api/v1/regionsCountries 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/historyUSGS catalogue since 1900. start, end, minmag, bbox | cc | near
GET /api/streamServer-Sent Events: new and revised events as they are ingested
POST /mcpModel Context Protocol server (Streamable HTTP)

Machine-readable description: /api/openapi.json (OpenAPI 3.1). A plain-text overview for language models: /llms.txt.

Examples

Magnitude 4.5+ in the last 24 hours
curl "https://seismoatlas.com/api/v1/events?minmag=4.5"
Within 200 km of İzmir, last 7 days
curl "https://seismoatlas.com/api/v1/near?lat=38.42&lon=27.14&km=200&days=7"
Japan, 30 days, as GeoJSON
curl "https://seismoatlas.com/api/v1/events?range=30d&cc=JP&format=geojson"
One event (response, shortened)
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.

JavaScript
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 Code
claude mcp add --transport http seismoatlas https://seismoatlas.com/mcp
Raw JSON-RPC
curl -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/history for 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.