Current Air Quality API

Current air quality observations for major pollutants and AQI at global scale.

API Guide

Current Air Quality API

Current air quality observations for major pollutants and AQI at global scale.

This API returns air quality data on the 6 major surface pollutants - PM 2.5, PM 10, CO, SO2, NO2, and O3. Additionally, this API returns an air quality index score (AQI) as well as pollen levels (USA and EU only).

  • Current concentration values for six major pollutants.
  • AQI values for operational and public-facing products.
  • Compatible with current-weather location query methods.

Request Parameters

Field Optional/Required Type Data Type Description
lat Optional query number Latitude component of location.
lon Optional query number Longitude component of location.
city Optional query string City search.. Example - &city=Raleigh,NC or &city=Berlin,DE or city=Paris&country=FR
postal_code Optional query string Postal Code. Example: 28546
country Optional query string Country Code (2 letter) - to be used with postal_code.
key Required query string Your registered API key.

* One of the following location methods is required: lat/lon (recommended), city,ST + country or postal_code + country .

Example Requests

Geolocation options: lat/lon (recommended), city or postal_code and country

Enter API key

lat/lon (recommended)

https://api.weatherbit.io/v2.0/current/airquality?key=API_KEY&lat=35.7796&lon=-78.6382
curl -s "https://api.weatherbit.io/v2.0/current/airquality?key=API_KEY&lat=35.7796&lon=-78.6382"
require 'uri'
require 'net/http'
require 'json'

uri = URI("https://api.weatherbit.io/v2.0/current/airquality?key=API_KEY&lat=35.7796&lon=-78.6382")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == "https")
request = Net::HTTP::Get.new(uri)
response = http.request(request)
json = JSON.parse(response.body)
puts JSON.pretty_generate(json)
const https = require("https");

https.get("https://api.weatherbit.io/v2.0/current/airquality?key=API_KEY&lat=35.7796&lon=-78.6382", (res) => {
  let raw = "";
  res.on("data", (chunk) => { raw += chunk; });
  res.on("end", () => {
    const json = JSON.parse(raw);
    console.log(JSON.stringify(json, null, 2));
  });
}).on("error", (err) => {
  console.error(err.message);
});
# pip install python-weatherbit
# https://pypi.org/project/pyweatherbit/

from weatherbit.api import Api

api = Api("YOUR_API_KEY")
response = api.get_current(lat='35.7796', lon='-78.6382', source='airquality').get()
print(response)
Estimated quota: 1 requeststandard

Example Response HTTP 200

{
  "city_name": "Blissville",
  "country_code": "US",
  "data": [
    {
      "aqi": 33,
      "co": 72.3664,
      "mold_level": 0,
      "no2": 6,
      "o3": 72,
      "pm10": 3,
      "pm25": 2,
      "pollen_level_grass": 1,
      "pollen_level_tree": 1,
      "pollen_level_weed": 1,
      "predominant_pollen_type": "Trees",
      "so2": 1
    }
  ],
  "lat": 40.7306,
  "lon": -73.9352,
  "state_code": "NY",
  "timezone": "America/New_York"
}

HTTP Statuses

Code Description Example
200 Current air quality conditions -
204 No Data Found -
400 Client Error
{
  "error": "Some relevant message"
}
403 Unauthorized/No Access for current plan level
{
  "error": "Some relevant message"
}
429 Daily or Velocity limit exceeded See rate limit guidance.
{
  "error": "Rate limit exceeded.",
  "status_code": 429,
  "status_message": "Rate limit exceeded. Try again later."
}
500 Internal Server Error
{
  "error": "Server Error"
}

Return Fields

Field Data Type Description
city_name string Nearest city name
state_code string State Abbreviation
country_code string Country Abbreviation
lat number Latitude
lon number Longitude
timezone string Local IANA time zone
data array<AQCurrent>
data[].aqi integer Cloud cover as a percentage (%)
data[].co number Concentration of CO (µg/m³)
data[].so2 number Concentration of SO2 (µg/m³)
data[].no2 number Concentration of NO2 (µg/m³)
data[].o3 number Concentration of O3 (µg/m³)
data[].pm25 number Concentration of PM 2.5 (µg/m³)
data[].pm10 number Concentration of PM 10 (µg/m³)
data[].mold_level integer Mold level category
data[].pollen_level_grass integer Grass pollen level category
data[].pollen_level_tree integer Tree pollen level category
data[].pollen_level_weed integer Weed pollen level category
data[].predominant_pollen_type string Predominant pollen type