canonical: https://jentic.com/apis/airnowapi.org/airnow

# AirNow API

Jentic publishes the only available OpenAPI specification for AirNow API, keeping it validated and agent-ready. AirNow is the U.S. EPA's source for real-time and forecast air quality data covering Air Quality Index (AQI) observations across the United States. The API exposes current AQI readings, daily forecasts, and historical observations queryable by zip code, latitude/longitude, or monitoring site. Coverage spans pollutants including ozone, PM2.5, PM10, CO, NO2, and SO2, with data sourced from federal, state, local, and tribal monitoring networks.

## For AI agents

Look up real-time U.S. air quality readings, AQI forecasts, and historical observations by zip code or geographic coordinates from the EPA's AirNow network.

## Scope

Does not handle weather forecasts, pollen counts, or international air quality outside U.S. partner networks - use for U.S. AQI and pollutant readings only.

## Capabilities

- Fetch current AQI observations for a zip code via /aq/observation/zipCode/current
- Retrieve current readings for any latitude/longitude pair within the AirNow coverage area
- Pull next-day AQI forecasts for ozone and PM2.5 by location
- Look up readings from a specific monitoring site by ID
- Query historical AQI observations by zip code over a date range
- Filter responses by distance radius around a coordinate to find the nearest reporting station

## Use cases

### Real-Time Air Quality Lookup

Surface live Air Quality Index readings for any U.S. zip code or coordinate so apps can warn users about unhealthy conditions before outdoor activity. AirNow aggregates observations from EPA, NOAA, NPS, and tribal sensors into a single AQI scale covering ozone, PM2.5, PM10, CO, NO2, and SO2. A single GET to /aq/observation/zipCode/current returns the dominant pollutant, AQI value, and category label in under a second.

Example prompt: Get the current AQI observation for zip code 94103 and return the dominant pollutant and AQI category

### Air Quality Forecast Notifications

Alert users a day in advance when forecast AQI is expected to exceed a threshold. The /aq/forecast/zipCode and /aq/forecast/latLong endpoints return next-day predicted AQI for ozone and PM2.5 with category bands such as Moderate, Unhealthy for Sensitive Groups, and Unhealthy. Useful for asthma management apps, school activity planning, and wildfire smoke advisories.

Example prompt: Fetch the next-day AQI forecast for latitude 37.78, longitude -122.42 and trigger an alert if any pollutant exceeds AQI 100

### Historical Air Quality Analysis

Pull historical AQI observations over a date range to back-test exposure models, build air quality dashboards, or correlate pollution with health outcomes. The /aq/data endpoint supports time-bounded queries by zip code or bounding box and returns hourly or daily aggregated readings. Coverage extends across all U.S. states and territories with monitoring stations.

Example prompt: Retrieve daily PM2.5 observations for zip code 90001 from 2026-01-01 to 2026-03-31 and compute the monthly average

### Agent Air Quality Lookup via Jentic

Agents discover AirNow operations through a natural-language Jentic search and execute structured GET calls without managing the API_KEY query parameter directly. Jentic stores the AirNow API key in its credential vault so agents receive scoped tokens at runtime. Typical end-to-end search-load-execute time for a current observation lookup is under 200 ms.

Example prompt: Search Jentic for 'check current air quality by zip code', load the AirNow operation schema, and execute it for zip code 10001

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /aq/observation/zipCode/current | Current AQI observations by zip code |
| GET | /aq/observation/latLong/current | Current observations by latitude/longitude |
| GET | /aq/observation/monitoringSite/current | Current observations from a specific monitoring site |
| GET | /aq/forecast/zipCode | Next-day AQI forecast by zip code |
| GET | /aq/forecast/latLong | Next-day AQI forecast by coordinate |
| GET | /aq/data | Historical AQI observations by zip code |

## Key resources

- **Observations** — Current AQI readings by zip code, lat/long, or monitoring site
- **Forecasts** — Next-day AQI predictions for ozone and PM2.5 by zip code or coordinate
- **Historical** — Time-bounded historical AQI observations by zip code or area

## Why Jentic

- **Setup:** Wiring AirNow by hand means appending its API key as a query parameter, matching each request to the right observation or forecast endpoint, and writing your own retry logic. Through Jentic you install once, import AirNow from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** AirNow takes its location and date filters as query parameters and only reads U.S. air-quality data, so scope your agent by operation: limit it to the operations it needs, such as current observations by zip code, and leave out forecast endpoints it does not use.
- **Credential handling:** Your AirNow API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'get current air quality by zip code', and Jentic returns the matching AirNow operation with its zipCode, distance, and date schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **World Air Quality Index** — Global AQI coverage versus AirNow's U.S.-only scope
- **IQAir AirVisual** — Commercial global air quality and pollution data with city-level rankings
- **OpenWeatherMap** — Pair AirNow AQI with weather, wind, and forecast data for richer environmental context

## FAQ

### Why is there no official OpenAPI spec for AirNow API?

AirNow does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call AirNow API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the AirNow API use?

AirNow uses an API key passed as the API_KEY query parameter on every request. Through Jentic, the key is stored encrypted in the credential vault and injected at execution time so agents never see the raw value. Request a free key at https://docs.airnowapi.org/.

### Can I get air quality forecasts with the AirNow API?

Yes. The /aq/forecast/zipCode and /aq/forecast/latLong endpoints return next-day AQI forecasts for ozone and PM2.5 with category labels such as Moderate or Unhealthy for Sensitive Groups. Pass a date parameter to target a specific forecast day.

### What are the rate limits for the AirNow API?

AirNow imposes a default limit of 500 requests per hour per API key. The limit is documented at docs.airnowapi.org and is enforced server-side; clients receive HTTP 429 when exceeded. For higher volume, contact AirNow support via the docs site.

### How do I look up current air quality by zip code through Jentic?

Search Jentic for 'check current air quality by zip code', load the AirNow /aq/observation/zipCode/current operation, and execute with the zipCode parameter. Install with pip install jentic and use the async client pattern: search, load, execute.

### Does the AirNow API cover countries outside the United States?

No. AirNow data is limited to U.S. states, territories, and selected partner sites in Canada and Mexico that report into the network. For global coverage, pair with an alternative such as OpenWeatherMap or AQICN.

### Can I limit what my agent is allowed to do with the AirNow API?

Yes. Because Jentic One is self-hosted, you set the rules for which AirNow operations and credentials your agent may use. You can scope the agent to only the operations it needs, such as current AQI observations by zip code, latitude/longitude, or monitoring site, while withholding the forecast and historical data endpoints it does not require. AirNow only reads U.S. air-quality data and takes its location and date filters as query parameters, so the operations you grant define exactly what the agent can call.
