API 参考
历史
城市自 2017 年以来任意时段的每日平均值,以及按月的完整历史,包括年均值和纪录。
每日历史
GEThttps://api.atmy.ai/v1/air-quality/history
Data Hub的日均值(UTC):用days=获取最近的天数,或用from=和to=获取2017年以来的任意时段,每次请求最多400天;传感器太少的日期不包括在内。自 2026-01-19 起,每一天还包含当天的天气:平均、最低和最高气温、湿度、气压、风、最强阵风和云量。
查询参数
city string 可选
网站任一语言的城市名、slug(国家/城市)或 id。
country string 可选
国家名称或 slug,用于区分同名城市。
days integer 可选
从最近一个完整日往前的天数;指定 from 和 to 时忽略。
默认值: 30
from date 可选
第一天(UTC),2017-01-01 或之后。
to date 可选
最后一天(UTC);默认最近一个完整日。每次最多 400 天。
lang string 可选
城市和国家名称以及页面链接的语言。
默认值: en
GET/air-quality/history?city=germany/berlin&days=30
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()200响应
{
"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."
}月度历史
GEThttps://api.atmy.ai/v1/air-quality/history/monthly
城市全部测量历史的逐月数据:年均值(标明完整年份)、污染最重和最干净的月份与日期。基于传感器网络自身日均值的数值会被标注。自 2026 年 1 月起,每个月还包含当月的天气。
查询参数
city string 可选
网站任一语言的城市名、slug(国家/城市)或 id。
country string 可选
国家名称或 slug,用于区分同名城市。
lang string 可选
城市和国家名称以及页面链接的语言。
默认值: en
GET/air-quality/history/monthly?city=germany/berlin
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()200响应
{
"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."
}