PEGELONLINE Water Levels Scraper
Pricing
from $7.50 / 1,000 results
PEGELONLINE Water Levels Scraper
Pull live water levels from the WSV PEGELONLINE gauge network across Germany. Each record carries the station name, water body, current level in centimeters, measurement timestamp, gauge zero datum, and coordinates. Ideal for flood monitoring, hydrology research, and shipping logistics.
Pricing
from $7.50 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share

🌊 PEGELONLINE Water Levels Scraper
🚀 Export Germany's live river gauge readings in one run. Pull current water levels from the full WSV PEGELONLINE network of 700+ active stations.
🕒 Last updated: 2026-06-08 · 📊 Up to 16 fields per record · live measurements · national coverage
Turn the official WSV PEGELONLINE service into clean, structured records you can drop into a flood dashboard, a hydrology model, or a shipping planner. Every record is one gauge station with its current water level, the water body it sits on, when the reading was taken, the gauge zero datum, and exact coordinates.
Coverage is the live German federal waterway gauge network as PEGELONLINE publishes it: stations on the Rhein, Elbe, Donau, Weser, Aller, and many more rivers, canals, and tidal reaches, each reporting its latest water level in centimeters. The Actor keeps only stations that actually publish a water-level reading, so you never get empty rows for sensors that measure other things.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Flood and emergency response teams | Track rising levels across rivers in one pass |
| Hydrologists and researchers | Snapshot the national gauge network on a schedule |
| Inland shipping and logistics planners | Watch fairway depths on key waterways |
| Civic and environmental developers | Power maps, alerts, and open-data apps |
📋 What the PEGELONLINE Water Levels Scraper does
This Actor calls the public WSV PEGELONLINE REST service and returns one clean record per gauge station that reports a water level:
- Station identity — name, UUID, official station number, operating agency, and river kilometer.
- Location — water body name plus latitude and longitude.
- Current reading — water level value, unit, the exact measurement timestamp, and trend states.
- Reference datum — gauge zero value, its unit, and the date it became valid.
You can filter by station name or by water body, control how many records come back, and every record carries a scrapedAt timestamp.
🎬 Full Demo (🚧 Coming soon)
⚙️ Input
| Field | Type | Description |
|---|---|---|
station | string | Optional. Keep only stations whose name contains this text, case-insensitive. For example Celle. Leave empty for all stations. |
water | string | Optional. Keep only stations on a water body whose name contains this text, case-insensitive. For example RHEIN or ELBE. Leave empty for all water bodies. |
maxItems | integer | How many records to return. Free plan is capped at 10. |
Example 1 — every gauge on the Rhein
{"water": "RHEIN","maxItems": 100}
Example 2 — a single named station
{"station": "DRESDEN","maxItems": 5}
⚠️ Good to Know: Station and water body names come from PEGELONLINE in German and may include letters with umlauts (for example
KÖLN). Filters use a plain text match, so type the name as the source spells it. Leave both filters empty to pull the entire active network.
📊 Output
Each record looks like this:
| Field | Description |
|---|---|
📌 stationName | Full station name |
🆔 uuid | PEGELONLINE station UUID |
🔢 number | Official station number |
🌊 waterBody | River, canal, or waterway name |
🏛 agency | Operating agency |
📍 km | River kilometer of the station |
🧭 latitude | Station latitude |
🧭 longitude | Station longitude |
📏 waterLevel | Current water level value |
📐 unit | Level unit (usually cm) |
📅 measuredAt | Timestamp of the reading |
📈 trendMnwMhw | State versus mean low/high water |
📈 trendNswHsw | State versus lowest/highest navigable water |
🪧 gaugeZero | Gauge zero datum value |
📐 gaugeZeroUnit | Datum reference unit |
🗓 gaugeZeroValidFrom | Date the datum became valid |
🕒 scrapedAt | Collection timestamp |
❌ error | Null on success |
Real sample — Konstanz
{"stationName": "KONSTANZ-RHEIN","uuid": "e020e651-e422-46d3-ae28-34887c5a4a8e","number": "3329","waterBody": "RHEIN","agency": "REGIERUNGSPRÄSIDIUM FREIBURG","km": 0.5,"latitude": 47.667889,"longitude": 9.172858,"waterLevel": 315,"unit": "cm","measuredAt": "2026-06-08T23:45:00+02:00","trendMnwMhw": "unknown","trendNswHsw": "unknown","gaugeZero": null,"gaugeZeroUnit": null,"gaugeZeroValidFrom": null,"scrapedAt": "2026-06-08T22:08:01.708Z","error": null}
Real sample — Basel
{"stationName": "BASEL-RHEINHALLE","uuid": "94f6eff1-4f3f-4850-82e0-a086198e9ffd","number": "2310010","waterBody": "RHEIN","agency": "BUNDESAMT FÜR UMWELT CH","km": 164.3,"latitude": 47.559486,"longitude": 7.616666,"waterLevel": 547,"unit": "cm","measuredAt": "2026-06-08T23:50:00+02:00","trendMnwMhw": "unknown","trendNswHsw": "normal","gaugeZero": 240,"gaugeZeroUnit": "mü.M.","gaugeZeroValidFrom": "2010-02-01","scrapedAt": "2026-06-08T22:08:01.764Z","error": null}
Real sample — Rheinweiler
{"stationName": "RHEINWEILER","uuid": "06b978dd-8c4d-48ac-a0c8-2c16681ed281","number": "23300130","waterBody": "RHEIN","agency": "STANDORT FREIBURG","km": 186.2,"latitude": 47.711059,"longitude": 7.529275,"waterLevel": 224,"unit": "cm","measuredAt": "2026-06-09T00:00:00+02:00","trendMnwMhw": "normal","trendNswHsw": "unknown","gaugeZero": 217.291,"gaugeZeroUnit": "m. ü. NHN","gaugeZeroValidFrom": "2018-11-01","scrapedAt": "2026-06-08T22:08:01.790Z","error": null}
✨ Why choose this Actor
- One clean record per station, ready for a database or a map.
- Only stations with a real water-level reading are returned, so no empty rows.
- Coordinates included on every record for instant geo plotting.
- Gauge zero datum included where the source provides it, for absolute elevation work.
- No account, no key, and no login required.
📈 How it compares to alternatives
| Approach | Effort | Structured fields | Coordinates included | Maintenance |
|---|---|---|---|---|
| This Actor | One run | Yes | Yes | None on your side |
| Reading the PEGELONLINE web map by hand | Hours | Inconsistent | Manual | Constant |
| Writing your own API client | Days | Depends | Manual | You own the upkeep |
🚀 How to use
- Create a free Apify account using this sign-up link.
- Open the PEGELONLINE Water Levels Scraper.
- Optionally set a
stationorwaterfilter to narrow the network. - Set
maxItemsto the number of records you want. - Click Start and grab your results when the run finishes.
💼 Business use cases
Flood and emergency response
| Goal | How this helps |
|---|---|
| Spot rising rivers early | Pull current levels across a basin in one run |
| Brief field teams | Share station name, level, and coordinates |
Inland shipping and logistics
| Goal | How this helps |
|---|---|
| Plan barge routes | Watch levels on the Rhein, Elbe, and key canals |
| Anticipate draft limits | Track gauge readings against gauge zero |
Research and modeling
| Goal | How this helps |
|---|---|
| Build a hydrology dataset | Snapshot the national network on a schedule |
| Calibrate flow models | Combine level, datum, and coordinates |
Civic and environmental apps
| Goal | How this helps |
|---|---|
| Power a public level map | Feed it station coordinates and readings |
| Send alert notifications | Trigger on a level threshold per station |
🔌 Automating PEGELONLINE Water Levels Scraper
Connect runs to the tools you already use:
- Make and Zapier to trigger runs and route records into sheets or databases.
- Slack to post an alert when a run finishes.
- Airbyte to load results into a warehouse.
- GitHub Actions to schedule periodic snapshots.
- Google Drive to archive each run's output.
🌟 Beyond business use cases
- Research: study how water levels move across a basin over time.
- Personal: watch the river near your home before a paddling trip.
- Non-profit: power a community flood-awareness resource.
- Experimentation: prototype a hydrology app without writing a scraper.
🤖 Ask an AI assistant
Paste your results into ChatGPT, Claude, Perplexity, or Microsoft Copilot and ask it to rank stations by level, group them by water body, or flag readings above a threshold.
❓ Frequently Asked Questions
Do I need a PEGELONLINE or WSV account? No. The Actor reads the public PEGELONLINE REST service, which needs no login.
Do I need an API key? No key is required.
What does each record represent? One gauge station and its most recent water-level reading.
Which stations are included? Only stations that publish a water-level (W) timeseries with a current reading. Stations that measure only other things are skipped.
What unit is the water level in?
Most stations report in centimeters. The exact unit is in the unit field.
What is gauge zero?
It is the reference elevation the gauge measures from. The value and its reference unit are in gaugeZero and gaugeZeroUnit. Some stations do not publish it, so those fields can be null.
How do I filter by river?
Use the water filter, for example RHEIN or ELBE. Names are in German as PEGELONLINE spells them.
Why did my station filter return nothing?
The match is literal. If the station name uses an umlaut, such as KÖLN, type it exactly as the source does, or leave the filter empty and browse the full list.
How fresh is the data? Each run pulls live from PEGELONLINE, so it reflects the latest published readings at run time.
Can I schedule this? Yes. Use Apify Schedules to snapshot the network on any cadence.
🔌 Integrate with any app
Results are available through the Apify API, so you can pull them into any app, database, or workflow you already run.
🔗 Recommended Actors
- Have I Been Pwned Breaches Catalog Scraper
- More reference and open-data Actors in the ParseForge collection
💡 Pro Tip: browse the complete ParseForge collection.
🆘 Need Help? Open our contact form
⚠️ Disclaimer: independent tool, not affiliated with WSV, GDWS, or PEGELONLINE. Only publicly available data is collected.