Air quality API for German cities (UBA)
Current air quality data for major German cities through a free, keyless REST API. The source is the German Environment Agency (UBA) with its official monitoring network, delivered as consistent JSON with source and license on every response.
What data you get
For each city the endpoint returns readings from the nearest UBA station: particulate matter PM10 and PM2.5, nitrogen dioxide NO2, ozone O3 and sulphur dioxide SO2, each with measurement time and station reference.
- Particulate matter PM10
- Particulate matter PM2.5
- Nitrogen dioxide (NO2)
- Ozone (O3)
- Sulphur dioxide (SO2)
- Measurement time
- Monitoring station
Source: German Environment Agency (UBA). License:
DL-DE BY 2.0. Source, license URL and timestamp are included in every API
response in the meta and attribution block.
How to fetch it
A simple GET request, no key and no sign-up:
curl https://infranode.dev/api/v1/cities/berlin/air-uba For another city, just put the slug from the cities list into the path.
No key, no sign-up, free.
Covered cities
Air quality data follows the UBA monitoring network; the nearest station is queried per city.
Available for all 84 covered cities. The exact per-city status is on the coverage and status page, the full list of cities on the cities overview.
Endpoint reference
All parameters, fields and response examples are in the API reference for this endpoint. InfraNode is also available as an MCP server for AI assistants.
Frequently asked questions
- Is the air quality API free and usable without a key?
- Yes. The API is keyless and free; a GET request without sign-up is enough. The rate limit is 300 requests per minute per IP.
- Which pollutants are included?
- Particulate matter PM10 and PM2.5, nitrogen dioxide NO2, ozone O3 and sulphur dioxide SO2 from the German Environment Agency network, with measurement time and station reference per value.
- Which license applies to the air data?
- UBA data is passed through under DL-DE BY 2.0. The license URL and attribution text are included in every API response in the attribution block.