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
curl "https://api.atmy.ai/v1/air-quality/current?city=germany/berlin"const response = await fetch("https://api.atmy.ai/v1/air-quality/current?city=germany/berlin");
const data = await response.json();import requests
data = requests.get("https://api.atmy.ai/v1/air-quality/current?city=germany/berlin").json(){
"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"
}
}