Bayern APIgkd.bayern.de ↗
Monitor groundwater levels and access historical time series data from Munich's official water monitoring stations to track water stress conditions across the city's drinking water supply regions. Get real-time station information and current water levels to stay informed about local water availability and supply status.
curl -X GET 'https://api.parse.bot/scraper/445866aa-285e-439c-a630-fbd99bfc607a/get_station_info?station_id=21947' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace gkd-bayern-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: MunichWater SDK — bounded, re-runnable; every call capped."""
from parse_apis.gkd_bayern_de_api import MunichWater, Period, StationNotFound
client = MunichWater()
# Fetch station metadata for Vagen/Mangfall (Mangfalltal supply region)
station = client.stations.get(station_id="21947")
print(station.station_name, station.supply_region, station.observation_period)
print(f" HHW={station.historical_max_level_m}, MW={station.historical_mean_level_m}, NNW={station.historical_min_level_m}")
# Get the most recent groundwater level
level = station.current_level()
print(level.station_name, level.groundwater_level_m, level.measurement_datetime)
# Iterate recent time series (last 12 months), capped at 3 measurements
for m in station.time_series(period=Period.RECENT, limit=3):
print(m.date, m.groundwater_level_m)
# Typed error handling: attempt to fetch an unknown station
try:
client.stations.get(station_id="99999")
except StationNotFound as e:
print(f"not found: {e.station_id}")
print("exercised: stations.get / station.current_level / station.time_series")
Retrieves station metadata including location, operator, aquifer type, ground elevation, and historical water level statistics (highest/mean/lowest ever recorded). One request per station.
| Param | Type | Description |
|---|---|---|
| station_idrequired | string | GKD Bayern station number (e.g. 21947, 25707, 25668). |
{
"type": "object",
"fields": {
"river": "string",
"aquifer": "string",
"district": "string",
"operator": "string",
"source_url": "string",
"station_id": "string",
"station_url": "string",
"municipality": "string",
"retrieved_at": "string — ISO 8601 timestamp",
"station_name": "string",
"supply_region": "string — Mangfalltal or Loisachtal",
"ground_elevation_m": "number — metres above sea level",
"observation_period": "string — date range",
"historical_max_level_m": "number — HHW in metres above sea level",
"historical_min_level_m": "number — NNW in metres above sea level",
"historical_mean_level_m": "number — MW in metres above sea level"
},
"sample": {
"data": {
"river": "inn",
"aquifer": "Quartär",
"district": "Rosenheim",
"operator": "Wasserwirtschaftsamt Rosenheim",
"source_url": "https://www.gkd.bayern.de/de/grundwasser/oberesstockwerk/inn/vagen-mangfall-r-35-21947",
"station_id": "21947",
"station_url": "https://www.gkd.bayern.de/de/grundwasser/oberesstockwerk/inn/vagen-mangfall-r-35-21947",
"municipality": "Feldkirchen-Westerham",
"retrieved_at": "2026-07-16T08:53:57.357462+00:00",
"station_name": "VAGEN/MANGFALL R 35",
"supply_region": "Mangfalltal",
"ground_elevation_m": 522.02,
"observation_period": "09.05.1978 bis 23.06.2026",
"historical_max_level_m": 521.54,
"historical_min_level_m": 519.14,
"historical_mean_level_m": 519.92
},
"status": "success"
}
}About the Bayern API
The Bayern API on Parse exposes 3 endpoints for the publicly available data on gkd.bayern.de. Calls return JSON over HTTPS and are billed per successful response.
Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.