USGS NWIS River Streamflow & Fishing Conditions Scraper
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
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
| Field | Type | Default | Description |
|---|---|---|---|
stateCodes | array | ["CO"] | Two-letter US state abbreviations (e.g. ["CO", "MT", "WY"]). Leave empty to scrape all 50 states. |
parameterCodes | array | ["00060", "00065", "00010"] | USGS parameter codes to collect. |
maxItems | integer | 10 | Maximum 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.
| Field | Type | Description |
|---|---|---|
site_no | string | USGS site identification number |
site_name | string | River or stream station name |
state_code | string | Two-character FIPS state code (e.g. 08 for Colorado) |
county_code | string | Five-character FIPS county code |
latitude | string | Decimal latitude (WGS84) |
longitude | string | Decimal longitude (WGS84) |
parameter_code | string | USGS parameter code (00060 / 00065 / 00010) |
parameter_name | string | Human-readable parameter name (e.g. Streamflow, ft3/s) |
measurement_datetime | string | ISO 8601 datetime of the latest measurement |
value | string | Measured value (numeric string, or NoData) |
unit | string | Unit of measurement (ft3/s / ft / deg C) |
qualifiers | string | Comma-separated USGS qualifier codes (P=provisional, A=approved, e=estimated) |
flow_condition | string | Derived condition for discharge: low / high / blank |
source_url | string | USGS NWIS link for this site and parameter |
scraped_at | string | ISO 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¶meterCd=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
maxItemsto cap output for quick queries.