German Weather Data API (DWD) – Hourly Observations & Forecast avatar

German Weather Data API (DWD) – Hourly Observations & Forecast

Pricing

$1.00 / 1,000 locations

Go to Apify Store
German Weather Data API (DWD) – Hourly Observations & Forecast

German Weather Data API (DWD) – Hourly Observations & Forecast

Hourly weather observations and forecasts for any place in Germany from Deutscher Wetterdienst (DWD) open data via Bright Sky. Temperature, rain, wind, gusts, clouds, sunshine, humidity, pressure as flat JSON rows. 50 big cities and postal codes built in. $1 per 1,000 locations.

Pricing

$1.00 / 1,000 locations

Rating

0.0

(0)

Developer

Fast Data

Fast Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Security

Limited permissions

Share

German Weather Data (DWD Open Data) – hourly observations and forecasts as JSON

Get hourly weather for any place in Germany from the official open data of the Deutscher Wetterdienst (DWD), delivered through the free Bright Sky JSON API. Past hours come from DWD weather stations, future hours from the DWD MOSMIX forecast – all in one flat table, one row per location and hour.

No API key, no login, no scraping. Just give city names, postal codes or coordinates.

What you get

For each location and hour: temperature, precipitation, wind speed and gusts, cloud cover, sunshine minutes, relative humidity, pressure, a weather condition (dry, rain, snow, …), the nearest DWD station with its distance, and an isForecast flag that separates measured values from forecast values.

  • Hourly mode – a date range (default: today + 2 days), mixing observations and forecast. Historical data back to 2010 is available.
  • Current mode – one row per location with the latest station observation.

Who it is for

  • Shops and retail – demand forecasting (ice cream, umbrellas, garden, BBQ, fashion) with weather as a feature.
  • Delivery and logistics – plan routes and staffing around rain, storms and frost.
  • Energy – solar (sunshine, clouds) and wind input for load and yield models.
  • Events and hospitality – outdoor events, beer gardens, construction sites.
  • AI agents and automations – simple, flat JSON that LLMs and n8n/Make/Zapier flows can use directly.

Why this actor

  • Official DWD data, not scraped weather websites.
  • Flat rows with clear units in the field names (temperatureC, windSpeedKmh, precipitationMm) – no nested JSON to unpack.
  • Built-in lookup for the 50 largest German cities (German and English names, e.g. München/Munich, Köln/Cologne) and their postal codes; any other place works with lat/lon.
  • Cheap and fast: a typical run finishes in a few seconds, $0.001 per location, no start fee. Errors are free.

Input

{
"locations": [
"Berlin",
"München",
"50667",
{ "name": "Shop Hamburg-Altona", "lat": 53.55, "lon": 9.93 }
],
"mode": "hourly",
"dateFrom": "2026-11-06",
"dateTo": "2026-11-08",
"maxHoursPerLocation": 48
}
FieldDescription
locationsCity names (50 largest German cities), 5-digit postal codes of those cities, "lat,lon" strings or {name, lat, lon} objects. Unknown cities produce a free error row.
modehourly (default) or current.
dateFrom / dateToHourly mode only, YYYY-MM-DD. Default: today until today + 2 days. Forecasts reach about 10 days ahead.
maxHoursPerLocationCap on hourly rows per location (default 72).

Postal codes are resolved at city level (the city's centre coordinates), not to the exact street.

Output

Real rows from a test run (Berlin, München, 6 Nov 2026):

[
{
"location": "Berlin", "lat": 52.52, "lon": 13.405, "mode": "hourly",
"stationName": "BERLIN-TEMPELHOF", "distanceKm": 5.6,
"timestamp": "2026-11-06T14:00:00+01:00",
"temperatureC": 5.3, "precipitationMm": 0, "windSpeedKmh": 16.9, "windGustKmh": 40,
"cloudCoverPct": 100, "sunshineMin": 0, "relativeHumidityPct": 88, "pressureHpa": 1030.1,
"condition": "dry", "isForecast": false, "status": "ok", "error": null
},
{
"location": "München", "lat": 48.137, "lon": 11.575, "mode": "hourly",
"stationName": "MUENCHEN STADT", "distanceKm": 5,
"timestamp": "2026-11-06T21:00:00+01:00",
"temperatureC": 3.5, "precipitationMm": 0, "windSpeedKmh": 5.5, "windGustKmh": 11.1,
"cloudCoverPct": 100, "sunshineMin": 0, "relativeHumidityPct": null, "pressureHpa": 1024.6,
"condition": "dry", "isForecast": true, "status": "ok", "error": null
},
{
"location": "Atlantis", "lat": null, "lon": null, "mode": "hourly", "status": "error",
"error": "Unknown city; built-in lookup covers the 50 largest German cities - pass lat/lon instead"
}
]

Some values can be null when a station or the forecast does not provide them (e.g. humidity in some forecast hours). Units: °C, mm, km/h, %, minutes, hPa; timestamps in Europe/Berlin time.

Pricing

$0.001 per location with weather data returned (all of its hourly rows included) – $1 per 1,000 locations. Unknown locations and failed requests are not charged. No start fee.

Use via API, n8n and MCP

API (run synchronously and get rows back):

curl -X POST "https://api.apify.com/v2/acts/fast_data_asap~german-weather-dwd-open-data/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locations": ["Hamburg", "Köln"], "mode": "current"}'

n8n / Make / Zapier: use the Apify node/app, choose this actor and pass the same JSON input.

MCP (Claude, Cursor, other AI agents): add the server https://mcp.apify.com?tools=fast_data_asap/german-weather-dwd-open-data and ask, for example, “Will it rain in Munich tomorrow afternoon?”.

Data source and credits

  • Weather data: Deutscher Wetterdienst (DWD), DWD Open Data. Source: Deutscher Wetterdienst. DWD provides its open data free of charge; reuse, including commercial use, requires naming the source. Check the current terms on opendata.dwd.de and credit “Deutscher Wetterdienst” when you publish the data.
  • API: Bright Sky by Jakob de Maeyer – a free, open-source JSON API for DWD open data. Please be considerate with request volume.

This actor is not affiliated with DWD or Bright Sky. Forecasts are model outputs and may be wrong; do not use them for safety-critical decisions.