USGS Earthquakes 2025 dataset

The earthquakes of magnitude 4.5 and up that the US Geological Survey's own network reported in 2025, from the USGS earthquake catalogue. Each row says when and where one struck, its depth, its magnitude and the scale that magnitude was measured on, and the USGS's description of the place. The recipe's describe step recognises latitude and longitude as coordinates, so a dashboard can draw the earthquakes straight onto a map. The USGS revises events after the fact, so the recipe reads the catalogue as it stands on the day it runs: it kept 8,502 earthquakes on 26 October 2026.
Load it
These commands install arc, Meridian’s open-source Protocol runner, clone the open-analytics repository and run this Protocol, which writes build/earthquakes.parquet in open-analytics/examples/usgs-earthquakes-2025.
curl -fsSL https://install.meridian.online/arc | bash
git clone https://github.com/meridian-online/open-analytics
cd open-analytics/examples/usgs-earthquakes-2025 && arc runarc runs the Protocol’s SQL on DuckDB 2.x, which its installer puts in place when no DuckDB is on your PATH, saying what to add to PATH; the last step, which describes the Parquet, needs finetype 0.6.54 or later on your PATH.
Columns
| Name | Type | Description |
|---|---|---|
| time | datetime | When the earthquake struck, in UTC. |
| week | date | The Monday of the week it struck, in UTC. |
| latitude | number | Epicentre latitude, in decimal degrees. |
| longitude | number | Epicentre longitude, in decimal degrees. |
| depth | number | Depth of the event, in kilometres. |
| mag | number | Magnitude, on the scale named in magType. |
| magType | string | The USGS's code for the method or algorithm the magnitude was computed with, such as mb or mww. |
| magnitude_scale | string | magType grouped into the scale it belongs to: body wave (mb), moment (Mw), local (ML) or surface wave (Ms). A code that belongs to none of those, which a later run of the live catalogue can bring, is kept as the USGS's own code rather than guessed at. |
| place | string | The USGS's description of where it struck, relative to the nearest named place. |
Source and licence
Licence
- Public domain (U.S. federal government work). The USGS asks that it be credited as the source.
Sources
Meridian hosts none of this data: the Protocol downloads it, from the address its fetch step names, when you run it.
The steps
5 stepsduckdb >=1.2Every step runs in order. op: steps are typed, versioned operators; sql: steps are DuckDB models.
- 01fetch_earthquakesop: http_fetch@1
Fetch the USGS FDSN event service's CSV of every 2025 event of magnitude 4.5 and up. No sha256 pin, deliberately: the USGS revises events after the fact, so each run reads the catalogue as it stands that day.
producesbuild/earthquakes_2025.csvwithurl: https://earthquake.usgs.gov/fdsnws/event/1/query?format=csv&starttime=2025-01-01&endtime=2026-01-01&minmagnitude=4.5 out: build/earthquakes_2025.csv headers: User-Agent: Meridian Protocol (open-analytics demo; research@meridian.online) - 02raw_earthquakessql: models/01_raw_earthquakes.sql
Keep only events the USGS's own network reported (net = us) of type earthquake, in seven columns, with time as a UTC timestamp. Checks that every event is in 2025 at magnitude 4.5 or above, and that between 8,000 and 9,000 are kept.
readsbuild/earthquakes_2025.csvproducesraw_earthquakesmodelmodels/01_raw_earthquakes.sql - 03earthquakessql: models/02_earthquakes.sql
Add the week each earthquake struck and the scale its magnitude was measured on: the table a dashboard reads.
producesearthquakesmodelmodels/02_earthquakes.sql - 04export_earthquakesop: parquet_export@1
Write build/earthquakes.parquet, on your own disk. ORDER BY ALL makes the bytes reproducible for a given day's catalogue, not across days.
readsearthquakesproducesbuild/earthquakes.parquetwithinput: earthquakes dest: build/earthquakes.parquet compression: zstd order_by: ALL - 05describeop: datapackage_describe@1
Emit datapackage.json from the built Parquet: finetype types every column, and descriptor.overrides.json adds the curated title, licence, sources and per-field prose.
readsbuild/earthquakes.parquetdescriptor.overrides.jsonproducesdatapackage.jsonwithparquet: build/earthquakes.parquet overrides: descriptor.overrides.json out: datapackage.json