Developers

API reference

History

Daily means of a city for any period since 2017, and its whole history by month with yearly means and records.

Daily history

GEThttps://api.atmy.ai/v1/air-quality/history

The Data Hub’s daily means (UTC): the last days with days=, or any period since 2017 with from= and to=, at most 400 days per request; a day with too few sensors is missing. From 2026-01-19 each day also carries its weather: mean, lowest and highest temperature, humidity, pressure, wind, strongest gust and cloud cover.

Query parameters

city string optional

City name in any of the site languages, slug (country/city) or id.

country string optional

Country name or slug, to tell apart cities with the same name.

days integer optional

Days back from the last completed day; ignored with from and to.

Default: 30

from date optional

First day (UTC), 2017-01-01 or later.

to date optional

Last day (UTC); by default the last completed day. At most 400 days a request.

lang string optional

Language of city and country names and of the page link.

Default: en

GET/air-quality/history?city=germany/berlin&days=30
curl "https://api.atmy.ai/v1/air-quality/history?city=germany/berlin&days=30"
200Response
{
  "city": {
    "id": 50037,
    "slug": "germany/berlin",
    "name": "Berlin",
    "country": "Germany",
    "timezone": "Europe/Berlin",
    "center": {
      "lat": 52.5073,
      "lon": 13.3979
    },
    "page": "https://atmy.ai/air-quality/germany/berlin/"
  },
  "unit": "ug/m3",
  "method": "datahub_daily",
  "period_timezone": "UTC",
  "category_scale": "US_EPA_2024",
  "from": "2026-10-24",
  "to": "2026-10-26",
  "available_since": "2017-01-01",
  "days": [
    {
      "date": "2026-10-24",
      "pm25": 3.4,
      "sensors": 172,
      "level": "good",
      "weather": {
        "temperature_c": 10.1,
        "temperature_min_c": 6.7,
        "temperature_max_c": 14.7,
        "humidity_percent": 71,
        "pressure_hpa": 1010,
        "wind_m_s": 4.3,
        "wind_gust_max_m_s": 12.7,
        "clouds_percent": 83,
        "observations": 7
      }
    },
    {
      "date": "2026-10-25",
      "pm25": 3.9,
      "sensors": 174,
      "level": "good",
      "weather": {
        "temperature_c": 9.8,
        "temperature_min_c": 7.2,
        "temperature_max_c": 14.6,
        "humidity_percent": 72,
        "pressure_hpa": 1002,
        "wind_m_s": 5,
        "wind_gust_max_m_s": 14.7,
        "clouds_percent": 86,
        "observations": 7
      }
    },
    {
      "date": "2026-10-26",
      "pm25": 4.6,
      "sensors": 176,
      "level": "good",
      "weather": {
        "temperature_c": 9,
        "temperature_min_c": 7.2,
        "temperature_max_c": 13.4,
        "humidity_percent": 73,
        "pressure_hpa": 1014,
        "wind_m_s": 3.2,
        "wind_gust_max_m_s": 11.2,
        "clouds_percent": 44,
        "observations": 7
      }
    }
  ],
  "weather_since": "2026-01-19",
  "weather_notes": "weather: means of the readings Atmy stored for the city on the UTC day (observations: how many); temperature_min_c and temperature_max_c are the lowest and highest the provider reported for the day; wind_gust_max_m_s the strongest gust. No precipitation sum: the readings are instants.",
  "weather_attribution": "Weather: OpenWeatherMap (to 2026-07-08, CC BY-SA 4.0) and Open-Meteo.com (from 2026-07-09, CC BY 4.0), collected by Atmy."
}

Monthly history

GEThttps://api.atmy.ai/v1/air-quality/history/monthly

The whole measurement history of a city by month: yearly means (complete years marked), the dirtiest and cleanest months and days. Values that rest on the daily means of the sensor network itself are marked. From January 2026 each month also carries its weather.

Query parameters

city string optional

City name in any of the site languages, slug (country/city) or id.

country string optional

Country name or slug, to tell apart cities with the same name.

lang string optional

Language of city and country names and of the page link.

Default: en

GET/air-quality/history/monthly?city=germany/berlin
curl "https://api.atmy.ai/v1/air-quality/history/monthly?city=germany/berlin"
200Response
{
  "city": {
    "id": 50037,
    "slug": "germany/berlin",
    "name": "Berlin",
    "country": "Germany",
    "timezone": "Europe/Berlin",
    "center": {
      "lat": 52.5073,
      "lon": 13.3979
    },
    "page": "https://atmy.ai/air-quality/germany/berlin/"
  },
  "unit": "ug/m3",
  "method": "datahub_monthly",
  "period_timezone": "UTC",
  "notes": "A month is the mean of its sensors; a sensor is the mean of its quality-checked days. Yearly means use months with data on at least half of their days; only complete years (12 months) compare as a whole. The number of sensors grew over the years, so comparisons are approximate. source_daily_days / source_daily_sensors: values that include the daily means of the sensor network itself where no hourly readings were kept. weather: means of the readings Atmy stored for the city in the month, its lowest and highest temperature.",
  "since": "2025-01",
  "months": [
    {
      "month": "2025-01",
      "pm25": 8.1,
      "sensors": 174,
      "days_with_data": 30,
      "days": 31
    },
    {
      "month": "2025-02",
      "pm25": 14.5,
      "sensors": 175,
      "days_with_data": 28,
      "days": 28
    }
  ],
  "years": [
    {
      "year": "2025",
      "pm25": 9,
      "months": 12,
      "complete": true
    },
    {
      "year": "2026",
      "pm25": 8.7,
      "months": 10,
      "complete": false
    }
  ],
  "dirtiest_months": [
    {
      "month": "2026-01",
      "pm25": 18.3,
      "sensors": 191,
      "days_with_data": 31,
      "days": 31
    },
    {
      "month": "2026-02",
      "pm25": 15.8,
      "sensors": 193,
      "days_with_data": 28,
      "days": 28
    }
  ],
  "cleanest_months": [
    {
      "month": "2026-09",
      "pm25": 4.5,
      "sensors": 205,
      "days_with_data": 30,
      "days": 30
    },
    {
      "month": "2026-06",
      "pm25": 5.1,
      "sensors": 195,
      "days_with_data": 30,
      "days": 30
    }
  ],
  "dirtiest_days": [
    {
      "date": "2026-01-23",
      "pm25": 40.3,
      "sensors": 183
    },
    {
      "date": "2025-02-13",
      "pm25": 35.5,
      "sensors": 162
    }
  ],
  "cleanest_days": [
    {
      "date": "2025-04-06",
      "pm25": 1.7,
      "sensors": 173
    },
    {
      "date": "2025-04-07",
      "pm25": 1.7,
      "sensors": 170
    }
  ],
  "weather_since": "2026-01-19",
  "weather_attribution": "Weather: OpenWeatherMap (to 2026-07-08, CC BY-SA 4.0) and Open-Meteo.com (from 2026-07-09, CC BY 4.0), collected by Atmy."
}