USGS Earthquake Data Scraper — FDSN Event Feed avatar

USGS Earthquake Data Scraper — FDSN Event Feed

Pricing

Pay per event

Go to Apify Store
USGS Earthquake Data Scraper — FDSN Event Feed

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

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

USGS Earthquake Data Scraper — Devil Scrapes

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 rowalert, tsunami, sig, felt, cdi, and mmi are 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/5xx and honour Retry-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

  1. Set a time window with starttime and endtime (accepts YYYY-MM-DD or full ISO-8601).
  2. Optionally add a magnitude, depth, bounding-box, or radius filter.
  3. Run the Actor — the dataset fills with one row per matching event.
  4. 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

FieldTypeRequiredDefaultDescription
starttimestringyesEarliest event time (inclusive).
endtimestringyesLatest event time (inclusive).
minmagnitudenumbernoOnly events at or above this magnitude.
maxmagnitudenumbernoOnly events at or below this magnitude.
mindepth / maxdepthnumbernoDepth filter, in kilometers.
minlatitude/maxlatitude/minlongitude/maxlongitudenumbernoBounding-box filter — all four together or none.
latitude/longitude/maxradiuskmnumbernoRadius-search center and extent — all three together or none.
orderbyselectnotimeSort order: time, time-asc, magnitude, magnitude-asc.
limitintegerno500Events requested per FDSN page (USGS hard-caps at 20 000).
max_itemsintegerno2000Stop after this many events. 0 = unlimited (paginate until a short page).
proxyConfigurationobjectnoApify Proxy onProxy 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:

EventPrice
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 /count pre-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.