Air Quality

Air Quality

URL Path
https://data.api.xweather.com/airquality/
Data Coverage
Global
Update Interval
1 hour
Time Range
Latest
Access Multiplier
5x

The air quality endpoint provides current air quality information for locations globally. When available, nearby air quality stations will be used to interpolate air quality values for more accurate readings.

This endpoint includes the air quality index (AQI), category, dominant pollutant, Health Index (AQHI),  and information for various pollutants when available.

Requests

Every request to the endpoint must include one of the supported actions in the url.

https://data.api.xweather.com/airquality/{action}?client_id={client_id}&client_secret={client_secret}&{params}

Supported Actions

The following actions are supported with the /airquality endpoint:

ActionDescription
:idType: stringTypically used for passing a geographical location name or identifier such as city name, lat/long, or even US and Canadian postal codes. Learn more.
routeType: stringAllows you to pass several coordinates along a custom route to return data points at each location. Learn more.

Response

The following is an example of what each object in the response will consist of. Depending on your requested action, the response may contain multiple instances of this object within an array.

Properties

id (string)

The ID of the air quality station. Null if not available.

loc.lat (number)

The latitude coordinate of the record.

loc.long (number)

The place or nearest place to the record.

place.name (string)

The place or nearest place to the record.

place.state (string)

The state abbreviation in which the record is located. This may be null depending on the country.

place.country (string)

The 2 letter ISO-3166 country abbreviation in which the response is located.

periods.#.dateTimeISO (string)

ISO 8601 date of the period.

periods.#.timestamp (number)

UNIX timestamp of the period.

periods.#.aqi (number)

The standardized Air Quality Index value from 0 - 500.
See AirNow

periods.#.category (string)

The Air Quality category based on the AQI:
See AirNow

- good
- moderate
- usg (Unhealthy for Sensitive Groups)
- unhealthy
- very Unhealthy
- hazardous

If using filter=china, the following categories are utilized:
More info on China AQI / Categories.

- excellent
- good
- slightly polluted
- lightly polluted
- moderately polluted
- severely polluted

If using the filter=india, the following categories are utilizes:
More info on India AQI / Categories.

- good
- satisfactory
- moderately polluted
- poor
- very poor
- severe

periods.#.color (string)

The 6 character hexadecimal color code for the specific category.
See AirNow

periods.#.method (string)

The method used for the AQI calculation:
- airnow = Used the EPA AirNow AQI specification (default)
- china = Used the China AQI specification (filter=china)
- india = Used the India AQI specification (filter=india)

periods.#.dominant (string)

The dominant pollutant. Normally set to one of the following:
- co (Carbon Monoxide)
- no2 (Nitrogen Dioxide)
- o3 (Ozone)
- pm10 (Particle Matter <10µm)
- pm2.5 (Particle Matter <2.5µm)
- so2 (Sulfur Dioxide)

periods.#.health.index (number)

The air quality health index. A simplified global health index using a scale of 0 to 20 to describe the effect of air quality on health

- low: 0 - 3
- moderate: 4-6
- high: 7-10
- very high: > 10

periods.#.health.category (string)

The air quality health index category name:

- low: 0 - 3
- moderate: 4-6
- high: 7-10
- very high: > 10

periods.#.health.color (string)

The air quality health index category color:
The air quality health index. A simplified global health index using a scale of 0 to 20 to describe the effect of air quality on health

- low: #0000FF
- moderate: #00FF00
- high: #FFFF00
- very high: #FF0000

periods.#.pollutants.#.type (string)

The type abbreviation of the pollutant:
co = carbon monoxide
no2 = nitrogen dioxide
o3 = ozone
pm1 = partical matter (<1µm)
pm10 = partical matter (<10µm)
pm2.5 = partical matter (<2.5µm)
so2 = sulfer dioxide

Note that not all air quality stations provide information on all pollutants.

periods.#.pollutants.#.name (string)

Name of the pollutant

periods.#.pollutants.#.valuePPB (number)

The pollutant measurement in parts per billion. Null if this unit is not utilized

pm2.5 & pm10 do not utilize PPB.

periods.#.pollutants.#.valueUGM3 (number)

The pollutant measurement in parts per micrograms per cubic meter. Null if this unit is not utilized

periods.#.pollutants.#.aqi (number)

The pollutant measurement converted to the common AQI value, from 0 to 500 if using AirNow AQI.

periods.#.pollutants.#.category (string)

The Air Quality category based on the AQI:
See AirNow

- good
- moderate
- usg (Unhealthy for Sensitive Groups)
- unhealthy
- very Unhealthy
- hazardous

If using filter=china, the following categories are utilized:
More info on China AQI / Categories.

- excellent
- good
- slightly polluted
- lightly polluted
- moderately polluted
- severely polluted

If using the filter=india, the following categories are utilizes:
More info on India AQI / Categories.

- good
- satisfactory
- moderately polluted
- poor
- very poor
- severe

periods.#.pollutants.#.color (string)

The 6 character hexadecimal color code for the specific category.
See AirNow

periods.#.pollutants.#.method (string)

The method used for the AQI calculation:
- airnow = Used the EPA AirNow AQI specification (default)
- china = Used the China AQI specification (filter=china)
- india = Used the India AQI specification (filter=india)

profile.tz (string)

Timezone name of the location.

profile.sources.#.name (string)

The name of the source

profile.stations.# (array)

Array of the observation station IDs used in the interpolated data

[
  {
    "id": null,
    "loc": {
      "lat": 47.38908,
      "long": -122.4594
    },
    "place": {
      "name": "burton",
      "state": "wa",
      "country": "us"
    },
    "periods": [
      {
        "dateTimeISO": "2023-12-13T13:00:00-08:00",
        "timestamp": 1702501200,
        "aqi": 31,
        "category": "good",
        "color": "00E400",
        "method": "airnow",
        "dominant": "no2",
        "health": {
          "index": 2,
          "category": "low",
          "color": "0000FF"
        },
        "pollutants": [
          {
            "type": "o3",
            "name": "ozone",
            "valuePPB": 12,
            "valueUGM3": 24,
            "aqi": 11,
            "category": "good",
            "color": "00E400",
            "method": "airnow"
          },
          {
            "type": "pm2.5",
            "name": "particle matter (<2.5µm)",
            "valuePPB": null,
            "valueUGM3": 6.1191,
            "aqi": 25,
            "category": "good",
            "color": "00E400",
            "method": "airnow"
          },
          {
            "type": "co",
            "name": "carbon monoxide",
            "valuePPB": 289.692,
            "valueUGM3": 331.6974,
            "aqi": 3,
            "category": "good",
            "color": "00E400",
            "method": "airnow"
          },
          {
            "type": "no2",
            "name": "nitrogen dioxide",
            "valuePPB": 32.9541,
            "valueUGM3": 62.0959,
            "aqi": 31,
            "category": "good",
            "color": "00E400",
            "method": "airnow"
          },
          {
            "type": "so2",
            "name": "sulfur dioxide",
            "valuePPB": 0,
            "valueUGM3": 1.048,
            "aqi": 1,
            "category": "good",
            "color": "00E400",
            "method": "airnow"
          }
        ]
      }
    ],
    "profile": {
      "tz": "America/Los_Angeles",
      "sources": [
        {
          "name": "AirNow (EPA)"
        },
        {
          "name": "Washington Department of Ecology"
        },
        {
          "name": "CAMS"
        },
        {
          "name": "Vaisala Xweather"
        }
      ],
      "stations": [
        "AIRNOW_530530031",
        "AIRNOW_530530024",
        "AIRNOW_840530330069",
        "AIRNOW_530331011",
        "AIRNOW_530330057",
        "AIRNOW_840530330047",
        "AIRNOW_530530029",
        "AIRNOW_530330080",
        "AIRNOW_530330030",
        "AIRNOW_530350007"
      ]
    }
  }
]