Event and station data from the GeoShake community earthquake early-warning network — free to use for research, education and applications.
curl https://api.geoshake.org/api/events [ { "event_id": 7, "originMs": 1783678236932, "lat": 36.57, "lon": 31.06, "nStations": 3, "intensityClass": "orta", "maxPga": 0.106 }, … ]
All GeoShake event and station data is published under Creative Commons Attribution 4.0 (CC BY 4.0). You may use, share and adapt it — including in academic publications and commercial products — as long as you credit GeoShake.
Start anonymous, add a free API key for the historical catalog, or request a personal real-time feed.
One free GeoShake account works everywhere: this API, the Home Assistant integration and Google Home linking. Log in to mint your personal key — copy it, or regenerate at any time.
New here? Create a GeoShake account in the mobile app, then log in to get your API key.
Public read endpoints under api.geoshake.org — great for prototyping and live dashboards.
Sign up is free — a key is issued against your GeoShake account so we can apply fair-use quotas and keep researchers informed of changes.
Use the panel above — or the API directly. Logging in returns your existing key; pass "regenerate": true to force a new one (the old key becomes invalid).
curl -X POST https://api.geoshake.org/api/data/key \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"..."}'Pull events by date range in JSON or CSV.
curl "https://api.geoshake.org/api/data/events?from=2026-01-01T00:00:00Z&to=2026-07-01T00:00:00Z&format=csv" \ -H "X-API-Key: YOUR_KEY" -o geoshake-events.csv
license and citation fields, plus truncated: true when the row limit was hit — narrow the date range and continue.For live pipelines, request personal read-only MQTT credentials with your account and subscribe to the events topic over TLS (port 8883).
geoshake/events · TLS :8883
Returns { broker, port, username, password } — works with any MQTT client: paho, aiomqtt, mosquitto_sub.
curl -X POST https://api.geoshake.org/api/ha/credentials \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"..."}'
# → { broker, port, username, password }
# → subscribe with paho / aiomqtt / mosquitto_subBeyond the confirmed catalog, GeoShake streams live waveform data over the seismology community's standard SeedLink protocol. Point ObsPy, jAmaSeis, SWARM — or any SeedLink client — at seedlink.geoshake.org:18000 and watch stations in real time.
Network GS. Two channels per station: LNZ (1 Hz activity envelope) and ENZ (~110 Hz event bursts). Station codes match the station pages (e.g. BH2JN).
from obspy.clients.seedlink.easyseedlink import create_client
def on_data(trace):
print(trace.id, trace.stats.starttime, len(trace.data), "samples")
client = create_client("seedlink.geoshake.org:18000", on_data)
client.select_stream("GS", "BH2JN", "LNZ") # 1 Hz activity envelope
# client.select_stream("GS", "BH2JN", "ENZ") # ~110 Hz event bursts
client.run()LNZ is a 1 Hz peak-acceleration envelope (counts = m/s² × 10⁶), not a raw broadband seismogram; ENZ carries the vertical trace of trigger bursts (~110 Hz, gappy). An honest live feed from uncalibrated MEMS sensors — great for teaching, not for instrument-response analysis.For education, connect the free IRIS app jAmaSeis and let students watch quakes arrive live and pick P/S phases. In jAmaSeis: File → Manage Sources → Add Source: Raspberry Shake, enter seedlink.geoshake.org:18000, hit Get Stations, then add a GS_…_LNZ (activity) or …_ENZ (events) channel.
GeoShake speaks the seismology community's own standards — anonymous FDSN web services returning QuakeML and StationXML. Point ObsPy at api.geoshake.org and pull events and station metadata the same way you would from IRIS or a national network.
fdsnws-event serves the confirmed catalog as QuakeML 1.2; fdsnws-station serves network/station metadata as StationXML 1.1. Both are anonymous and rate-limited per IP.
from obspy import UTCDateTime
from obspy.clients.fdsn import Client
# GeoShake speaks the standard FDSN web services (no authentication).
client = Client(base_url="https://api.geoshake.org")
# Event catalog -> QuakeML (magnitude = PGA-derived MMI, NOT a seismic magnitude)
cat = client.get_events(starttime=UTCDateTime("2026-01-01"),
minmagnitude=2.0) # MMI threshold
print(cat) # ObsPy Catalog object
# Station metadata -> StationXML (network "GS", provisional, uncalibrated)
inv = client.get_stations(network="GS", level="station")
print(inv)magnitude is a PGA-derived Modified Mercalli Intensity (MMI), explicitly labelled not a seismic magnitude — GeoShake computes neither ML/Mw nor depth. Network GS is a provisional code (not FDSN-registered) and sensors are uncalibrated MEMS, so StationXML stops at station level (no instrument response).For reproducible research, catalog snapshots are archived on Zenodo under CC-BY-4.0 with a citable DOI. Cite the concept DOI below — it is version-stable and always resolves to the latest snapshot.
GeoShake Community Seismic Network (2026). GeoShake Community Seismic Event Catalog. Zenodo. https://doi.org/10.5281/zenodo.21313786
3+ GeoShake stations must agree before an event is published — a conservative catalog with a low false-alarm rate.
Waveform snippets are stored around trigger windows only. GeoShake does not archive continuous waveforms.
Classes hafif · orta · şiddetli are network-derived shaking categories. max_pga is the max peak ground acceleration across triggering stations.
A community network — data quality varies with station density. It complements national networks (AFAD/Kandilli, USGS…), it doesn't replace them.
Anonymous fdsnws-event & fdsnws-station serving QuakeML and StationXML — ObsPy works out of the box today.
The catalog is published on Zenodo under CC-BY-4.0 with a citable DOI — 10.5281/zenodo.21313786. See how to cite.
Real-time activity envelopes + event bursts over SeedLink — open in ObsPy, jAmaSeis or SWARM at seedlink.geoshake.org:18000.
Downloadable trigger-window snippets in miniSEED alongside the event catalog for signal-level analysis (live SAC per-trigger already available on station pages).