Air Quality API | Open-Meteo.com

Pollutant thresholds from the United States Environmental Protection Agency (EPA) are given below. Some thresholds are in parts per billion (ppb) instead of μg/m³. Conversion explained here . Particulate Matter (PM) is using a 24 hour roling average, ozone and carbon monoxide use 8 hour averages, other gases use hourly values.

Note: The United States Air Quality Index (AQI) ranges from 0-50 (good), 51-100 (moderate), 101-150 (unhealthy for sensitive groups), 151-200 (unhealthy), 201-300 (very unhealthy) and 301-500 (hazardous).

Pollutant thresholds in μg/m³ from the European Environment Agency (EAA) are given on the right. Particulate Matter (PM) is using a 24 hour roling average, while gases use hourly values.

Note: The European Air Quality Index (AQI) ranges from 0-20 (good), 20-40 (fair), 40-60 (moderate), 60-80 (poor), 80-100 (very poor) and exceeds 100 for extremely poor conditions.

You can copy this API URL into your application

API Documentation

The API endpoint /v1/air-quality accepts a geographical coordinate, a list of weather variables and
responds with a JSON hourly air quality forecast for 5 days. Time always starts at 0:00 today.

Forecast is based on the 11 kilometer CAMS European air quality forecast and the 40 kilometer CAMS global atmospheric composition forecasts. The European and global domain are not
coupled and may show different forecasts.

All URL parameters are listed below:

Parameter
Format
Required
Default
Description
latitude, longitude
Floating point
Yes

Geographical WGS84 coordinate of the location
hourly
String array
No

A list of weather variables which should be returned. Values can be comma separated, or multiple
&hourly= parameter in the URL can be used.

domains
String
No
auto
Automatically combine both domains auto or specifically select the European
cams_europe or global domain cams_global.

timeformat
String
No
iso8601
If format unixtime is selected, all time values are returned in UNIX epoch time in seconds.
Please note that all timestamp are in GMT+0! For daily values with unix timestamps, please apply
utc_offset_seconds again to get the correct date.

timezone
String
No
GMT
If timezone is set, all timestamps are returned as local-time and data is returned starting
at 00:00 local-time. Any time zone name from the time zone
database is supported. If auto is set as a time zone, the coordinates will be
automatically resolved to the local time zone.
past_days
Integer (0-2)
No
0
If past_days is set, yesterday or the day before yesterday data are also returned.
start_date
end_date
String (yyyy-mm-dd)
No

The time interval to get weather data. A day must be specified as an ISO8601 date (e.g.
2022-06-30).

cell_selection
String
No
nearest
Set a preference how grid-cells are selected. The default land finds a suitable grid-cell on land with similar elevation to the requested coordinates using a 90-meter digital elevation model.
sea prefers grid-cells on sea. nearest selects the nearest possible grid-cell.

Additional optional URL parameters will be added. For API stability, no required parameters will be added in the
future!

Hourly Parameter Definition

The parameter &hourly= accepts the following values. Most weather variables are given as an
instantaneous value for the indicated hour. Some variables like precipitation are calculated from the preceding
hour as an average or sum.

Variable
Valid time
Unit
Description
pm10
pm2_5
Instant
μg/m³
Particulate matter with diameter smaller than 10 µm (PM10) and smaller than 2.5 µm (PM2.5) close to
surface (10 meter above ground)
carbon_monoxide
nitrogen_dioxide
sulphur_dioxide
ozone
Instant
μg/m³
Atmospheric gases close to surface (10 meter above ground)
ammonia
Instant
μg/m³
Ammonia concentration. Only available for Europe.
aerosol_optical_depth
Instant
Dimensionless
Aerosol optical depth at 550 nm of the entire atmosphere to indicate haze.
dust
Instant
μg/m³
Saharan dust particles close to surface level (10 meter above ground).
uv_index
uv_index_clear_sky
Instant
Index
UV index considering clouds and clear sky. See ECMWF UV Index
recommendation for more information
alder_pollen
birch_pollen
grass_pollen
mugwort_pollen
olive_pollen
ragweed_pollen

Instant
Grains/m³
Pollen for various plants. Only available in Europe as provided by CAMS European Air Quality forecast.

european_aqi
european_aqi_pm2_5
european_aqi_pm10
european_aqi_no2
european_aqi_o3
european_aqi_so2

Instant
European AQI
European Air Quality Index (AQI) calculated for different particulate matter and gases individually. The consolidated european_aqi returns the maximum of all individual indices. Ranges from 0-20 (good), 20-40 (fair), 40-60 (moderate), 60-80 (poor), 80-100 (very poor) and exceeds 100 for extremely poor conditions.
us_aqi
us_aqi_pm2_5
us_aqi_pm10
us_aqi_no2
us_aqi_o3
us_aqi_so2
us_aqi_co

Instant
U.S. AQI
United States Air Quality Index (AQI) calculated for different particulate matter and gases individually. The consolidated us_aqi returns the maximum of all individual indices. Ranges from 0-50 (good), 51-100 (moderate), 101-150 (unhealthy for sensitive groups), 151-200 (unhealthy), 201-300 (very unhealthy) and 301-500 (hazardous).

JSON Return Object

On success a JSON object will be returned.

      

  "latitude": 52.52,
  "longitude": 13.419,
  "elevation": 44.812,
  "generationtime_ms": 2.2119,
  "utc_offset_seconds": 0,
  "timezone": "Europe/Berlin",
  "timezone_abbreviation": "CEST",
  "hourly": {
    "time": ["2022-07-01T00:00", "2022-07-01T01:00", "2022-07-01T02:00", ...],
    "pm10": [1, 1.7, 1.7, 1.5, 1.5, 1.8, 2.0, 1.9, 1.3, ...]
  },
  "hourly_units": {
    "pm10": "μg/m³"
  },

      
    

Parameter
Format
Description
latitude, longitude
Floating point
WGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be a few kilometers away from the requested coordinate.
generationtime_ms
Floating point
Generation time of the weather forecast in milliseconds. This is mainly used for performance monitoring
and improvements.
utc_offset_seconds
Integer
Applied timezone offset from the &timezone= parameter.
timezone
timezone_abbreviation
String
Timezone identifier (e.g. Europe/Berlin) and abbreviation (e.g. CEST)
hourly
Object
For each selected weather variable, data will be returned as a floating point array. Additionally a
time array will be returned with ISO8601 timestamps.

hourly_units
Object
For each selected weather variable, the unit will be listed here.

Errors

In case an error occurs, for example a URL parameter is not correctly specified, a JSON error object is returned
with a HTTP 400 status code.

      

  "error": true,
  "reason": "Cannot initialize WeatherVariable from invalid String value tempeture_2m for key hourly"