---
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."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab-jet.vercel.app/agent-suggestions

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.
