Discover/Bayern API
live

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.

This API takes change requests — .
Endpoint health
monitored
get_current_level
get_station_info
get_time_series
Checks pendingself-healing
Endpoints
3
Updated
3h ago
Try it
GKD Bayern station number (e.g. 21947, 25707, 25668).
api.parse.bot/scraper/445866aa-285e-439c-a630-fbd99bfc607a/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

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")
All endpoints · 3 totalmissing one? ·

Retrieves station metadata including location, operator, aquifer type, ground elevation, and historical water level statistics (highest/mean/lowest ever recorded). One request per station.

Input
ParamTypeDescription
station_idrequiredstringGKD Bayern station number (e.g. 21947, 25707, 25668).
Response
{
  "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.