---
name: usgs-earthquakes-ingestion
description: "How to get USGS Earthquake Hazards real-time feeds and event API data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load USGS M4.5+ earthquake events into pandas and Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/usgs-earthquakes
Provider: https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php
Checked against the provider's documentation: 2026-10-30

## Access
- No account or key. CSV and GeoJSON summary feeds are public downloads.

## Request
```bash
curl 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_week.csv'
```

## Format
CSV rows with event ID, origin and update timestamps, magnitude, place, coordinates, depth, status, alert fields and source URLs.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""USGS M4.5+ earthquakes from the past week -> pandas -> Parquet. No key."""
import io
import requests
import pandas as pd

URL = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_week.csv"
r = requests.get(URL, timeout=60)
r.raise_for_status()
df = pd.read_csv(io.StringIO(r.text))
df["time"] = pd.to_datetime(df["time"], utc=True)
df["updated"] = pd.to_datetime(df["updated"], utc=True)
df.to_parquet("usgs_earthquakes_4_5_week.parquet", index=False)
print(len(df), "earthquakes", df["time"].min().isoformat(), "to", df["time"].max().isoformat(),
      "maximum magnitude", df["mag"].max())
```
Run by us on 2026-10-30 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 183 earthquakes 2026-10-23T16:07:51.754000+00:00 to 2026-10-30T10:45:03.842000+00:00 maximum magnitude 6.9

## Limits
- Rate limit: Not stated.
- FDSN event API queries are limited to 20,000 events.
- Rolling summary feeds cover one hour, one day, seven days or 30 days.

## Quirks
- time is the event origin time; updated is the last event update. Store both because magnitude, location and status can change.
- The feed is a rolling view, not an archive. Use the FDSN event API for historical ranges.
- Empty feeds can produce a frame with headers but no rows; handle that before min/max calculations.

## Terms and attribution
- USGS-authored data and information are public-domain material. Some marked third-party media are excluded.
- USGS asks users to give proper credit.
- Terms page: https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits

## Sources
- https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php: "Updated every minute."
- https://earthquake.usgs.gov/fdsnws/event/1/: "The service limits queries to 20000, and any that exceed this limit will generate a HTTP response code "400 Bad Request"."
- https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits: "USGS-authored or produced data and information are considered to be in the U.S. Public Domain"
- https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits: "When using information from USGS information products, publications, or websites, we ask that proper credit be given."

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
