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

00010

Water temperature

Thermal stress, feeding window, hatch proxy. USGS reports °C; we often show °F.

00060

Discharge

Cubic feet per second — fishability, wading safety, blown-out vs skinny. Much more common than continuous temp.

00065

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&parameter_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

Example layout — not live

Beat name · USGS site ID

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.

See gage binds on beats Why windows