How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
earthquakein Event types. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
USGS Earthquake Events Export & Monitor exports earthquakes from the official USGS ComCat catalog by time window, area (a rectangle, also across the date line, or a circle), magnitude, depth, event type, review status and PAGER alert. You get one clean row per event with time, coordinates, depth, magnitude and its type, place, status, tsunami flag, felt reports, intensity, PAGER alert and USGS links.
- Clean rows. One row per event:
eventId,time,updated,latitude,longitude,depthKm,magnitude,magType,place,status,tsunamiFlag,felt,cdi,mmi,alert,significanceand links. Values stay as USGS publishes them; depth is not rounded. - Any area. The whole world by default, a latitude/longitude rectangle (west greater than east means it crosses the date line, for example Fiji and Tonga), or a circle around a point.
- No silent cut. When more events match than
maxResults, the run says so and, when the source answers in time, how many events match in total. - Monitoring. With a
monitorKey, the Actor saves the events it saw in your account. The next run marks each eventnew,revised(withchangedFieldsandpreviousValues, for example a new magnitude or a reviewed status),deletedorunchanged, and by default writes only the changes. - Long windows. Windows of months or years work: the Actor first reads narrow slices next to the end you sort by, and splits a window in half when USGS is overloaded.
Good for
- A daily or weekly table of significant earthquakes for a newsroom, a blog or a dashboard.
- Earthquakes near your sites, cities or assets: a circle with
radiusKmor a rectangle. - History for research or teaching: years of M6+ events, the largest events in a region, or the oldest first.
- A feed of what changed since your last run: new events, magnitude or location revisions, reviewed status and deletions.
- Earthquake rows for a spreadsheet, BI tool, webhook or AI agent.
Not a good fit
- Real-time alerts or warnings. Use the official USGS ENS service, tsunami warning centers or local systems.
- Earthquake forecasts or damage estimates beyond the PAGER alert level that USGS publishes.
- A full copy of the catalog. A run returns up to 500 events. For bulk downloads, use the USGS catalog search directly.
- ShakeMap, moment tensor or other product files. Rows link to them with
detailUrl.
Who uses it
Risk and facility teams
Watch quakes near your sites.
Teachers and researchers
List big quakes of a decade for class or charts.
Newsletter and dashboard makers
Get a weekly list of M4.5+ quakes.
Price
Prices will be shown after release.
Questions
Is this an earthquake warning service?
No. It exports the USGS catalog. Follow local authorities for safety.
Why did a magnitude change?
The first value is automatic. Experts review it later and may change it.
Does the tsunami flag mean a tsunami happened?
No. It only means USGS links tsunami center information.
Do I need an API key?
No. The USGS service is public.
Where does the data come from?
From the USGS Earthquake Hazards Program: the ComCat catalog through the FDSN Event Web Service. Each run reads it live.
Does tsunamiFlag: true mean there was a tsunami?
No. It only means that USGS links tsunami center information for the event. Check official tsunami warning centers.
Does monitoring cost more?
No. Unchanged events are not written and not charged when onlyChanges is on.
Details
Step by step on Apify
- Open the Input tab. The form already has an example: the whole world, magnitude 4.5 and up, last 7 days, up to 200 events.
- Click Start.
- Open the Events view in the Output tab. Check
time,magnitude,place,depthKmandalert. - Change the area, magnitude or time window to your own. To get only changes next time, add a
monitorKeysuch asjapan-m5.
Use cases
| Task | Input | Key fields | Next step |
|---|---|---|---|
| Weekly world M4.5+ list | lastDays: 7, minMagnitude: 4.5 | time, magnitude, place, alert | Google Sheets, a newsletter, a dashboard |
| Earthquakes near a site | latitude, longitude, radiusKm | time, magnitude, depthKm, felt, mmi | Risk or facility monitoring |
| Changes since the last run | monitorKey on a schedule | changeType, changedFields, previousValues | Slack, email or a webhook |
| Largest events of a decade | startTime, sortBy: "largest" | magnitude, magType, place, tsunamiFlag | Research, teaching, charts |
| Pacific date-line region | minLongitude: 170, maxLongitude: -170 | latitude, longitude, place | Maps and GIS |
Tips for better results
- Use a circle around a point to watch one site.
- Near Fiji or Tonga? Set west larger than east to cross the date line.
- Use a monitor key to see when a magnitude or depth changes.
Limits and good to know
- Up to 500 events per run. When more match, the run reports
truncated: true, the total when USGS counts it in time, and a hint. USGS itself refuses lists of more than 20,000 events, so split very large exports into several runs by time - Time windows up to 3660 days (about 10 years), with
lastDaysor withstartTime/endTime. For older history, use several runs. Long windows are read in narrow slices first; in our tests 10-year windows finished in 18–45 seconds. The internal time budget is 270 seconds - If USGS times out or answers 5xx, a window of 12 hours or more is split in half and read again. The run then skips the total count
- A monitor baseline (the
monitorKeysnapshot or thepreviousDatasetIdrows) has a safety cap of 20,000 events. We tested baselines of up to 500 events - Deletions are checked only in monitoring and only for windows up to 31 days
- ComCat updates events after they happen: automatic solutions are revised, magnitudes change, events are merged (the preferred
eventIdcan change) or deleted. Small events outside the U.S. are often not in ComCat at all
Troubleshooting
| Symptom | Check | Action |
|---|---|---|
NO_RESULTS | RUN_SUMMARY.filters | Widen the time window or area, or lower minMagnitude. Check eventTypes and alertLevel. |
truncated: true | totalAtSource, warnings | Raise maxResults (up to 500), narrow the window or area, or raise minMagnitude. |
ERROR, USGS unavailable or timed out | RUN_SUMMARY.message | Run again later or use a shorter window. A failed run does not change your monitor snapshot. |
INVALID_INPUT | RUN_SUMMARY.message | Fix the field named in the message. |
An event appears as revised | changedFields, previousValues | USGS updated it, often magnitude, location or status after review. |
An event appears as new although you saw it before | allIds | USGS may have merged solutions and changed the preferred ID. |
| Warning about different filters | RUN_SUMMARY.warnings | You changed filters but kept the same monitorKey. Use one key per saved search. |
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"eventId": "us6000u1rh",
"allIds": ["usauto6000u1rh", "us6000u1rh"],
"time": "2026-10-12T11:28:43.398Z",
"updated": "2026-10-12T12:43:51.836Z",
"latitude": -8.873,
"longitude": 67.3909,
"depthKm": 10,
"magnitude": 5.4,
"magType": "mww",
"place": "Mid-Indian Ridge",
"eventType": "earthquake",
"status": "reviewed",
"tsunamiFlag": false,
"felt": null,
"cdi": null,
"mmi": 0,
"alert": "green",
"significance": 449,
"url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000u1rh",
"changeType": null,
"fetchedAt": "2026-10-12T13:14:24.199Z"
}Data fields (30)
| Field | Type | Meaning |
|---|---|---|
eventId | string | Preferred ComCat event ID, e.g. us6000u1n6. Can change when networks merge solutions; allIds keeps the others. |
allIds | array | Every ComCat ID of this event from contributing networks. Use it to deduplicate across runs. |
time | string | Origin time, ISO 8601 UTC. |
updated | string | When the event was last updated at the source, ISO 8601 UTC. |
latitude | number | Epicenter latitude, degrees. |
longitude | number | Epicenter longitude, degrees, always -180..180. |
depthKm | number | Hypocenter depth in kilometres (positive down). |
magnitude | number | Preferred magnitude; null for the rare events without one. |
magType | string | Magnitude type, e.g. mww, mb, ml, md. |
place | string | Nearby place description from the source, e.g. "85 km SE of Hachijo, Japan". |
title | string | Source title, e.g. "M 5.1 - 85 km SE of Hachijo, Japan". |
eventType | string | Event type, e.g. earthquake, quarry blast, explosion. |
status | string | automatic (preliminary), reviewed (checked by a seismologist) or deleted. |
tsunamiFlag | boolean | True when the event is in an oceanic region large enough that USGS links tsunami center information. Not a tsunami warning. |
felt | integer | Number of "Did You Feel It?" reports. |
cdi | number | Maximum reported intensity from "Did You Feel It?" (CDI). |
mmi | number | Maximum estimated instrumental intensity from ShakeMap (MMI). |
alert | string | PAGER estimated-impact alert level; null when no PAGER estimate exists. |
significance | integer | USGS significance score (0–1000+), combining magnitude, felt reports and impact. |
network | string | Network that contributed the preferred solution, e.g. us, ci, ak. |
sources | array | Networks that contributed information. |
stationCount | integer | Number of seismic stations used to locate the event. |
azimuthalGapDeg | number | Largest azimuthal gap between stations, degrees; smaller means a better-constrained location. |
url | string | USGS event page. |
detailUrl | string | USGS GeoJSON detail feed for this event (products such as ShakeMap and moment tensor). |
changeType | string | Change since the baseline: initial (first monitored run), new, revised, deleted or unchanged. null in a plain export without monitorKey/previousDatasetId. |
changedFields | array | For revised or deleted events: which tracked fields changed (eventId, time, latitude, longitude, depthKm, magnitude, magType, place, eventType, status, tsunamiFlag, felt, cdi, mmi, alert). |
previousValues | object | For revised or deleted events: previous value of each changed field. |
provider | string | Data source. |
fetchedAt | string | When this run read the source, ISO 8601 UTC. |
Input settings (22)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Last N days | lastDays | integer | 7 |
| Start time (UTC) | startTime | string | |
| End time (UTC) | endTime | string | |
| Minimum magnitude | minMagnitude | number | 4.5 |
| Maximum magnitude | maxMagnitude | number | |
| Minimum depth (km) | minDepthKm | number | |
| Maximum depth (km) | maxDepthKm | number | |
| Event types | eventTypes | array | ["earthquake"] |
| PAGER alert level | alertLevel | string | "any" |
| Review status | reviewStatus | string | "all" |
| Rectangle: min latitude | minLatitude | number | |
| Rectangle: max latitude | maxLatitude | number | |
| Rectangle: min longitude (west) | minLongitude | number | |
| Rectangle: max longitude (east) | maxLongitude | number | |
| Circle: center latitude | latitude | number | |
| Circle: center longitude | longitude | number | |
| Circle: radius (km) | radiusKm | number | |
| Sort by | sortBy | string | "newest" |
| Max results | maxResults | integer | 200 |
| Monitor key | monitorKey | string | |
| Previous dataset ID | previousDatasetId | string | |
| Only changes | onlyChanges | boolean | true |
