Référence de l’API
Historique
Les moyennes journalières d’une ville pour toute période depuis 2017 et tout son historique par mois, avec les moyennes annuelles et les records.
Historique journalier
GEThttps://api.atmy.ai/v1/air-quality/history
Les moyennes journalières du Data Hub (UTC) : les derniers jours avec days=, ou toute période depuis 2017 avec from= et to=, 400 jours au plus par requête ; un jour avec trop peu de capteurs est absent. À partir du 2026-01-19, chaque jour comporte aussi sa météo : température moyenne, minimale et maximale, humidité, pression, vent, rafale la plus forte et nébulosité.
Paramètres de requête
city string facultatif
Nom de la ville dans l’une des langues du site, slug (pays/ville) ou id.
country string facultatif
Nom ou slug du pays, pour distinguer des villes de même nom.
days integer facultatif
Nombre de jours en arrière depuis le dernier jour complet ; ignoré avec from et to.
Par défaut: 30
from date facultatif
Premier jour (UTC), 2017-01-01 ou après.
to date facultatif
Dernier jour (UTC) ; par défaut le dernier jour complet. Au plus 400 jours par requête.
lang string facultatif
Langue des noms de ville et de pays et du lien vers la page.
Par défaut: en
curl "https://api.atmy.ai/v1/air-quality/history?city=germany/berlin&days=30"const response = await fetch("https://api.atmy.ai/v1/air-quality/history?city=germany/berlin&days=30");
const data = await response.json();import requests
data = requests.get("https://api.atmy.ai/v1/air-quality/history?city=germany/berlin&days=30").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/"
},
"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."
}Historique mensuel
GEThttps://api.atmy.ai/v1/air-quality/history/monthly
Tout l’historique des mesures d’une ville par mois : moyennes annuelles (années complètes signalées), mois et jours les plus pollués et les plus propres. Les valeurs fondées sur les moyennes journalières du réseau de capteurs lui-même sont signalées. À partir de janvier 2026, chaque mois comporte aussi sa météo.
Paramètres de requête
city string facultatif
Nom de la ville dans l’une des langues du site, slug (pays/ville) ou id.
country string facultatif
Nom ou slug du pays, pour distinguer des villes de même nom.
lang string facultatif
Langue des noms de ville et de pays et du lien vers la page.
Par défaut: en
curl "https://api.atmy.ai/v1/air-quality/history/monthly?city=germany/berlin"const response = await fetch("https://api.atmy.ai/v1/air-quality/history/monthly?city=germany/berlin");
const data = await response.json();import requests
data = requests.get("https://api.atmy.ai/v1/air-quality/history/monthly?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/"
},
"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."
}