Developers

API reference

Air quality now

The current value (mean of the latest reading of each sensor, at most 60 minutes old, rebuilt every 15 minutes) and the last completed day as in the Data Hub, with the US EPA category, sensor networks and a link to the city page. It also gives the weather now (temperature, humidity, pressure, wind, clouds, precipitation) and the completed day's weather. Find a city by name in any of 25 languages, by slug or id, or by coordinates — the nearest city with a summary within 50 km. Add country= when two cities share a name.

Air quality now

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

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.

lat number optional

Latitude, with lon, instead of city: the nearest city with a summary within 50 km.

lon number optional

Longitude, with lat.

lang string optional

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

Default: en

GET/air-quality/current?city=germany/berlin
curl "https://api.atmy.ai/v1/air-quality/current?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/"
  },
  "now": {
    "status": "current",
    "pm25": 3.8,
    "median": 2.4,
    "min": 0,
    "max": 105.32,
    "unit": "ug/m3",
    "category": {
      "scale": "US_EPA_2024",
      "level": "good",
      "approximate": true
    },
    "sensors": 173,
    "observed": {
      "start": "2026-10-27T10:42:02.000Z",
      "end": "2026-10-27T10:53:14.000Z"
    },
    "updated_at": "2026-10-27T11:00:01.147Z",
    "method": "mean_of_latest_reading_per_sensor_at_most_60_minutes_old"
  },
  "weather": {
    "observed_at": "2026-10-27T11:07:04Z",
    "temperature_c": 14,
    "feels_like_c": 11,
    "humidity_percent": 62,
    "pressure_hpa": 1020,
    "wind_m_s": 3,
    "wind_gust_m_s": 8,
    "wind_direction_deg": 185,
    "clouds_percent": 90,
    "precipitation_mm": 0,
    "condition": "cloudy"
  },
  "completed_day": {
    "date": "2026-10-26",
    "period": "2026-10-26T00:00:00Z/2026-10-27T00:00:00Z",
    "pm25": 4.6,
    "unit": "ug/m3",
    "sensors": 176,
    "category": {
      "scale": "US_EPA_2024",
      "level": "good"
    },
    "method": "datahub_daily",
    "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
    }
  },
  "attribution": "Atmy (atmy.ai), aggregated public and citizen sensor networks; approximate values, not official monitoring.",
  "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.",
  "sources": {
    "networks": {
      "Sensor.Community": 169,
      "AirGradient": 4
    },
    "methodology": "https://api.atmy.ai/air-quality/methodology",
    "license": "https://api.atmy.ai/legal/data",
    "city_json": "https://api.atmy.ai/api/public/v1/cities/germany/berlin/air-quality"
  }
}