Public API

Build with live lake temperature data.

Use the Starnberger See API to enhance your app, website, dashboard, or local product with current water temperature measurements and predictions.

Designed for products

The API returns simple JSON over HTTPS, so it works well for mobile apps, websites, server-side integrations, displays, and automation tools.

No authentication

Endpoints are public and available without API keys. Please cache responsibly and keep request volume reasonable for user-facing integrations.

Where it fits

Practical data for products around the lake.

Lake condition widgets

Tourism, hotel, and event websites

Bathing, sailing, rowing, and SUP apps

Local dashboards and smart-home displays

API endpoints

All responses use JSON. Temperatures are °C.

Offsetless water-measurement and forecast timestamps are Germany local time (Europe/Berlin), matching the NID Bayern source data.

Latest water temperature

Returns the newest measured water temperature for Starnberger See. datetime is Germany local time (Europe/Berlin), matching the NID Bayern source table.

GET
/api/v1/latest

Request

curl https://starnberger.app/api/v1/latest

Response

{
  "temperature": 18.7,
  "datetime": "2026-04-29T10:15:00"
}

Recent measurements

Returns the latest measurements in chronological order. Use limit to choose up to 128 entries. datetime is Germany local time (Europe/Berlin).

GET
/api/v1/entries?limit=24

Request

curl https://starnberger.app/api/v1/entries?limit=24

Response

[
  {
    "temperature": 18.4,
    "datetime": "2026-04-29T08:15:00"
  },
  {
    "temperature": 18.7,
    "datetime": "2026-04-29T10:15:00"
  }
]

Water temperature prediction

Returns the next 12 predicted lake-temperature hours with 50 and 90 percent prediction intervals. base_time and forecast.time are Europe/Berlin wall-clock timestamps without an offset.

GET
/api/v1/forecast

Request

curl https://starnberger.app/api/v1/forecast

Response

{
	  "base_time": "2026-05-31T11:00:00",
  "lake_temp_now": 18.4,
  "generated_at": "2026-05-31T10:38:44Z",
  "forecast": [
    {
      "h": 1,
      "time": "2026-05-31T12:00:00",
      "temp": 18.7,
      "p5": 18.4,
      "p95": 19.0,
      "p25": 18.6,
      "p75": 18.8
    }
  ],
  "mean_skill_pct": 36.0,
	  "model": "LightGBM (L1 central + CQR quantiles) on temperature deltas"
}

Integration notes

The API is intentionally small and stable. Use the OpenAPI file for machine-readable schema details, and handle occasional upstream data gaps gracefully.

Query parameters

limit on /api/v1/entries defaults to 24 when omitted and must otherwise be a positive integer up to 128.

Errors

Error responses use { "error": "Message" } with appropriate HTTP status codes such as 400, 404, 429, or 500.

Caching and CORS

API responses include public CORS headers and short edge cache headers. Clients should still cache locally where practical.

Rate limits

Endpoints return standard RateLimit headers. Excessive traffic receives a 429 response.

JavaScript example

const response = await fetch('https://starnberger.app/api/v1/latest');
const latest = await response.json();