River data
How to read USGS river data
USGS is the backbone for U.S. trout-water flow and temperature. We bind beats to real site IDs when we’ve confirmed them — and we say so when coverage is thin.
The three numbers that matter most
Water temperature
Thermal stress, feeding window, hatch proxy. USGS reports °C; we often show °F.
Discharge
Cubic feet per second — fishability, wading safety, blown-out vs skinny. Much more common than continuous temp.
Gage height (stage)
Feet — useful when the rating curve shifts; flood / unwadable flag (Wilson Creek 02140510 is stage-only).
Also useful where present: dissolved oxygen ~00300, turbidity ~63680. Instantaneous values are often ~15-minute and provisional; daily values give mean/min/max for trends.
Modern API note
Legacy WaterServices (waterservices.usgs.gov) is scheduled for decommission in Q1 2027. Build on the modern OGC APIs at api.waterdata.usgs.gov.
- Latest continuous → /ogcapi/v0/collections/latest-continuous
- Historical continuous → /continuous
- Daily → /daily
- Site metadata → /monitoring-locations
Example pattern: https://api.waterdata.usgs.gov/ogcapi/v0/collections/latest-continuous/items?monitoring_location_id=USGS-01491000¶meter_code=00060,00010&f=json
API key signup for more than a few queries/hour: api.waterdata.usgs.gov/signup.
Nearest ≠ correct
Snap to the river network (NHDPlus / NLDI), not the Euclidean nearest pin. Prefer same-mainstem up/downstream. Never auto-trust a tributary gage for a mainstem stretch.
Easy ways to get fooled: tributary vs mainstem, far upstream of a confluence, tailwater below a dam, diversions, braided channels, temp sensor placement, or no temp sensor at all.
Copy should read like: “Conditions from USGS XXXXX, N river-miles upstream on the same mainstem” — not a silent nearest pin. Example here: South Mills uses 03446000 as a nearby Mills system neighbor, not an on-water South Mills gage.
Grades A–D
- A — temp + flow on this water (Davidson 03441000, Jackson 02011800, Smith 02072000)
- B — nearby mainstem temp (South Mills → Mills 03446000 neighbor)
- C — flow only (Nantahala 03504000/03505550, Tuckasegee 03510577/03513000)
- D — air-to-water / ungaged (Mossy, Whitetop, Rapidan — TBD; never invent IDs)
Wilson Creek 02140510 is stage-only — weaker than Grade C flow-only; useful as a flood flag, not a feeding input.
Reading a conditions card
Water temp (00010)
—
Feeding / ethics
Discharge (00060)
—
Fishability
How close?
A–D
Why to trust it
v1 shows the shape and the bind. Live latest-continuous readouts come later — until then, cards are labeled sample / not live.
Coverage reality
Flow is far more common than continuous water temperature. Small headwater freestones often have zero realtime USGS. Launch rule: popular demand ∩ gage with 00060 ∩ ideally 00010. Modes: gaged beat (full score later) · flow-only (wider temp uncertainty) · ungaged (hatch calendar + weather only; low confidence).
Competitors already show gages — not hatch/time guidance. Differentiation is location + time judgment on top of Q/T, not replacing USGS.
Source: USGS & Realtime River Data Brief (2026-09-12). Official docs: USGS Water Data APIs; WaterServices decommission note; OGC API docs. Complement sources (NOAA NWPS, NRCS SNOTEL, state DWR, NorWeST) get labeled as non-live or forecast where relevant — founder check before product wiring.
TroutWindow