USGS Earthquake Data Scraper — FDSN Event Feed
Pricing
Pay per event
USGS Earthquake Data Scraper — FDSN Event Feed
Query the USGS FDSN earthquake catalog by time window, magnitude, depth, bounding box, or radius and get one flat row per event — magnitude, location, depth, significance, alert level, tsunami flag, and felt reports, ready for JSON, CSV, or Excel export.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
USGS Earthquake Data Scraper — FDSN Event Feed
$0.05 per run + $0.002 per earthquake event — about $2.05 per 1,000 events. Pay only for results that land, no credit card required to try.
USGS's earthquake catalog is the world's authoritative seismic-event record, but its FDSN event web service answers in raw, deeply nested GeoJSON — every buyer ends up writing the same coordinate-unpacking, epoch-to-ISO, and pagination code from scratch. We already wrote it. Point this Actor at a time window and any combination of magnitude, depth, bounding-box, or radius filters, and get back one flat row per event — ready for a spreadsheet, a dashboard, or a database import.
🌍 What this scrapes
USGS's public FDSN event web service
(earthquake.usgs.gov/fdsnws/event/1/query) — the same catalog that feeds
USGS's own earthquake map. Every event in scope carries magnitude, exact
location, depth, significance score, PAGER alert level, tsunami flag, and
community felt-report data (CDI/MMI), flattened into one typed row.
🔥 Features
- Full FDSN parameter surface — magnitude, depth, and time filters, plus both bounding-box and radius search — most rival scrapers only cover a magnitude-and-date box.
- Every risk field on every row —
alert,tsunami,sig,felt,cdi, andmmiare first-class output columns, not buried in nested JSON you have to dig for. - Flat, typed output — a fixed schema (
event_id,magnitude,place, coordinates, depth, and 14 more), not raw GeoJSON re-wrapped. - 🛡️ We rotate browser fingerprints (curl-cffi impersonation across Chrome, Firefox, and Safari profiles) on every request.
- 🔁 We retry with exponential backoff on
408/429/5xxand honourRetry-After, up to 5 attempts per page — a busy USGS endpoint never costs you a failed run. - 🧱 We never crash on a bad record. A malformed event is skipped with a logged warning; every other event in your search still lands in the dataset.
- 🧊 A zero-match search still succeeds. A narrow filter combination that matches nothing finishes with a clear status message, not a failed run and a wasted charge.
💡 Use cases
- Catastrophe-risk and reinsurance monitoring — pull every event above a magnitude threshold in a region and feed it straight into an exposure model.
- Geotech and infrastructure risk dashboards — track seismic activity near a specific site with a radius search centered on the asset.
- News-desk earthquake alerting — poll a rolling time window and surface new events with their alert level and felt-report counts.
- Research and academic datasets — build a clean, reproducible seismic event table without hand-parsing GeoJSON.
⚙️ How to use it
- Set a time window with
starttimeandendtime(acceptsYYYY-MM-DDor full ISO-8601). - Optionally add a magnitude, depth, bounding-box, or radius filter.
- Run the Actor — the dataset fills with one row per matching event.
- Export as JSON, CSV, or Excel straight from the Console, or pull it via the API.
No API key. No account. Just a time window and, optionally, a filter.
📥 Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
starttime | string | yes | — | Earliest event time (inclusive). |
endtime | string | yes | — | Latest event time (inclusive). |
minmagnitude | number | no | — | Only events at or above this magnitude. |
maxmagnitude | number | no | — | Only events at or below this magnitude. |
mindepth / maxdepth | number | no | — | Depth filter, in kilometers. |
minlatitude/maxlatitude/minlongitude/maxlongitude | number | no | — | Bounding-box filter — all four together or none. |
latitude/longitude/maxradiuskm | number | no | — | Radius-search center and extent — all three together or none. |
orderby | select | no | time | Sort order: time, time-asc, magnitude, magnitude-asc. |
limit | integer | no | 500 | Events requested per FDSN page (USGS hard-caps at 20 000). |
max_items | integer | no | 2000 | Stop after this many events. 0 = unlimited (paginate until a short page). |
proxyConfiguration | object | no | Apify Proxy on | Proxy settings — Apify Proxy is enabled by default. |
Example input:
{"starttime": "2026-08-03","endtime": "2026-09-02","minmagnitude": 4.5}
📤 Output
One row per earthquake event:
{"event_id": "us7000td6k","magnitude": 4.8,"magnitude_type": "mb","place": "176 km SE of Gizo, Solomon Islands","event_time": "2026-08-30T02:00:29.055Z","updated_time": "2026-08-30T02:28:22.040Z","longitude": 158.1558,"latitude": -9.0154,"depth_km": 10.0,"alert_level": null,"tsunami": false,"significance": 354,"felt_reports": null,"cdi": null,"mmi": null,"status": "reviewed","event_type": "earthquake","title": "M 4.8 - 176 km SE of Gizo, Solomon Islands","event_url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000td6k","network": "us"}
Optional USGS fields (magnitude, felt_reports, cdi, mmi, alert_level,
and more) come back as null when USGS itself doesn't report them for a
given event — never a missing key, never a crashed row.
💰 Pricing
This Actor bills Pay-Per-Event, so the invoice matches what you actually received:
| Event | Price |
|---|---|
| Actor start | $0.05 per run |
| Result emitted | $0.002 per earthquake event written to the dataset |
That works out to roughly $2.05 per 1,000 events. A run that finds nothing costs you the start fee and nothing else — no data, no per-row charge.
🚧 Limitations
- USGS's FDSN endpoint caps a single page at 20 000 events and this Actor respects that ceiling — extremely wide time windows may need to be split into smaller searches.
- The
/countpre-flight endpoint and the per-event detail endpoint (eventid=) are out of scope for this version; every field the detail endpoint would add for the list view is already on each row. eventtype,catalog,contributor, and a handful of other long-tail FDSN parameters aren't exposed yet — open a feature request if you need one.
❓ FAQ
Do I need a USGS API key? No — the FDSN event web service is public and keyless. You don't need an account either.
What happens if my search matches nothing? The run finishes successfully with zero rows and a status message describing exactly what was searched — you're never charged a per-row fee for zero rows, and the run never fails just because a narrow filter combination matched nothing.
Can I search by location without a bounding box? Yes — use the
radius-search fields (latitude, longitude, maxradiuskm) to center a
search on a point instead of drawing a box.
Why did my run fail instead of just returning nothing? A run fails loud only when USGS itself rejects the request (a malformed parameter value, for example) or is unreachable after retries — that's a real error, not an empty result, and we never disguise the difference.
Can I combine a bounding box and a radius search in the same run? No — USGS treats them as alternative location filters, so set one or the other, not both, in a single run.
🙌 Your feedback
Found an issue or have a feature request for the USGS Earthquake Data Scraper? Reach out via https://apify.com/DevilScrapes — we read every message and ship fixes fast.