Air Quality API logo
DatosMANTENIDA10 tokens / llamada

Air Quality API

Lecturas de PM2.5, ozono y AQI de EE. UU. de la estación más cercana a cualquier coordenada

Mediciones de calidad del aire más recientes — PM2.5, PM10, ozono, NO2, SO2, CO — de las estaciones de monitoreo gubernamentales más cercanas a cualquier coordenada, con la distancia a la estación y la marca de tiempo de cada lectura. Datos abiertos vía OpenAQ (CC BY 4.0).

Cada llamada necesita la cabecera X-Api-Key. Una clave gratuita incluye 500 tokens al mes, sin tarjeta. 10 tokens por llamada, así que el plan gratuito cubre unas 50 llamadas al mes.

Sin tarjeta de créditoAcceso a más de 125 APIsCancela cuando quieras
response.json
{
  "ok": true,
  "latitude": 40.71,
  "longitude": -74,
  "station": {
    "id": 664,
    "name": "Bklyn - PS274",
    "locality": "New York-Northern New Jersey-Long Island",
    "country": "US",
    "latitude": 40.694401,
    "longitude": -73.928596,
    "distance_km": 6.3,
    "provider": "AirNow",
    "reference_monitor": true,
    "mobile": false,
    "timezone": "America/New_York",
    "parameters": [
      "pm25"
    ],
    "last_updated": "2026-09-12T06:00:00Z",
    "active": true,
    "license": "US Public Domain",
    "attribution": "Unknown Governmental Organization"
  },
  "stale": false,
  "aqi_us": {
    "value": 33,
    "category": "Good",
    "dominant_pollutant": "pm25",
    "by_pollutant": {
      "pm25": 33
    },
    "note": "US EPA AQI computed from the latest particulate readings using the 24-hour breakpoints (2024 PM2.5 scale); gases are not included."
  },
  "measurements": [
    {
      "parameter": "pm25",
      "display_name": "PM2.5",
      "value": 5.9,
      "unit": "µg/m³",
      "last_updated": "2026-09-12T06:00:00Z",
      "age_hours": 0.6,
      "stale": false
    }
  ],
  "nearby_stations": [
    {
      "id": 662,
      "name": "Division Street",
      "distance_km": 0.6,
      "last_updated": "2020-02-19T16:00:00Z"
    },
    {
      "id": 642,
      "name": "PS 19",
      "distance_km": 2.6,
      "last_updated": "2017-12-18T10:00:00Z"
    },
    {
      "id": 648,
      "name": "Bklyn - PS 314",
      "distance_km": 7.7,
      "last_updated": "2026-09-12T06:00:00Z"
    },
    {
      "id": 628,
      "name": "Maspeth",
      "distance_km": 9.2,
      "last_updated": "2026-09-12T06:00:00Z"
    }
  ]
}
Listo para producción
Infraestructura probada en producción con un SLA de disponibilidad del 99,9 %. Límites de uso generosos y respuestas consistentes.
Integración sencilla
REST + JSON estándar. Funciona con cualquier cliente HTTP. Fragmentos de código listos para copiar en 4 lenguajes.
Una clave, más de 125 APIs
Tu suscripción a DataAndAPIs desbloquea todas las APIs de la plataforma: anime, finanzas, deportes y más.

Casos de uso de Air Quality API

  • Mostrar una insignia de calidad del aire en vivo y la categoría AQI de EE. UU. en una app de clima, running o ciclismo para la ubicación exacta del usuario.

  • Alertar a pacientes con asma o alergias cuando el PM2.5 o el ozono cerca de su casa supere un umbral, usando las marcas de tiempo por contaminante para omitir lecturas obsoletas.

  • Enriquecer anuncios inmobiliarios, páginas de viajes o guías de ciudades con la estación de monitoreo más cercana y sus últimas lecturas.

  • Construir un panel de estaciones gubernamentales y de investigación dentro de un radio, con distancia e indicador de monitor de referencia para cada una.

Endpoints de Air Quality API

Todos los endpoints con sus parámetros y una respuesta de ejemplo real.

GETData Sources

https://api-air-quality.dataandapis.com/v1/sources

Este endpoint no recibe parámetros.

Petición de ejemplo

curl "https://api-air-quality.dataandapis.com/v1/sources" \
  -H "X-Api-Key: YOUR_API_KEY"
Respuesta de ejemplo
{
  "ok": true,
  "sources": [
    {
      "name": "OpenAQ v3 API",
      "url": "https://docs.openaq.org",
      "provides": "Latest readings and metadata for government and research-grade monitoring stations worldwide.",
      "licensing": "Per originating agency — US Public Domain, CC0, CC BY, ODC-BY, UK OGL and similar attribution licences; non-commercial licences are excluded."
    }
  ],
  "attribution": {
    "source": "OpenAQ — government and research-grade air-quality monitoring stations",
    "source_url": "https://openaq.org",
    "note": "Each station carries the licence of its originating agency (see the station's license/attribution fields); stations whose licence forbids commercial use are excluded. Readings are edge-cached for up to 15 minutes; readings older than 24 hours are flagged stale."
  },
  "aqi": {
    "scale": "US EPA AQI",
    "url": "https://www.airnow.gov/aqi/aqi-basics/",
    "pollutants": [
      "pm25",
      "pm10"
    ]
  },
  "cache_seconds": 900,
  "stale_after_hours": 24
}

GETNearby Stations

https://api-air-quality.dataandapis.com/v1/stations

Parámetros de consulta

ParámetroEjemplo
lat40.71Obligatorio
limit5Opcional
lon-74.0Obligatorio
radius10Opcional

Petición de ejemplo

curl "https://api-air-quality.dataandapis.com/v1/stations?lat=40.71&limit=5&lon=-74.0&radius=10" \
  -H "X-Api-Key: YOUR_API_KEY"
Respuesta de ejemplo
{
  "ok": true,
  "latitude": 40.71,
  "longitude": -74,
  "radius_km": 10,
  "count": 5,
  "stations": [
    {
      "id": 662,
      "name": "Division Street",
      "locality": null,
      "country": "US",
      "latitude": 40.7142,
      "longitude": -73.995,
      "distance_km": 0.6,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2020-02-19T16:00:00Z",
      "active": false,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    },
    {
…
Ver la respuesta completa
{
  "ok": true,
  "latitude": 40.71,
  "longitude": -74,
  "radius_km": 10,
  "count": 5,
  "stations": [
    {
      "id": 662,
      "name": "Division Street",
      "locality": null,
      "country": "US",
      "latitude": 40.7142,
      "longitude": -73.995,
      "distance_km": 0.6,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2020-02-19T16:00:00Z",
      "active": false,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    },
    {
      "id": 642,
      "name": "PS 19",
      "locality": null,
      "country": "US",
      "latitude": 40.73,
      "longitude": -73.984459,
      "distance_km": 2.6,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2017-12-18T10:00:00Z",
      "active": false,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    },
    {
      "id": 664,
      "name": "Bklyn - PS274",
      "locality": "New York-Northern New Jersey-Long Island",
      "country": "US",
      "latitude": 40.694401,
      "longitude": -73.928596,
      "distance_km": 6.3,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2026-09-12T06:00:00Z",
      "active": true,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    },
    {
      "id": 648,
      "name": "Bklyn - PS 314",
      "locality": "KINGS",
      "country": "US",
      "latitude": 40.641819,
      "longitude": -74.018707,
      "distance_km": 7.7,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2026-09-12T06:00:00Z",
      "active": true,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    },
    {
      "id": 628,
      "name": "Maspeth",
      "locality": "New York-Northern New Jersey-Long Island",
      "country": "US",
      "latitude": 40.7269,
      "longitude": -73.8933,
      "distance_km": 9.2,
      "provider": "AirNow",
      "reference_monitor": true,
      "mobile": false,
      "timezone": "America/New_York",
      "parameters": [
        "pm25"
      ],
      "last_updated": "2026-09-12T06:00:00Z",
      "active": true,
      "license": "US Public Domain",
      "attribution": "Unknown Governmental Organization"
    }
  ]
}

GETNearest Readings

https://api-air-quality.dataandapis.com/v1/air-quality

Parámetros de consulta

ParámetroEjemplo
lat40.71Obligatorio
lon-74.0Obligatorio
radius25Opcional

Petición de ejemplo

curl "https://api-air-quality.dataandapis.com/v1/air-quality?lat=40.71&lon=-74.0&radius=25" \
  -H "X-Api-Key: YOUR_API_KEY"
Respuesta de ejemplo
{
  "ok": true,
  "latitude": 40.71,
  "longitude": -74,
  "station": {
    "id": 664,
    "name": "Bklyn - PS274",
    "locality": "New York-Northern New Jersey-Long Island",
    "country": "US",
    "latitude": 40.694401,
    "longitude": -73.928596,
    "distance_km": 6.3,
    "provider": "AirNow",
    "reference_monitor": true,
    "mobile": false,
    "timezone": "America/New_York",
    "parameters": [
      "pm25"
    ],
    "last_updated": "2026-09-12T06:00:00Z",
    "active": true,
    "license": "US Public Domain",
    "attribution": "Unknown Governmental Organization"
  },
  "stale": false,
  "aqi_us": {
    "value": 33,
    "category": "Good",
…
Ver la respuesta completa
{
  "ok": true,
  "latitude": 40.71,
  "longitude": -74,
  "station": {
    "id": 664,
    "name": "Bklyn - PS274",
    "locality": "New York-Northern New Jersey-Long Island",
    "country": "US",
    "latitude": 40.694401,
    "longitude": -73.928596,
    "distance_km": 6.3,
    "provider": "AirNow",
    "reference_monitor": true,
    "mobile": false,
    "timezone": "America/New_York",
    "parameters": [
      "pm25"
    ],
    "last_updated": "2026-09-12T06:00:00Z",
    "active": true,
    "license": "US Public Domain",
    "attribution": "Unknown Governmental Organization"
  },
  "stale": false,
  "aqi_us": {
    "value": 33,
    "category": "Good",
    "dominant_pollutant": "pm25",
    "by_pollutant": {
      "pm25": 33
    },
    "note": "US EPA AQI computed from the latest particulate readings using the 24-hour breakpoints (2024 PM2.5 scale); gases are not included."
  },
  "measurements": [
    {
      "parameter": "pm25",
      "display_name": "PM2.5",
      "value": 5.9,
      "unit": "µg/m³",
      "last_updated": "2026-09-12T06:00:00Z",
      "age_hours": 0.6,
      "stale": false
    }
  ],
  "nearby_stations": [
    {
      "id": 662,
      "name": "Division Street",
      "distance_km": 0.6,
      "last_updated": "2020-02-19T16:00:00Z"
    },
    {
      "id": 642,
      "name": "PS 19",
      "distance_km": 2.6,
      "last_updated": "2017-12-18T10:00:00Z"
    },
    {
      "id": 648,
      "name": "Bklyn - PS 314",
      "distance_km": 7.7,
      "last_updated": "2026-09-12T06:00:00Z"
    },
    {
      "id": 628,
      "name": "Maspeth",
      "distance_km": 9.2,
      "last_updated": "2026-09-12T06:00:00Z"
    }
  ]
}

GETPollutant Parameters

https://api-air-quality.dataandapis.com/v1/parameters

Este endpoint no recibe parámetros.

Petición de ejemplo

curl "https://api-air-quality.dataandapis.com/v1/parameters" \
  -H "X-Api-Key: YOUR_API_KEY"
Respuesta de ejemplo
{
  "ok": true,
  "count": 44,
  "parameters": [
    {
      "code": "bc",
      "display_name": "BC",
      "unit": "µg/m³",
      "description": "Black Carbon mass concentration"
    },
    {
      "code": "bc_370",
      "display_name": "BC 370nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 375nm "
    },
    {
      "code": "bc_375",
      "display_name": "BC 375nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 375nm "
    },
    {
      "code": "bc_470",
      "display_name": "BC 470nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 470nm "
    },
…
Ver la respuesta completa
{
  "ok": true,
  "count": 44,
  "parameters": [
    {
      "code": "bc",
      "display_name": "BC",
      "unit": "µg/m³",
      "description": "Black Carbon mass concentration"
    },
    {
      "code": "bc_370",
      "display_name": "BC 370nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 375nm "
    },
    {
      "code": "bc_375",
      "display_name": "BC 375nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 375nm "
    },
    {
      "code": "bc_470",
      "display_name": "BC 470nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 470nm "
    },
    {
      "code": "bc_528",
      "display_name": "BC 528nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 528nm "
    },
    {
      "code": "bc_625",
      "display_name": "BC 625nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 625nm "
    },
    {
      "code": "bc_880",
      "display_name": "BC 880nm",
      "unit": "ng/m³",
      "description": "Black Carbon mass concentration 880nm "
    },
    {
      "code": "ch4",
      "display_name": "CH₄",
      "unit": "ppm",
      "description": "Methane concentration"
    },
    {
      "code": "co",
      "display_name": "CO mass",
      "unit": "µg/m³",
      "description": "Carbon Monoxide mass concentration"
    },
    {
      "code": "co",
      "display_name": "CO",
      "unit": "ppm",
      "description": "Carbon Monoxide concentration"
    },
    {
      "code": "co",
      "display_name": "CO",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "co2",
      "display_name": "CO₂",
      "unit": "ppm",
      "description": "Carbon Dioxide concentration"
    },
    {
      "code": "humidity",
      "display_name": "H",
      "unit": "%",
      "description": null
    },
    {
      "code": "no",
      "display_name": "NO",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "no",
      "display_name": "NO",
      "unit": "ppm",
      "description": "Nitrogen Monoxide concentration"
    },
    {
      "code": "no",
      "display_name": "NO mass",
      "unit": "µg/m³",
      "description": "Nitrogen Monoxide mass concentration"
    },
    {
      "code": "no2",
      "display_name": "NO₂ mass",
      "unit": "µg/m³",
      "description": "Nitrogen Dioxide mass concentration"
    },
    {
      "code": "no2",
      "display_name": "NO₂",
      "unit": "ppm",
      "description": "Nitrogen Dioxide concentration"
    },
    {
      "code": "no2",
      "display_name": "NO₂",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "nox",
      "display_name": "NOX",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "nox",
      "display_name": "NOx mass",
      "unit": "µg/m³",
      "description": "Nitrogen Oxides mass concentration"
    },
    {
      "code": "nox",
      "display_name": "NOx",
      "unit": "ppm",
      "description": "Nitrogen Oxides concentration"
    },
    {
      "code": "o3",
      "display_name": "O₃ mass",
      "unit": "µg/m³",
      "description": "Ozone mass concentration"
    },
    {
      "code": "o3",
      "display_name": "O₃",
      "unit": "ppm",
      "description": "Ozone concentration"
    },
    {
      "code": "o3",
      "display_name": "O₃",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "pm1",
      "display_name": "PM1",
      "unit": "µg/m³",
      "description": "Particulate matter less than 1 micrometer in diameter mass concentration"
    },
    {
      "code": "pm10",
      "display_name": "PM10",
      "unit": "µg/m³",
      "description": "Particulate matter less than 10 micrometers in diameter mass concentration"
    },
    {
      "code": "pm25",
      "display_name": "PM2.5",
      "unit": "µg/m³",
      "description": "Particulate matter less than 2.5 micrometers in diameter mass concentration"
    },
    {
      "code": "pm4",
      "display_name": "PM4.0",
      "unit": "µg/m³",
      "description": "Particulate matter less than 4 micrometers in diameter mass concentration"
    },
    {
      "code": "pressure",
      "display_name": "Atmospheric pressure",
      "unit": "hpa",
      "description": "Atmospheric or barometric pressure"
    },
    {
      "code": "pressure",
      "display_name": "Pressure",
      "unit": "mb",
      "description": null
    },
    {
      "code": "relativehumidity",
      "display_name": "RH",
      "unit": "%",
      "description": null
    },
    {
      "code": "so2",
      "display_name": "SO₂ mass",
      "unit": "µg/m³",
      "description": "Sulfur Dioxide mass concentration"
    },
    {
      "code": "so2",
      "display_name": "SO₂",
      "unit": "ppm",
      "description": "Sulfur Dioxide concentration"
    },
    {
      "code": "so2",
      "display_name": "SO₂",
      "unit": "ppb",
      "description": null
    },
    {
      "code": "temperature",
      "display_name": "Temperature (C)",
      "unit": "c",
      "description": null
    },
    {
      "code": "temperature",
      "display_name": "Temperature (F)",
      "unit": "f",
      "description": null
    },
    {
      "code": "ufp",
      "display_name": "UFP count",
      "unit": "particles/cm³",
      "description": "Ultrafine Particles count concentration"
    },
    {
      "code": "um003",
      "display_name": "PM0.3 count",
      "unit": "particles/cm³",
      "description": null
    },
    {
      "code": "um010",
      "display_name": "PM1 count",
      "unit": "particles/cm³",
      "description": "PM1 count"
    },
    {
      "code": "um025",
      "display_name": "PM2.5 count",
      "unit": "particles/cm³",
      "description": "PM2.5 count"
    },
    {
      "code": "um100",
      "display_name": "PM10 count",
      "unit": "particles/cm³",
      "description": "PM10 count"
    },
    {
      "code": "wind_direction",
      "display_name": "Wind direction",
      "unit": "deg",
      "description": "Direction that the wind originates from"
    },
    {
      "code": "wind_speed",
      "display_name": "Wind speed",
      "unit": "m/s",
      "description": "Average wind speed in meters per second"
    }
  ]
}

GETStation Detail

https://api-air-quality.dataandapis.com/v1/stations/{id}

Parámetros de ruta

ParámetroEjemplo
id664Obligatorio

Petición de ejemplo

curl "https://api-air-quality.dataandapis.com/v1/stations/664" \
  -H "X-Api-Key: YOUR_API_KEY"
Respuesta de ejemplo
{
  "ok": true,
  "station": {
    "id": 664,
    "name": "Bklyn - PS274",
    "locality": "New York-Northern New Jersey-Long Island",
    "country": "US",
    "latitude": 40.694401,
    "longitude": -73.928596,
    "distance_km": null,
    "provider": "AirNow",
    "reference_monitor": true,
    "mobile": false,
    "timezone": "America/New_York",
    "parameters": [
      "pm25"
    ],
    "last_updated": "2026-09-12T05:00:00Z",
    "active": true,
    "license": "US Public Domain",
    "attribution": "Unknown Governmental Organization",
    "first_reading": "2016-03-10T08:00:00Z"
  },
  "stale": false,
  "aqi_us": {
    "value": 33,
    "category": "Good",
    "dominant_pollutant": "pm25",
…
Ver la respuesta completa
{
  "ok": true,
  "station": {
    "id": 664,
    "name": "Bklyn - PS274",
    "locality": "New York-Northern New Jersey-Long Island",
    "country": "US",
    "latitude": 40.694401,
    "longitude": -73.928596,
    "distance_km": null,
    "provider": "AirNow",
    "reference_monitor": true,
    "mobile": false,
    "timezone": "America/New_York",
    "parameters": [
      "pm25"
    ],
    "last_updated": "2026-09-12T05:00:00Z",
    "active": true,
    "license": "US Public Domain",
    "attribution": "Unknown Governmental Organization",
    "first_reading": "2016-03-10T08:00:00Z"
  },
  "stale": false,
  "aqi_us": {
    "value": 33,
    "category": "Good",
    "dominant_pollutant": "pm25",
    "by_pollutant": {
      "pm25": 33
    },
    "note": "US EPA AQI computed from the latest particulate readings using the 24-hour breakpoints (2024 PM2.5 scale); gases are not included."
  },
  "measurements": [
    {
      "parameter": "pm25",
      "display_name": "PM2.5",
      "value": 5.9,
      "unit": "µg/m³",
      "last_updated": "2026-09-12T06:00:00Z",
      "age_hours": 0.6,
      "stale": false
    }
  ]
}

De dónde salen los datos

Fuente
Agregación de OpenAQ de estaciones de monitoreo gubernamentales y de grado de investigación (AirNow, EEA, DEFRA y otras), cada una bajo su propia licencia abierta. Se excluyen las estaciones no comerciales.
Actualización
Lecturas en vivo, en caché en el borde durante 15 minutos. Marcas de tiempo por contaminante e indicador de obsolescencia en cada respuesta.

Una instalación. Todos los endpoints.

No necesitas SDKs propietarios. Funciona con cualquier cliente HTTP. Elige tu lenguaje y pega el código.

3lenguajes
5endpoints
RESTarquitectura
1clave para todas las APIs
  • Respuestas totalmente tipadas — autocompletado en tu IDE
  • Sigue la API al día — los nuevos endpoints llegan el mismo día
  • Una sola clave funciona en más de 125 APIs de la plataforma
import axios from 'axios';

const { data } = await axios.get(
  'https://api-air-quality.dataandapis.com/v1/sources',
  { headers: { 'X-Api-Key': process.env.API_KEY } }
);

Air Quality API · X-Api-Key

Explora los endpoints

Explora los parámetros de solicitud e inspecciona ejemplos de respuesta en vivo.

Endpoints disponibles

Parámetros de la solicitud

URL de la API

Encabezados

X-Api-Key
import axios from 'axios';

const url = 'https://api-air-quality.dataandapis.com/v1/sources';
const { data } = await axios.get(url, {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' }
});

Una suscripción. Todas las APIs.

Los tokens desbloquean esta API y más de 20 más en DataAndAPIs. Cambia de API cuando quieras.

GRATIS

$0/mes

500 tokens / mes

  • Acceso a todas las APIs
  • Tokens se renuevan mensualmente
  • Soporte comunitario
Comienza gratis
Más Popular

STARTER

$6.99/mes

25.000 tokens / mes

  • Acceso a todas las APIs
  • Tokens se renuevan mensualmente
  • Soporte por email
Suscribirse

PRO

$24.99/mes

100.000 tokens / mes

  • Acceso a todas las APIs
  • Tokens se renuevan mensualmente
  • Soporte por email prioritario
Suscribirse

ULTRA

$99.99/mes

1.000.000 tokens / mes

  • Acceso a todas las APIs
  • Tokens se renuevan mensualmente
  • Soporte prioritario
Suscribirse

¿Necesitas mayor volumen, infraestructura dedicada o un contrato personalizado? Habla con ventas →

Preguntas sobre Air Quality API

Lanza Air Quality API esta tarde.

500 tokens gratis. Sin tarjeta. Y más de 125 APIs más con la misma clave.