Find your source
A curated catalog of datasets you can fetch today, each with its formats, selection rules, and required inputs stated up front.
Browse datasetsOPEN DATA · PYTHON SDK + CLI
usdata is for anyone who puts federal data, from NOAA weather to EPA air quality, into a paper, a model, or a report and has to show where every number came from. One command finds the dataset, one fetches the exact source file, one opens it, and a small manifest lets anyone repeat the download and prove the bytes match.
python -m pip install "usdata[pandas]"
usdata search precipitation --location Oklahoma
usdata fetch noaa:ghcn-daily -p stations=USW00013967 --start 2024-05-06 --end 2024-05-07 --vars PRCP,TMAX
usdata pull dataset.yaml && usdata verify dataset.yaml
ONE RESULT, END TO END
Three fetches: six-minute water levels and tide predictions for one NOAA gauge, and the hurricane's best track. Subtracting the predictions from the observations isolates the surge.
Every input is pinned. The notebook ends by checking the cached bytes against the lockfile, restoring from it, and citing each source.
noaa:coops-water-levels
Bytes: 28075; cache hit: False
Checksum: sha256:431fade50c78a7f1ea1f4bf27f40a54fca8809d723d26eb5b4bd7c98623057b2
$ usdata verify dataset.yaml
all assets match dataset.lock.json
Open the storm-surge study
A curated catalog of datasets you can fetch today, each with its formats, selection rules, and required inputs stated up front.
Browse datasetsDownload the source files unchanged, with a provenance sidecar beside each one. Optional readers open CSV, radar, NetCDF, and GRIB2 into pandas or xarray.
Follow the guideA manifest names the query; a lockfile pins the bytes. Restore on another machine, and find out when an agency quietly revises a file.
Use a manifestSTUDIES
Each study is a notebook that ran against the live services, with its outputs, plots, and exact inputs kept. Every dataset also has its own walkthrough on its page.
Alpha. Releases are tested and lockfiles are stable, but the Python API and CLI can change between minor versions. The documentation describes the current source checkout and marks anything not yet on PyPI as Unreleased.