Where it covers
About 22,000 gauges reporting in Germany (federal waterways and North Rhine-Westphalia), France, England, Scotland, the Netherlands, Flanders, Luxembourg, Czechia, Ireland, Switzerland, Sweden, Finland, Canada and the USA, and in Catalonia, the Guadalquivir basin, Lombardy, Veneto, Emilia-Romagna and South Tyrol. Levels update as often as each country publishes them, from every 15 minutes to once a day. Sweden publishes discharge only.
Gauges near a point
curl "https://geo.runningcat.dev/v1/rivers?lon=6.869&lat=45.924&radiusKm=10&limit=5" \
-H "Authorization: Bearer YOUR_KEY"
{
"gauges": [
{ "id": "hubeau:V000201201", "name": "L'Arve à Chamonix-Mont-Blanc [Pont de l'Aiguille] - Station amont",
"river": "L'Arve", "lon": 6.86815, "lat": 45.9199, "distanceKm": 0.46,
"time": "2026-11-07T17:30:00.000Z", "levelCm": 13, "change24hCm": null,
"dischargeM3s": 2.85, "warningCm": null, "alarmCm": null, "state": null }
]
}
- levelCm
- Water level in cm above the gauge's own zero (in the Netherlands above NAP, in Switzerland above sea level), so compare it with the same gauge's history
- dischargeM3s
- Flow in m³/s, where the gauge measures it
- change24hCm
- How much the level changed over about a day
- state
normal,warningoralarmwhere the country publishes thresholds, otherwisenull
In a box, along a route, over time
GET /v1/rivers?bbox=west,south,east,northlists up to 1,000 gauges in a box of up to 16 square degrees, for a map layer.POST /v1/route/riverswith a GeoJSON route returns the gauges within 0.1 to 20 km of it, for paddling, rafting or a ride along a river.GET /v1/rivers/{id}/history?days=30returns the readings of one gauge for up to 30 days.
Why one API instead of a dozen
Every service has its own way to list stations, page through readings and name the river; some answer in millimetres or litres per second, some in local time without an offset. Here every gauge has the same fields, an id that names its source, and times in UTC, and the same key gives the weather, air quality and map data around it.
Price
Every request counts as one. The free plan gives 500 requests a day, also for commercial apps; Developer is $14.99 a month for 5,000 a day.
Credits: WSV PEGELONLINE (Germany, DL-DE Zero 2.0); LANUK North Rhine-Westphalia (DL-DE Zero 2.0); Hub'Eau / eaufrance (France, Licence Ouverte 2.0); Environment Agency (England) and SEPA (Scotland), containing public sector information licensed under the Open Government Licence v3.0; Rijkswaterstaat (Netherlands); Vlaamse Milieumaatschappij, waterinfo.be (Flanders); Administration de la gestion de l'eau (Luxembourg, CC0); FOEN / BAFU (Switzerland); SMHI (Sweden, CC BY 4.0); Syke, Finnish Environment Institute (Finland, CC BY 4.0); Environment and Climate Change Canada; U.S. Geological Survey (USA, public domain); Czech Hydrometeorological Institute (CC BY 4.0); Office of Public Works, Ireland, waterlevel.ie (CC BY 4.0); Agència Catalana de l'Aigua (Catalonia); Autonomous Province of Bolzano – South Tyrol (CC0); ARPA Lombardia (CC0); Arpae Emilia-Romagna (CC BY 4.0); ARPAV, Veneto (CC BY 4.0); Confederación Hidrográfica del Guadalquivir (SAIH) with gauge places from MITECO (CC BY 4.0).