Kostenlose REST-API
Cyanoware API
Satellitenbasierte WasserqualitĂ€tsdaten fĂŒr ĂŒber 1.892 Badeseen â kostenlos, kein API-Key erforderlich.
Kein API-KeySentinel-2 SatellitendatenWöchentlich aktualisiertDauerhaft kostenlos
Basis-URL
https://cyanoware-backend-production.up.railway.appBadeseen
3 Endpunkte
GET
/api/v1/bathing-lakes/statusAlle Seen â Status
Gibt alle deutschen EU-Badeseen mit aktuellem CHL-Wert, WHO-Warnstufe und Trophiestatus zurĂŒck. Daten werden wöchentlich per Sentinel-2 Satellit aktualisiert.
Kein API-Key erforderlich
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| min_lat | float | Minimale Breitengrad-Filtergrenze |
| max_lat | float | Maximale Breitengrad-Filtergrenze |
| min_lon | float | Minimale LĂ€ngengrad-Filtergrenze |
| max_lon | float | Maximale LĂ€ngengrad-Filtergrenze |
| risk | string | Filter: low | medium | high |
Antwortfelder
| Feld | Typ |
|---|---|
| id | string |
| name | string |
| lat / lon | float |
| chl | float | null |
| who_level | int | null |
| cell_density_cells_ml | float | null |
| risk | string |
| color | string |
| measured_at | ISO 8601 |
Beispiel-Antwort
{
"generated_at": "2026-08-18T06:00:00Z",
"total_lakes": 1892,
"lakes_with_data": 1784,
"lakes": [
{
"id": "DEBB_PR_0123",
"name": "MĂŒggelsee",
"lat": 52.44,
"lon": 13.65,
"chl": 18.5,
"who_level": 2,
"risk": "medium",
"color": "#f59e0b",
"trophic": "eutrophic",
"cell_density_cells_ml": 24000,
"measured_at": "2026-08-12T00:00:00Z"
}
]
}GET
/api/v1/bathing-lakes/history/{lake_id}See-Verlauf
Gibt den historischen CHL-Zeitreihenverlauf fĂŒr einen einzelnen See zurĂŒck. NĂŒtzlich fĂŒr Trendanalysen und Charts.
Kein API-Key erforderlich
Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| lake_id | string | See-ID, z.B. DEBB_PR_0123 |
| limit | integer | Maximale Anzahl EintrÀge (Standard: 104) |
Antwortfelder
| Feld | Typ |
|---|---|
| lake_id | string |
| history[].date | ISO 8601 |
| history[].chl | float | null |
| history[].who_level | int | null |
| history[].data_type | string |
Beispiel-Antwort
{
"lake_id": "DEBB_PR_0123",
"name": "MĂŒggelsee",
"history": [
{
"date": "2026-08-12",
"chl": 18.5,
"who_level": 2,
"cell_density_cells_ml": 24000,
"data_type": "satellite"
},
{
"date": "2026-08-05",
"chl": 15.2,
"who_level": 1,
"cell_density_cells_ml": 12000,
"data_type": "satellite"
},
{
"date": "2026-07-29",
"chl": 21,
"who_level": 2,
"cell_density_cells_ml": 31000,
"data_type": "ai_forecast"
}
]
}GET
/api/v1/bathing-lakes/geojsonGeoJSON Karte
Gibt alle Seen als GeoJSON FeatureCollection zurĂŒck â direkt verwendbar in Mapbox, Leaflet, MapLibre, QGIS oder jeder anderen kartenfĂ€higen Applikation.
Kein API-Key erforderlich
Antwortfelder
| Feld | Typ |
|---|---|
| type | string |
| features[].geometry | GeoJSON Point |
| features[].properties | object |
Beispiel-Antwort
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
13.65,
52.44
]
},
"properties": {
"id": "DEBB_PR_0123",
"name": "MĂŒggelsee",
"chl": 18.5,
"who_level": 2,
"color": "#f59e0b"
}
}
]
}Code-Beispiele
Alle Endpunkte sind ohne API-Key zugÀnglich. Direkt kopieren und loslegen.
JavaScript / TypeScript
const res = await fetch('https://cyanoware-backend-production.up.railway.app/api/v1/bathing-lakes/status')
const data = await res.json()
console.log(data.lakes)Python
import requests
res = requests.get('https://cyanoware-backend-production.up.railway.app/api/v1/bathing-lakes/status')
lakes = res.json()['lakes']
print(f"{len(lakes)} lakes loaded")MapLibre / Mapbox â Heatmap Layer
map.addSource('cyanoware-tiles', {
type: 'raster',
tiles: ['https://cyanoware-backend-production.up.railway.app/api/v1/tiles/{z}/{x}/{y}.png'],
tileSize: 256
})
map.addLayer({ id: 'chl-heatmap', type: 'raster', source: 'cyanoware-tiles' })Daten basieren auf Copernicus Sentinel-2 MSI · WHO Recreational Water Guidelines (2003) · Wöchentliche Aktualisierung