Bright Sky (DWD) API
Free Bright Sky API with no key: current weather, hourly forecasts and historical records from Germany's national weather service, back to 2010. Tested.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the Bright Sky (DWD) API?
Bright Sky is a free, key-free JSON API that exposes open weather data from Deutscher Wetterdienst, Germany's national meteorological service, covering current conditions, forecasts and historical records back to 2010.
DWD publishes excellent open data but in awkward formats — FTP archives and specialist encodings. Bright Sky wraps all of that in a clean JSON API, which makes German weather data genuinely usable without writing a parser.
Historical coverage is the standout. Records go back to 2010 with hourly resolution from real weather stations, which is unusual for a free API and valuable for anything involving trend analysis rather than just a forecast.
Quick facts
- Base URL
https://api.brightsky.dev- Authentication
- No API key required.
- Rate limit
- No published hard limit; the maintainers ask for reasonable use.
- Pricing
- Free and open source. DWD data is open under its own licence, attribution required.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Bright Sky (DWD) API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch current weather for a location
GET https://api.brightsky.dev/current_weather?lat=52.52&lon=13.41
curl 'https://api.brightsky.dev/current_weather?lat=52.52&lon=13.41'const res = await fetch("https://api.brightsky.dev/current_weather?lat=52.52&lon=13.41");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.brightsky.dev/current_weather?lat=52.52&lon=13.41", timeout=20)
res.raise_for_status()
print(res.json()){
"weather": {
"source_id": 303711,
"timestamp": "2026-08-19T21:00:00+00:00",
"cloud_cover": 100,
"condition": "rain",
"dew_point": 16.14,
"solar_10": 0.0,
"solar_30": 0.0,
"solar_60": 0.0,
"precipitation_10": 0.0,
"precipitation_30": 0.0,
"precipitation_60": 0.0,
"pressure_msl": 1002.7,
"relative_humidity": 89,
"visibility": 26286,
"wind_direction_10": 170,
"wind_direction_30": 170,
"wind_direction_60": 178,
"wind_speed_10": 6.1,
"wind_speed_30": 5.8,
"wind_speed_60": 5.0,
"wind_gust_direction_10": 190,
"wind_gust_direction_30": 190,
"wind_gust_direction_60": 190,
"wind_gust_speed_10": 10.1,
"wind_gust_speed_30": 10.1,
"wind_gust_speed_60": 10.1,
"sunshine_30": 0.0,
"sunshine_60": 0.0,
"temperature": 18.0,
"fallback_source_ids": {
"solar_30": 254907,
"sunshine_30": 254907,
"sunshine_60": 254907,
"solar_60": 254907,
"solar_10": 254907
},
"icon": "cloudy"
},
"sources": [
{
"id": 303711,
"dwd_station_id": "00433",
"observation_type": "synop",
"lat": 52.4676,
"lon": 13.402,
"height": 47.7,
"station_name": "Berlin-Tempelhof",
"wmo_station_id": "10384",
"first_record": "2026-08-18T14:30:00+00:00",
"last_record": "2026-08-19T21:00:00+00:00",
"distance": 5858.0
},
{
"id": 254907,
"dwd_station_id": "03987",
"observation_type": "synop",
"lat": 52.3813,
"lon": 13.0622,
"height": 80.9,
"station_name": "PotParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lat / lon | float | Required | Coordinates within or near Germany. 52.52 |
date | string | Optional | ISO date for historical or forecast data on /weather. 2026-08-01 |
last_date | string | Optional | End of a date range. 2026-08-07 |
dwd_station_id | string | Optional | Query a specific DWD station instead of coordinates. 01766 |
units | string | Optional | dwd or si unit conventions. dwd |
Response fields
weather.timestampstring- Observation time in ISO 8601.
weather.temperaturenumber- Temperature in Celsius.
weather.conditionstring- Text condition such as rain, dry or fog.
weather.cloud_covernumber- Cloud cover percentage.
weather.wind_speed / wind_directionnumber- Wind speed and bearing.
weather.precipitationnumber- Precipitation in millimetres.
sourcesarray- Which DWD stations the values came from, with distance.
What you can build with the Bright Sky (DWD) API
- Build German weather features backed by the national service
- Analyse historical weather trends back to 2010
- Compare readings from specific DWD weather stations
- Add accurate local forecasts to a German-market product
Common errors and how to fix them
404 or empty weather
Coordinates are outside DWD's coverage area.
Fix: Bright Sky covers Germany and nearby regions; use Open-Meteo for global coverage.
Null values in fields
Not every station reports every parameter.
Fix: Check the `sources` array — a distant station may be filling gaps, and some values will be null.
Unexpected units
DWD and SI conventions differ.
Fix: Set the `units` parameter explicitly rather than assuming.
Bright Sky (DWD) API — frequently asked questions
Is Bright Sky free?
Yes, free and open source with no API key. It exposes Deutscher Wetterdienst open data, which requires attribution.
What area does it cover?
Germany and immediately surrounding regions, since it is built on DWD station data. For global coverage use Open-Meteo or MET Norway.
How far back does the historical data go?
To 2010, at hourly resolution from real weather stations — unusually deep for a free API.
What is the sources array for?
It tells you which DWD stations supplied each value and how far away they are. A distant source means the reading is less locally representative.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
Alternatives to Bright Sky (DWD) API
If Bright Sky (DWD) does not fit, these weather apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Open-Meteo | Free weather forecast API with no API key and no signup. Hourly and daily forecasts worldwide, free for commercial use. Working curl example and live response. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Air Quality | Free air quality API with no key: PM2.5, PM10, ozone, nitrogen dioxide, European and US AQI plus pollen forecasts worldwide. Tested curl example included. | No key | Yes | 19 Aug 2026 |
| wttr.in | wttr.in is a free console-oriented weather API with no key. Get weather as plain text, ASCII art, PNG or full JSON with one curl command. Live example included. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Geocoding | Free geocoding API with no key: convert a city or place name into latitude and longitude, with population, country and timezone. Tested curl example and live JSON. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Historical Archive | Free historical weather API with no key: hourly and daily weather for any location worldwide going back to 1940, from ERA5 reanalysis data. Tested example. | No key | No | 20 Aug 2026 |
| Hong Kong Observatory | Free Hong Kong weather API with no key: current readings by district, rainfall, warnings and forecasts from the territory's official meteorological service. Tested example included. | No key | Yes | 21 Aug 2026 |
Bright Sky (DWD) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.