USGS NWIS River Streamflow & Fishing Conditions Scraper avatar

USGS NWIS River Streamflow & Fishing Conditions Scraper

Pricing

Pay per event

Go to Apify Store
USGS NWIS River Streamflow & Fishing Conditions Scraper

USGS NWIS River Streamflow & Fishing Conditions Scraper

Pulls real-time discharge, gage height, and water temperature from every active USGS stream gage in any US state. Filters by state and parameter. Returns one record per gage with site metadata, the latest measurement, and derived flow condition (low/normal/high).

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Pulls real-time discharge, gage height, and water temperature from every active USGS stream gage in any US state. Returns one record per gage/parameter with site metadata, the latest instantaneous measurement, and a derived flow condition (low / normal / high).

Built for anglers, fishing guides, outfitters, and app developers who need a programmatic answer to "is this river fishable today?"

What It Does

Calls the USGS Water Services instantaneous-values (IV) API — a completely open federal dataset, no API key required — and returns structured records for every active stream gage in the requested states.

Parameters collected:

  • 00060 — Discharge / streamflow (cubic feet per second)
  • 00065 — Gage height (feet)
  • 00010 — Water temperature (°C)

Flow condition derivation (for discharge only): based on USGS qualifier codes present in each measurement. > = exceeds upper reliable measurement range → high; < = below lower range → low; normal provisional/approved reads return blank (no extreme condition detected).

Input

FieldTypeDefaultDescription
stateCodesarray["CO"]Two-letter US state abbreviations (e.g. ["CO", "MT", "WY"]). Leave empty to scrape all 50 states.
parameterCodesarray["00060", "00065", "00010"]USGS parameter codes to collect.
maxItemsinteger10Maximum number of records to return. Leave empty for all records.

Example — Colorado discharge only:

{
"stateCodes": ["CO"],
"parameterCodes": ["00060"],
"maxItems": 100
}

Example — Full trout-fishing pack (all 50 states, all three parameters):

{
"stateCodes": [],
"parameterCodes": ["00060", "00065", "00010"]
}

Output

One record per gage/parameter combination.

FieldTypeDescription
site_nostringUSGS site identification number
site_namestringRiver or stream station name
state_codestringTwo-character FIPS state code (e.g. 08 for Colorado)
county_codestringFive-character FIPS county code
latitudestringDecimal latitude (WGS84)
longitudestringDecimal longitude (WGS84)
parameter_codestringUSGS parameter code (00060 / 00065 / 00010)
parameter_namestringHuman-readable parameter name (e.g. Streamflow, ft3/s)
measurement_datetimestringISO 8601 datetime of the latest measurement
valuestringMeasured value (numeric string, or NoData)
unitstringUnit of measurement (ft3/s / ft / deg C)
qualifiersstringComma-separated USGS qualifier codes (P=provisional, A=approved, e=estimated)
flow_conditionstringDerived condition for discharge: low / high / blank
source_urlstringUSGS NWIS link for this site and parameter
scraped_atstringISO 8601 UTC timestamp when this record was collected

Example record:

{
"site_no": "06752000",
"site_name": "CACHE LA POUDRE RIV AT CANYON MOUTH NR FT COLLINS, CO",
"state_code": "08",
"county_code": "08069",
"latitude": "40.67676",
"longitude": "-105.14241",
"parameter_code": "00060",
"parameter_name": "Streamflow, ft3/s",
"measurement_datetime": "2026-05-21T10:00:00.000-06:00",
"value": "312",
"unit": "ft3/s",
"qualifiers": "P",
"flow_condition": "",
"source_url": "https://waterdata.usgs.gov/nwis/uv?site_no=06752000&agency_cd=USGS&parameterCd=00060&period=P7D",
"scraped_at": "2026-05-21T16:15:03.000Z"
}

Use Cases

  • Fishing trip planning — query discharge and temperature for a specific state before heading out
  • River fishing apps — feed real-time gage data into a "fishability" score
  • Outfitter dashboards — monitor multiple rivers across a region simultaneously
  • Research / conservation — time-series analysis of flow conditions across gage networks
  • Alert systems — detect high-flow or low-flow conditions for float trip scheduling

Notes

  • Coverage: ~8,000-10,000+ active stream gages nationwide. Colorado alone has ~356 discharge gages.
  • Freshness: USGS IV data is typically updated every 15 minutes.
  • No API key required: USGS Water Services is a free federal open-data service.
  • Rate limits: USGS requests polite use. The actor uses a 200ms delay between state requests.
  • Full-country run: Scraping all 50 states with all three parameters returns ~50,000-80,000 records. Use maxItems to cap output for quick queries.