Справочник API качества воздуха

Общие сведения

Публичные read-only эндпоинты в формате JSON. Базовый путь: https://airquality.am/{locale}/air-quality-app/v1/, где {locale}en, ru или hy. Допустим только метод GET. Ответы в кодировке application/json; charset=utf-8.

Передавайте осмысленный заголовок User-Agent (название приложения или проекта). В примерах на этой странице используется docs-example. API можно использовать для личных виджетов, интеграций и других продуктов. При публикации в открытый доступ укажите airquality.am как источник данных. Файловые выгрузки и лицензирование описаны на странице открытых данных (см. также readme.txt и DbCL для файлов).

Справочник полей

Provider

Объект в массиве providers[] в ответе stations.json.

ПолеТипОписание
idstringСлаг провайдера (например в поле Station.provider)
titlestringНазвание провайдера для отображения
urlstringСсылка на страницу провайдера на сайте или пустая строка
imagestringURL иконки для светлой темы
image_darkstringURL иконки для тёмной темы

Station

Объект в stations[] или единственный объект ответа station/{id}.json.

ПолеТипОписание
idintegerИдентификатор станции
statusstringСтрока статуса (например online, offline)
titlestringАдрес или название точки на языке запроса
citystring|nullГород или null
city_slugstring|nullСлаг города для URL или null
districtstring|nullРайон или null
district_slugstring|nullСлаг района или null
latitudenumberШирота в десятичных градусах (WGS-84)
longitudenumberДолгота в десятичных градусах (WGS-84)
is_bad_thpbooleanПодозрительные температура/влажность/давление
measurement_timestring|nullВремя последнего измерения (ISO 8601) или null при офлайне
temperaturenumber|null°C (среднее за час)
humiditynumber|nullОтносительная влажность %
pressurenumber|nullАтмосферное давление в паскалях (Па), целое число; для гектопаскалей разделить на 100
aqiinteger|nullUS EPA AQI по последнему часовому среднему
pm2.5number|nullPM2.5 µg/m³ (скорректированное при наличии)
pm2.5_rawnumber|nullСырое PM2.5 µg/m³
pm10number|nullPM10 µg/m³
pm1number|nullPM1 µg/m³
wind_speednumber|nullСкорость ветра (м/с)
wind_directionstring|nullНаправление ветра (например N, NE)
uvnumber|nullУФ-индекс
rainnumber|nullОсадки (мм)
no2number|nullNO₂ (ppb)
so2number|nullSO₂ µg/m³
o3number|nullO₃ µg/m³
dustnumber|nullПыль (PM) µg/m³
usvhnumber|nullМощность дозы (µSv/h)
luxnullЗарезервировано; сейчас всегда null
providerstringСлаг провайдера (см. Provider.id)
urlstringКанонический URL страницы станции на airquality.am

Region (город)

Объекты в regions[] для города или ответ region/{slug}.json, если slug — город.

ПолеТипОписание
slugstringСлаг города
titlestringНазвание города на языке запроса
measurement_timestring|nullВремя для используемой сводки (ISO 8601) или null
temperaturenumber|null°C (агрегировано)
humiditynumber|nullОтносительная влажность %
pressurenumber|nullКак у станции: в паскалях (Па); для гПа разделить на 100
aqiinteger|nullUS EPA AQI
pm2.5number|nullPM2.5 µg/m³
pm10number|nullPM10 µg/m³
no2number|nullNO₂ ppb
urlstringСтраница города на airquality.am
map_latitudenumberШирота центра карты (десятичные градусы)
map_longitudenumberДолгота центра карты (десятичные градусы)
map_deltanumberПараметр масштаба карты
is_hiddenbooleanСкрыт ли город в части списков

Region (район)

Те же поля, что у Region (город) для показаний и карты, с отличиями: slug — слаг района; title — название района; дополнительно city и city_slug — родительский город. У района нет поля is_hidden.

HistoryPoint

Один элемент массивов внутри 24h, 7d, 30d, 1y, 2y в ответах истории. Массив может быть пустым [], если за окно нет данных (например станция офлайн). Отдельные поля могут быть null.

История станции содержит avg_pm25_raw. История региона — поле station_count вместо него (без avg_pm25_raw).

В почасовых рядах (24h, 7d) обычно нет полей min_* / max_*; в суточных точках 30d есть и массивы range_*, и отдельные min_* / max_*.

ПолеТипОписание
timestampstringНачало интервала (ISO 8601)
avg_temperaturenumber|null°C
avg_humiditynumber|nullОтносительная влажность %
avg_pressurenumber|nullКак у текущих показаний: в паскалях (Па); для гПа разделить на 100
avg_pm25number|nullPM2.5 µg/m³
avg_pm10number|nullPM10 µg/m³
avg_pm25_rawnumber|nullСырое PM2.5 µg/m³ (только история станции)
avg_no2number|nullNO₂ ppb
avg_usvhnumber|nullМощность дозы µSv/h
avg_dustnumber|nullПыль (PM) µg/m³
avg_so2number|nullSO₂ µg/m³
avg_o3number|nullO₃ µg/m³
avg_wind_directionnumber|nullНаправление ветра (градусы по часовой стрелке от севера)
avg_wind_speednumber|nullСкорость ветра (м/с)
total_rainnumber|nullОсадки за интервал (мм), если применимо
station_countnumber|nullОценка числа станций в среднем (только история региона)
range_temperature[number, number]|null[min, max] °C для суточных и более крупных интервалов, когда есть
range_pm25[number, number]|null[min, max] PM2.5 µg/m³
range_pm10[number, number]|null[min, max] PM10 µg/m³
range_dust[number, number]|null[min, max] пыль (PM) µg/m³
range_wind_speed[number, number]|null[min, max] скорость ветра (м/с)
range_aqi[integer, integer]|null[min, max] US EPA AQI за интервал
aqiinteger|nullUS EPA AQI
min_temperature, max_temperaturenumber|nullСуточные и подобные интервалы: экстремумы °C; часто в 30d, обычно нет в почасовых 24h/7d
min_pm25, max_pm25, min_pm10, max_pm10number|nullТот же принцип интервалов; значения в µg/m³
min_no2, max_no2number|nullТот же принцип интервалов; значения в ppb
min_dust, max_dustnumber|nullТот же принцип интервалов; пыль (PM) µg/m³
min_wind_speed, max_wind_speednumber|nullТот же принцип интервалов; значения в м/с

min_* / max_* соответствуют концам интервалов из range_*, когда оба присутствуют.

Эндпоинты

Вместо https://airquality.am/en/... можно подставить ru или hy. Во всех примерах:

curl -sS -H 'User-Agent: docs-example' 'URL'

GET /v1/stations.json

Ответ: { "providers": [...], "stations": [...], "regions": [...] }. В списке станций только видимые, не принудительно скрытые.

curl -sS -H 'User-Agent: docs-example' 'https://airquality.am/en/air-quality-app/v1/stations.json'

GET /v1/station/{id}.json

Один объект Station. 404, если станции нет.

curl -sS -H 'User-Agent: docs-example' 'https://airquality.am/en/air-quality-app/v1/station/1.json'

GET /v1/station/{id}-history.json

Объект с пятью массивами HistoryPoint: 24h (почасово), 7d (почасово), 30d (по дням), 1y (по месяцам), 2y (по месяцам). В примере — станция 126 (на момент проверки есть почасовые данные); у офлайн-станции массивы могут быть пустыми.

curl -sS -H 'User-Agent: docs-example' 'https://airquality.am/en/air-quality-app/v1/station/126-history.json'

GET /v1/region/{slug}.json

Один объект Region (город или район). slug — латиница в нижнем регистре и дефисы (например yerevan). 404, если не найден.

curl -sS -H 'User-Agent: docs-example' 'https://airquality.am/en/air-quality-app/v1/region/yerevan.json'

GET /v1/region/{slug}-history.json

Те же пять ключей, что у истории станции; для региона в точках есть station_count.

curl -sS -H 'User-Agent: docs-example' 'https://airquality.am/en/air-quality-app/v1/region/yerevan-history.json'