Global Earthquake Events & Magnitude Search avatar

Global Earthquake Events & Magnitude Search

Pricing

$0.80 / 1,000 earthquakes

Go to Apify Store
Global Earthquake Events & Magnitude Search

Global Earthquake Events & Magnitude Search

USGS earthquake event scraper for date-window and magnitude searches. Filter by geographic bounds and export flat earthquake metadata as JSON for research datasets.

Pricing

$0.80 / 1,000 earthquakes

Rating

0.0

(0)

Developer

Grit

Grit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Turn a bounded USGS catalog search into structured earthquake metadata for seismic monitoring datasets, research tables and scheduled data pipelines.

Specify a UTC date window, optional magnitude range and optional geographic box. The actor requests the official USGS FDSN event summary API with format=geojson, eventtype=earthquake and limit=maxItems, then saves flat rows to the default Apify dataset. The source endpoint is fixed; no login, proxy or API key is needed for USGS.

What it returns

FieldTypeMeaning
eventIdstring / null on errorUSGS preferred event identifier; unique IDs are emitted once per run.
timeUtcstring / null on errorOrigin time in ISO 8601 UTC, preserving milliseconds.
magnitudenumber / nullPreferred magnitude; missing values remain null.
magnitudeTypestring / nullUSGS magnitude scale, for example mww or mb.
eventTypestring / null on errorearthquake for usable records.
depthKmnumber / null on errorHypocenter depth in kilometers.
longitudenumber / null on errorLongitude in decimal degrees.
latitudenumber / null on errorLatitude in decimal degrees.
locationstring / nullUSGS human-readable location description.
statusstring / nullUSGS review status, such as reviewed or automatic.
sourceUrlstring / null on errorOfficial USGS event page.
errorsarray of stringsEmpty for usable rows; malformed source events carry an error without stopping their neighbors.

No contributed media, waveform files, felt-report submissions, community intensity values or detail products are returned. Event-page URLs are references; the actor does not fetch their pages or linked files.

Input example

The prefilled input is:

{
"startDate": "2026-09-01",
"endDate": "2026-09-02",
"minMagnitude": 4,
"orderBy": "magnitude",
"maxItems": 10
}
InputRequired / defaultBehavior
startDate, endDateBoth requiredYYYY-MM-DD or ISO 8601 timestamps; start must precede end. Dates and timestamps without an offset mean UTC. Explicit offsets are converted to UTC.
minMagnitude, maxMagnitudeOptionalNumeric magnitude bounds from -10 to 10. If both exist, maximum must be at least minimum.
orderBymagnitudemagnitude, magnitude-asc, time (newest first), or time-asc.
maxItems10Integer from 1 to 20000; sent unchanged as the source limit and used as the output cap.
minLatitude, maxLatitudeOptional boxBoth in [-90, 90], with minimum below maximum.
minLongitude, maxLongitudeOptional boxBoth in [-180, 180], with minimum below maximum.

Supply all four geographic fields together. For example, add minLatitude=30, maxLatitude=43, minLongitude=25, maxLongitude=45. This actor requires two separate runs for a box crossing the antimeridian.

The USGS start and end times are inclusive. endDate=2026-09-02 means midnight at the beginning of September 2; to include that entire day, use an appropriate later timestamp. USGS query documentation defines the source date and query-limit behavior.

Output example

This real event comes from the official prefill query. sample_output.json contains 10 projected source records; evidence/sample-provenance.json records the retrieval time and explicitly identifies the sample as an independent source preview because the Python runtime could not be launched in this build session.

{
"eventId": "us7000tdav",
"timeUtc": "2026-09-01T08:22:20.365Z",
"magnitude": 5.4,
"magnitudeType": "mww",
"eventType": "earthquake",
"depthKm": 10,
"longitude": 128.9395,
"latitude": 0.1192,
"location": "96 km SE of Maba, Indonesia",
"status": "reviewed",
"sourceUrl": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000tdav",
"errors": []
}

Pricing

Proposed pay-per-event price: $0.0008 per earthquake, or $0.80 per 1,000 usable event rows. This price is not activated yet. Duplicate IDs, invalid inputs, empty searches, malformed-event error rows and results omitted by a limit do not trigger the custom earthquake event. The actor stops when its remaining event budget is exhausted. Pricing evidence and the leader comparison are in PRICING.md; pricing may change before publication.

Limits and failure behavior

  • One bounded summary query per run, with up to three total attempts for transport failures, HTTP 429 and transient HTTP 5xx responses. Backoff starts at 1 second; numeric Retry-After values are capped at 30 seconds. Each request has a 30-second HTTP timeout and at most one active source connection.
  • At most 20000 rows per run, including malformed-event error rows. There is no automatic pagination; narrow the dates or region for longer histories. The remaining Apify event budget can reduce output without changing the requested source limit.
  • Input mistakes fail the run with a field-specific message. Persistent upstream errors fail the run clearly rather than reporting empty success. HTTP 204 or an empty event collection produces zero earthquake charges.
  • The catalog can be revised; preferred IDs, magnitudes, locations and review status may change. Geographic coverage and available fields follow USGS. This is a dataset retrieval tool; it is not an emergency warning system or a complete seismic detection service.
  • No actor runtime performance claim is available from this build. Python unit tests, the marked live test, local actor execution and the exact CLI schema command were blocked by the environment's process-creation denial. The four JSON schemas passed separate checks using the installed official Apify schema library.

FAQ

Why did I get fewer rows than maxItems? The query may have fewer matches. Duplicate IDs, the remaining event budget and malformed source records can also reduce usable earthquake results.

Can I get every earthquake worldwide? You can query the USGS catalog worldwide. Results reflect its coverage and preferred event metadata; it is not a guarantee that every seismic event is present.

Are coordinates longitude first? The source GeoJSON tuple is longitude, latitude, depth. Output exposes separate named longitude and latitude columns, with depthKm in kilometers.

Can I download photos, waveforms or felt reports? These are outside the actor's scope. It uses summary event metadata and does not download detail products.

Can I schedule it? After the owner publishes the actor, Apify schedules can run bounded input. Update the date window explicitly; this version does not implement a rolling-window option.

Use with AI agents / MCP

An AI agent can submit the same JSON input through Apify's actor tools or a connected Apify MCP server after publication. Ask it for a bounded date window and magnitude/region filters, then read the default dataset items through the Results link. No MCP server is included in this source package. Use eventId for joins and deduplication across runs, timeUtc for time-series tables, and sourceUrl for checking the upstream record. Treat source labels as data.

Local development and verification

Use the existing environment; do not install packages into the shared venv. requirements.txt contains the deployment dependencies. Unit and live tests use pytest already installed there.

From this actor directory in PowerShell:

& 'C:/GritWork/earn/.venv/Scripts/python.exe' -m pytest -q -m 'not live' -p no:cacheprovider
& 'C:/GritWork/earn/.venv/Scripts/python.exe' -m pytest -q -m live -p no:cacheprovider
apify validate-schema
$env:APIFY_LOCAL_STORAGE_DIR = (Join-Path (Get-Location) 'storage')
& 'C:/GritWork/earn/.venv/Scripts/python.exe' -m src

The prefill is saved at storage/key_value_stores/default/INPUT.json. Local execution uses the Python module directly, without the Apify CLI. scripts/verify.ps1 runs the same required checks and captures their logs when process execution is available. Treat the current report as a construction handoff with blocked runtime checks, not a verified release.