Historical Air Quality API

Hourly historical air quality observations and AQI data for global locations.

API Guide

Historical Air Quality API

Hourly historical air quality observations and AQI data for global locations.

This Air Quality API returns hourly historical air quality conditions for any location in the world. It 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. By default this API returns the past 72 hours, however, a start/end date may be passed to obtain a different range. Data is available going back to January 13th, 2022 at this time.. Requests for more than 5 days of data count as multiple historical requests against your daily quota ie. (30 days = 6 requests, 14 days = 3 requests).

  • Major pollutant historical values.
  • AQI context for history windows.
  • Hourly time-step support.

Request Parameters

Field Optional/Required Type Data Type Description
lat Required query number Latitude component of location.
lon Required 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.
start_date Optional query string Start Date (YYYY-MM-DD or YYYY-MM-DD:HH).
end_date Optional query string End Date (YYYY-MM-DD or YYYY-MM-DD:HH).
tz Optional query string Assume utc (default) or local time for start_date, end_date Options: local, utc
key Required query string Your registered API key.

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/history/airquality?key=API_KEY&lat=35.7796&lon=-78.6382
curl -s "https://api.weatherbit.io/v2.0/history/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/history/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/history/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_history(lat='35.7796', lon='-78.6382', start_date='2026-06-08', end_date='2026-06-13', source='airquality', tp='hourly').get()
print(response)
Estimated quota: 1 requeststandard

Example Response HTTP 200

{
  "city_name": "Blissville",
  "country_code": "US",
  "data": [
    {
      "aqi": 31,
      "co": 125.6,
      "datetime": "2026-06-02:17",
      "no2": 14.3,
      "o3": 63,
      "pm10": 8.2,
      "pm25": 7.53,
      "so2": 5.3,
      "timestamp_local": "2026-06-02T13:00:00",
      "timestamp_utc": "2026-06-02T17:00:00",
      "ts": 1780419600
    },
    {
      "aqi": 15,
      "co": 178.8,
      "datetime": "2026-06-02:16",
      "no2": 7.7,
      "o3": 32.1,
      "pm10": 4,
      "pm25": 3,
      "so2": 6.7,
      "timestamp_local": "2026-06-02T12:00:00",
      "timestamp_utc": "2026-06-02T16:00:00",
      "ts": 1780416000
    },
    {
      "aqi": 19,
      "co": 232,
      "datetime": "2026-06-02:15",
      "no2": 1,
      "o3": 1.1,
      "pm10": 4.6,
      "pm25": 4.6,
      "so2": 8,
      "timestamp_local": "2026-06-02T11:00:00",
      "timestamp_utc": "2026-06-02T15:00:00",
      "ts": 1780412400
    },
    {
      "aqi": 12,
      "co": 275.7,
      "datetime": "2026-06-02:14",
      "no2": 47.7,
      "o3": 6.2,
      "pm10": 3.7,
      "pm25": 3,
      "so2": 8.7,
      "timestamp_local": "2026-06-02T10:00:00",
      "timestamp_utc": "2026-06-02T14:00:00",
      "ts": 1780408800
    },
    {
      "aqi": 30,
      "co": 232,
      "datetime": "2026-06-02:13",
      "no2": 1,
      "o3": 1.1,
      "pm10": 7.3,
      "pm25": 7.25,
      "so2": 8,
      "timestamp_local": "2026-06-02T09:00:00",
      "timestamp_utc": "2026-06-02T13:00:00",
      "ts": 1780405200
    },
    {
      "aqi": 31,
      "co": 363,
      "datetime": "2026-06-02:12",
      "no2": 141,
      "o3": 16.4,
      "pm10": 8.4,
      "pm25": 7.5,
      "so2": 10,
      "timestamp_local": "2026-06-02T08:00:00",
      "timestamp_utc": "2026-06-02T12:00:00",
      "ts": 1780401600
    },
    {
      "aqi": 25,
      "co": 373,
      "datetime": "2026-06-02:11",
      "no2": 56,
      "o3": 6.9,
      "pm10": 6,
      "pm25": 6,
      "so2": 9.7,
      "timestamp_local": "2026-06-02T07:00:00",
      "timestamp_utc": "2026-06-02T11:00:00",
      "ts": 1780398000
    },
    {
      "aqi": 34,
      "co": 786,
      "datetime": "2026-06-02:10",
      "no2": 264,
      "o3": 1.1,
      "pm10": 9.3,
      "pm25": 8.25,
      "so2": 8,
      "timestamp_local": "2026-06-02T06:00:00",
      "timestamp_utc": "2026-06-02T10:00:00",
      "ts": 1780394400
    },
    {
      "aqi": 23,
      "co": 74.7,
      "datetime": "2026-06-02:09",
      "no2": 46,
      "o3": 23,
      "pm10": 6.8,
      "pm25": 5.6,
      "so2": 9,
      "timestamp_local": "2026-06-02T05:00:00",
      "timestamp_utc": "2026-06-02T09:00:00",
      "ts": 1780390800
    },
    {
      "aqi": 26,
      "co": 72,
      "datetime": "2026-06-02:08",
      "no2": 43.7,
      "o3": 27,
      "pm10": 7.7,
      "pm25": 6.33,
      "so2": 8.3,
      "timestamp_local": "2026-06-02T04:00:00",
      "timestamp_utc": "2026-06-02T08:00:00",
      "ts": 1780387200
    },
    {
      "aqi": 22,
      "co": 69.3,
      "datetime": "2026-06-02:07",
      "no2": 41.3,
      "o3": 31,
      "pm10": 6,
      "pm25": 5.2,
      "so2": 7.7,
      "timestamp_local": "2026-06-02T03:00:00",
      "timestamp_utc": "2026-06-02T07:00:00",
      "ts": 1780383600
    },
    {
      "aqi": 19,
      "co": 66.5,
      "datetime": "2026-06-02:06",
      "no2": 39,
      "o3": 35,
      "pm10": 5.6,
      "pm25": 4.6,
      "so2": 7,
      "timestamp_local": "2026-06-02T02:00:00",
      "timestamp_utc": "2026-06-02T06:00:00",
      "ts": 1780380000
    },
    {
      "aqi": 21,
      "co": 61.7,
      "datetime": "2026-06-02:05",
      "no2": 31.7,
      "o3": 44.3,
      "pm10": 4.8,
      "pm25": 3.8,
      "so2": 6.3,
      "timestamp_local": "2026-06-02T01:00:00",
      "timestamp_utc": "2026-06-02T05:00:00",
      "ts": 1780376400
    },
    {
      "aqi": 25,
      "co": 56.8,
      "datetime": "2026-06-02:04",
      "no2": 24.3,
      "o3": 53.7,
      "pm10": 4.5,
      "pm25": 3,
      "so2": 5.7,
      "timestamp_local": "2026-06-02T00:00:00",
      "timestamp_utc": "2026-06-02T04:00:00",
      "ts": 1780372800
    },
    {
      "aqi": 29,
      "co": 51.9,
      "datetime": "2026-06-02:03",
      "no2": 17,
      "o3": 63,
      "pm10": 4.8,
      "pm25": 3.8,
      "so2": 5,
      "timestamp_local": "2026-06-01T23:00:00",
      "timestamp_utc": "2026-06-02T03:00:00",
      "ts": 1780369200
    },
    {
      "aqi": 32,
      "co": 51.2,
      "datetime": "2026-06-02:02",
      "no2": 14.7,
      "o3": 68.3,
      "pm10": 7,
      "pm25": 5.67,
      "so2": 4.7,
      "timestamp_local": "2026-06-01T22:00:00",
      "timestamp_utc": "2026-06-02T02:00:00",
      "ts": 1780365600
    },
    {
      "aqi": 34,
      "co": 50.4,
      "datetime": "2026-06-02:01",
      "no2": 12.3,
      "o3": 73.7,
      "pm10": 6.2,
      "pm25": 5,
      "so2": 4.3,
      "timestamp_local": "2026-06-01T21:00:00",
      "timestamp_utc": "2026-06-02T01:00:00",
      "ts": 1780362000
    },
    {
      "aqi": 37,
      "co": 49.6,
      "datetime": "2026-06-02:00",
      "no2": 10,
      "o3": 79,
      "pm10": 6,
      "pm25": 5.5,
      "so2": 4,
      "timestamp_local": "2026-06-01T20:00:00",
      "timestamp_utc": "2026-06-02T00:00:00",
      "ts": 1780358400
    },
    {
      "aqi": 39,
      "co": 49.2,
      "datetime": "2026-06-01:23",
      "no2": 8,
      "o3": 84.7,
      "pm10": 5.4,
      "pm25": 4.4,
      "so2": 3.7,
      "timestamp_local": "2026-06-01T19:00:00",
      "timestamp_utc": "2026-06-01T23:00:00",
      "ts": 1780354800
    },
    {
      "aqi": 42,
      "co": 48.8,
      "datetime": "2026-06-01:22",
      "no2": 6,
      "o3": 90.3,
      "pm10": 6,
      "pm25": 4.5,
      "so2": 3.3,
      "timestamp_local": "2026-06-01T18:00:00",
      "timestamp_utc": "2026-06-01T22:00:00",
      "ts": 1780351200
    },
    {
      "aqi": 44,
      "co": 48.4,
      "datetime": "2026-06-01:21",
      "no2": 4,
      "o3": 96,
      "pm10": 3.8,
      "pm25": 3.2,
      "so2": 3,
      "timestamp_local": "2026-06-01T17:00:00",
      "timestamp_utc": "2026-06-01T21:00:00",
      "ts": 1780347600
    },
    {
      "aqi": 30,
      "co": 109.6,
      "datetime": "2026-06-01:20",
      "no2": 3,
      "o3": 64.4,
      "pm10": 4.3,
      "pm25": 3.67,
      "so2": 4.7,
      "timestamp_local": "2026-06-01T16:00:00",
      "timestamp_utc": "2026-06-01T20:00:00",
      "ts": 1780344000
    },
    {
      "aqi": 22,
      "co": 343,
      "datetime": "2026-06-01:19",
      "no2": 136,
      "o3": 1.1,
      "pm10": 5.2,
      "pm25": 5.2,
      "so2": 8,
      "timestamp_local": "2026-06-01T15:00:00",
      "timestamp_utc": "2026-06-01T19:00:00",
      "ts": 1780340400
    },
    {
      "aqi": 17,
      "co": 232,
      "datetime": "2026-06-01:18",
      "no2": 1,
      "o3": 1.1,
      "pm10": 4,
      "pm25": 4,
      "so2": 8,
      "timestamp_local": "2026-06-01T14:00:00",
      "timestamp_utc": "2026-06-01T18:00:00",
      "ts": 1780336800
    },
    {
      "aqi": 16,
      "co": 171.6,
      "datetime": "2026-06-01:17",
      "no2": 2.3,
      "o3": 29.7,
      "pm10": 4.8,
      "pm25": 3.75,
      "so2": 6.3,
      "timestamp_local": "2026-06-01T13:00:00",
      "timestamp_utc": "2026-06-01T17:00:00",
      "ts": 1780333200
    },
    {
      "aqi": 27,
      "co": 111.2,
      "datetime": "2026-06-01:16",
      "no2": 3.7,
      "o3": 58.4,
      "pm10": 3.7,
      "pm25": 3.33,
      "so2": 4.7,
      "timestamp_local": "2026-06-01T12:00:00",
      "timestamp_utc": "2026-06-01T16:00:00",
      "ts": 1780329600
    },
    {
      "aqi": 40,
      "co": 50.8,
      "datetime": "2026-06-01:15",
      "no2": 5,
      "o3": 87,
      "pm10": 3.6,
      "pm25": 2.8,
      "so2": 3,
      "timestamp_local": "2026-06-01T11:00:00",
      "timestamp_utc": "2026-06-01T15:00:00",
      "ts": 1780326000
    },
    {
      "aqi": 29,
      "co": 121.2,
      "datetime": "2026-06-01:14",
      "no2": 53.7,
      "o3": 61.8,
      "pm10": 5,
      "pm25": 4,
      "so2": 4.7,
      "timestamp_local": "2026-06-01T10:00:00",
      "timestamp_utc": "2026-06-01T14:00:00",
      "ts": 1780322400
    },
    {
      "aqi": 19,
      "co": 191.6,
      "datetime": "2026-06-01:13",
      "no2": 102.3,
      "o3": 36.6,
      "pm10": 5.7,
      "pm25": 4.57,
      "so2": 6.3,
      "timestamp_local": "2026-06-01T09:00:00",
      "timestamp_utc": "2026-06-01T13:00:00",
      "ts": 1780318800
    },
    {
      "aqi": 23,
      "co": 262,
      "datetime": "2026-06-01:12",
      "no2": 151,
      "o3": 11.4,
      "pm10": 6.4,
      "pm25": 5.57,
      "so2": 8,
      "timestamp_local": "2026-06-01T08:00:00",
      "timestamp_utc": "2026-06-01T12:00:00",
      "ts": 1780315200
    },
    {
      "aqi": 24,
      "co": 262,
      "datetime": "2026-06-01:11",
      "no2": 151,
      "o3": 11.4,
      "pm10": 6.4,
      "pm25": 5.71,
      "so2": 8,
      "timestamp_local": "2026-06-01T07:00:00",
      "timestamp_utc": "2026-06-01T11:00:00",
      "ts": 1780311600
    },
    {
      "aqi": 16,
      "co": 148.8,
      "datetime": "2026-06-01:10",
      "no2": 84.3,
      "o3": 12.5,
      "pm10": 4.8,
      "pm25": 3.8,
      "so2": 7.3,
      "timestamp_local": "2026-06-01T06:00:00",
      "timestamp_utc": "2026-06-01T10:00:00",
      "ts": 1780308000
    },
    {
      "aqi": 17,
      "co": 92.2,
      "datetime": "2026-06-01:09",
      "no2": 51,
      "o3": 13,
      "pm10": 5,
      "pm25": 4,
      "so2": 7,
      "timestamp_local": "2026-06-01T05:00:00",
      "timestamp_utc": "2026-06-01T09:00:00",
      "ts": 1780304400
    },
    {
      "aqi": 14,
      "co": 232,
      "datetime": "2026-06-01:08",
      "no2": 58,
      "o3": 1.1,
      "pm10": 3.3,
      "pm25": 3.33,
      "so2": 8,
      "timestamp_local": "2026-06-01T04:00:00",
      "timestamp_utc": "2026-06-01T08:00:00",
      "ts": 1780300800
    },
    {
      "aqi": 25,
      "co": 554.7,
      "datetime": "2026-06-01:07",
      "no2": 193,
      "o3": 5.1,
      "pm10": 5,
      "pm25": 4,
      "so2": 7.7,
      "timestamp_local": "2026-06-01T03:00:00",
      "timestamp_utc": "2026-06-01T07:00:00",
      "ts": 1780297200
    },
    {
      "aqi": 34,
      "co": 786,
      "datetime": "2026-06-01:06",
      "no2": 264,
      "o3": 1.1,
      "pm10": 8,
      "pm25": 6.75,
      "so2": 8,
      "timestamp_local": "2026-06-01T02:00:00",
      "timestamp_utc": "2026-06-01T06:00:00",
      "ts": 1780293600
    },
    {
      "aqi": 25,
      "co": 252,
      "datetime": "2026-06-01:05",
      "no2": 92,
      "o3": 19.5,
      "pm10": 6.8,
      "pm25": 6,
      "so2": 7.3,
      "timestamp_local": "2026-06-01T01:00:00",
      "timestamp_utc": "2026-06-01T05:00:00",
      "ts": 1780290000
    },
    {
      "aqi": 24,
      "co": 343,
      "datetime": "2026-06-01:04",
      "no2": 117,
      "o3": 25.2,
      "pm10": 6,
      "pm25": 5.83,
      "so2": 6.7,
      "timestamp_local": "2026-06-01T00:00:00",
      "timestamp_utc": "2026-06-01T04:00:00",
      "ts": 1780286400
    },
    {
      "aqi": 24,
      "co": 222,
      "datetime": "2026-06-01:03",
      "no2": 59,
      "o3": 19.5,
      "pm10": 6,
      "pm25": 5.67,
      "so2": 6,
      "timestamp_local": "2026-05-31T23:00:00",
      "timestamp_utc": "2026-06-01T03:00:00",
      "ts": 1780282800
    },
    {
      "aqi": 28,
      "co": 343,
      "datetime": "2026-06-01:02",
      "no2": 59,
      "o3": 28.5,
      "pm10": 6.7,
      "pm25": 6.67,
      "so2": 5,
      "timestamp_local": "2026-05-31T22:00:00",
      "timestamp_utc": "2026-06-01T02:00:00",
      "ts": 1780279200
    },
    {
      "aqi": 25,
      "co": 113.3,
      "datetime": "2026-06-01:01",
      "no2": 34.3,
      "o3": 53.8,
      "pm10": 7.2,
      "pm25": 6,
      "so2": 4,
      "timestamp_local": "2026-05-31T21:00:00",
      "timestamp_utc": "2026-06-01T01:00:00",
      "ts": 1780275600
    },
    {
      "aqi": 33,
      "co": 58.9,
      "datetime": "2026-06-01:00",
      "no2": 22,
      "o3": 71,
      "pm10": 6.2,
      "pm25": 5.2,
      "so2": 3,
      "timestamp_local": "2026-05-31T20:00:00",
      "timestamp_utc": "2026-06-01T00:00:00",
      "ts": 1780272000
    },
    {
      "aqi": 36,
      "co": 54.9,
      "datetime": "2026-05-31:23",
      "no2": 17,
      "o3": 78.3,
      "pm10": 4.5,
      "pm25": 3.75,
      "so2": 2.7,
      "timestamp_local": "2026-05-31T19:00:00",
      "timestamp_utc": "2026-05-31T23:00:00",
      "ts": 1780268400
    },
    {
      "aqi": 40,
      "co": 50.8,
      "datetime": "2026-05-31:22",
      "no2": 12,
      "o3": 85.7,
      "pm10": 5.5,
      "pm25": 4.5,
      "so2": 2.3,
      "timestamp_local": "2026-05-31T18:00:00",
      "timestamp_utc": "2026-05-31T22:00:00",
      "ts": 1780264800
    },
    {
      "aqi": 43,
      "co": 46.7,
      "datetime": "2026-05-31:21",
      "no2": 7,
      "o3": 93,
      "pm10": 6.5,
      "pm25": 5.5,
      "so2": 2,
      "timestamp_local": "2026-05-31T17:00:00",
      "timestamp_utc": "2026-05-31T21:00:00",
      "ts": 1780261200
    },
    {
      "aqi": 43,
      "co": 47.7,
      "datetime": "2026-05-31:20",
      "no2": 7.7,
      "o3": 92.3,
      "pm10": 5,
      "pm25": 4,
      "so2": 2.7,
      "timestamp_local": "2026-05-31T16:00:00",
      "timestamp_utc": "2026-05-31T20:00:00",
      "ts": 1780257600
    },
    {
      "aqi": 42,
      "co": 48.6,
      "datetime": "2026-05-31:19",
      "no2": 8.3,
      "o3": 91.7,
      "pm10": 4,
      "pm25": 3.5,
      "so2": 3.3,
      "timestamp_local": "2026-05-31T15:00:00",
      "timestamp_utc": "2026-05-31T19:00:00",
      "ts": 1780254000
    },
    {
      "aqi": 42,
      "co": 49.6,
      "datetime": "2026-05-31:18",
      "no2": 9,
      "o3": 91,
      "pm10": 5,
      "pm25": 4.33,
      "so2": 4,
      "timestamp_local": "2026-05-31T14:00:00",
      "timestamp_utc": "2026-05-31T18:00:00",
      "ts": 1780250400
    },
    {
      "aqi": 34,
      "co": 786,
      "datetime": "2026-05-31:17",
      "no2": 264,
      "o3": 1.1,
      "pm10": 3.4,
      "pm25": 3.4,
      "so2": 8,
      "timestamp_local": "2026-05-31T13:00:00",
      "timestamp_utc": "2026-05-31T17:00:00",
      "ts": 1780246800
    },
    {
      "aqi": 34,
      "co": 786,
      "datetime": "2026-05-31:16",
      "no2": 264,
      "o3": 1.1,
      "pm10": 4,
      "pm25": 4,
      "so2": 8,
      "timestamp_local": "2026-05-31T12:00:00",
      "timestamp_utc": "2026-05-31T16:00:00",
      "ts": 1780243200
    },
    {
      "aqi": 20,
      "co": 121,
      "datetime": "2026-05-31:15",
      "no2": 1,
      "o3": 1.1,
      "pm10": 4.8,
      "pm25": 4.8,
      "so2": 8,
      "timestamp_local": "2026-05-31T11:00:00",
      "timestamp_utc": "2026-05-31T15:00:00",
      "ts": 1780239600
    },
    {
      "aqi": 34,
      "co": 786,
      "datetime": "2026-05-31:14",
      "no2": 264,
      "o3": 1.1,
      "pm10": 5,
      "pm25": 4.5,
      "so2": 8,
      "timestamp_local": "2026-05-31T10:00:00",
      "timestamp_utc": "2026-05-31T14:00:00",
      "ts": 1780236000
    },
    {
      "aqi": 33,
      "co": 232,
      "datetime": "2026-05-31:13",
      "no2": 29,
      "o3": 1.1,
      "pm10": 10,
      "pm25": 8,
      "so2": 8,
      "timestamp_local": "2026-05-31T09:00:00",
      "timestamp_utc": "2026-05-31T13:00:00",
      "ts": 1780232400
    },
    {
      "aqi": 28,
      "co": 54.9,
      "datetime": "2026-05-31:12",
      "no2": 16,
      "o3": 61,
      "pm10": 4.4,
      "pm25": 3.4,
      "so2": 5,
      "timestamp_local": "2026-05-31T08:00:00",
      "timestamp_utc": "2026-05-31T12:00:00",
      "ts": 1780228800
    },
    {
      "aqi": 22,
      "co": 57.2,
      "datetime": "2026-05-31:11",
      "no2": 23.7,
      "o3": 48.3,
      "pm10": 4.5,
      "pm25": 3.5,
      "so2": 6,
      "timestamp_local": "2026-05-31T07:00:00",
      "timestamp_utc": "2026-05-31T11:00:00",
      "ts": 1780225200
    },
    {
      "aqi": 16,
      "co": 59.5,
      "datetime": "2026-05-31:10",
      "no2": 31.3,
      "o3": 35.7,
      "pm10": 4.8,
      "pm25": 3.6,
      "so2": 7,
      "timestamp_local": "2026-05-31T06:00:00",
      "timestamp_utc": "2026-05-31T10:00:00",
      "ts": 1780221600
    },
    {
      "aqi": 17,
      "co": 61.9,
      "datetime": "2026-05-31:09",
      "no2": 39,
      "o3": 23,
      "pm10": 5.2,
      "pm25": 4,
      "so2": 8,
      "timestamp_local": "2026-05-31T05:00:00",
      "timestamp_utc": "2026-05-31T09:00:00",
      "ts": 1780218000
    },
    {
      "aqi": 17,
      "co": 62.6,
      "datetime": "2026-05-31:08",
      "no2": 39.3,
      "o3": 23.7,
      "pm10": 4.5,
      "pm25": 4,
      "so2": 7.7,
      "timestamp_local": "2026-05-31T04:00:00",
      "timestamp_utc": "2026-05-31T08:00:00",
      "ts": 1780214400
    },
    {
      "aqi": 15,
      "co": 63.4,
      "datetime": "2026-05-31:07",
      "no2": 39.7,
      "o3": 24.3,
      "pm10": 4.7,
      "pm25": 3.67,
      "so2": 7.3,
      "timestamp_local": "2026-05-31T03:00:00",
      "timestamp_utc": "2026-05-31T07:00:00",
      "ts": 1780210800
    },
    {
      "aqi": 17,
      "co": 64.2,
      "datetime": "2026-05-31:06",
      "no2": 40,
      "o3": 25,
      "pm10": 5,
      "pm25": 4,
      "so2": 7,
      "timestamp_local": "2026-05-31T02:00:00",
      "timestamp_utc": "2026-05-31T06:00:00",
      "ts": 1780207200
    },
    {
      "aqi": 21,
      "co": 161,
      "datetime": "2026-05-31:05",
      "no2": 40,
      "o3": 19.5,
      "pm10": 5.6,
      "pm25": 5,
      "so2": 6,
      "timestamp_local": "2026-05-31T01:00:00",
      "timestamp_utc": "2026-05-31T05:00:00",
      "ts": 1780203600
    },
    {
      "aqi": 19,
      "co": 343,
      "datetime": "2026-05-31:04",
      "no2": 136,
      "o3": 1.1,
      "pm10": 5,
      "pm25": 4.5,
      "so2": 8,
      "timestamp_local": "2026-05-31T00:00:00",
      "timestamp_utc": "2026-05-31T04:00:00",
      "ts": 1780200000
    },
    {
      "aqi": 19,
      "co": 51.9,
      "datetime": "2026-05-31:03",
      "no2": 25,
      "o3": 42,
      "pm10": 4.6,
      "pm25": 3.8,
      "so2": 4,
      "timestamp_local": "2026-05-30T23:00:00",
      "timestamp_utc": "2026-05-31T03:00:00",
      "ts": 1780196400
    },
    {
      "aqi": 25,
      "co": 50,
      "datetime": "2026-05-31:02",
      "no2": 18.7,
      "o3": 53,
      "pm10": 3,
      "pm25": 2.5,
      "so2": 3.3,
      "timestamp_local": "2026-05-30T22:00:00",
      "timestamp_utc": "2026-05-31T02:00:00",
      "ts": 1780192800
    },
    {
      "aqi": 30,
      "co": 48,
      "datetime": "2026-05-31:01",
      "no2": 12.3,
      "o3": 64,
      "pm10": 2,
      "pm25": 2,
      "so2": 2.7,
      "timestamp_local": "2026-05-30T21:00:00",
      "timestamp_utc": "2026-05-31T01:00:00",
      "ts": 1780189200
    },
    {
      "aqi": 35,
      "co": 46.1,
      "datetime": "2026-05-31:00",
      "no2": 6,
      "o3": 75,
      "pm10": 4.3,
      "pm25": 3,
      "so2": 2,
      "timestamp_local": "2026-05-30T20:00:00",
      "timestamp_utc": "2026-05-31T00:00:00",
      "ts": 1780185600
    },
    {
      "aqi": 36,
      "co": 45.1,
      "datetime": "2026-05-30:23",
      "no2": 5,
      "o3": 77.3,
      "pm10": 3.2,
      "pm25": 2.4,
      "so2": 2,
      "timestamp_local": "2026-05-30T19:00:00",
      "timestamp_utc": "2026-05-30T23:00:00",
      "ts": 1780182000
    },
    {
      "aqi": 37,
      "co": 44.2,
      "datetime": "2026-05-30:22",
      "no2": 4,
      "o3": 79.7,
      "pm10": 2.5,
      "pm25": 2.25,
      "so2": 2,
      "timestamp_local": "2026-05-30T18:00:00",
      "timestamp_utc": "2026-05-30T22:00:00",
      "ts": 1780178400
    },
    {
      "aqi": 38,
      "co": 43.2,
      "datetime": "2026-05-30:21",
      "no2": 3,
      "o3": 82,
      "pm10": 1,
      "pm25": 1,
      "so2": 2,
      "timestamp_local": "2026-05-30T17:00:00",
      "timestamp_utc": "2026-05-30T21:00:00",
      "ts": 1780174800
    },
    {
      "aqi": 37,
      "co": 43,
      "datetime": "2026-05-30:20",
      "no2": 2.7,
      "o3": 81,
      "pm10": 1.5,
      "pm25": 1.5,
      "so2": 2,
      "timestamp_local": "2026-05-30T16:00:00",
      "timestamp_utc": "2026-05-30T20:00:00",
      "ts": 1780171200
    },
    {
      "aqi": 37,
      "co": 42.8,
      "datetime": "2026-05-30:19",
      "no2": 2.3,
      "o3": 80,
      "pm10": 1,
      "pm25": 1,
      "so2": 2,
      "timestamp_local": "2026-05-30T15:00:00",
      "timestamp_utc": "2026-05-30T19:00:00",
      "ts": 1780167600
    },
    {
      "aqi": 37,
      "co": 42.6,
      "datetime": "2026-05-30:18",
      "no2": 2,
      "o3": 79,
      "pm10": 1.5,
      "pm25": 1.5,
      "so2": 2,
      "timestamp_local": "2026-05-30T14:00:00",
      "timestamp_utc": "2026-05-30T18:00:00",
      "ts": 1780164000
    }
  ],
  "lat": 40.7306,
  "lon": -73.9352,
  "state_code": "NY",
  "timezone": "America/New_York"
}

HTTP Statuses

Code Description Example
200 Historical 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<AQHour>
data[].ts number Unix Timestamp
data[].timestamp_local string Timestamp in local time
data[].timestamp_utc string Timestamp UTC
data[].datetime string [DEPRECATED] Deprecated - use 'timestamp_utc'
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³)