Data Sources

All data on this site comes from three public providers, mirrored via oaq.notf.in.

Providers

CPCB cpcb
Central Pollution Control Board, Government of India, and State Pollution Control Boards. The authoritative source for regulatory air quality monitoring in India. ~580 stations across 250+ cities. cpcb.nic.in
Airnet airnet
Center for Study of Science, Technology and Policy (CSTEP). Dense low-cost sensor network, primarily in Bengaluru. cstep.in
Aurassure aurassure
Aurassure University Clean Air Network. University-hosted low-cost sensors. aurassure.com

How this site gets the data

  1. A Cloudflare Worker performs the OAQ broker handshake once per day and caches the signature.
  2. Every hour, the Worker fetches all_stations_latest.json for each of the three providers in a single bulk request.
  3. Stations are normalized, CPCB AQI is computed from raw pollutants, and a merged snapshot is written to Cloudflare R2.
  4. The static site is rebuilt from that snapshot — no client-side API calls, no API key in the browser.

Total upstream requests: ~80 per day. Well inside any reasonable rate limit.

Licensing

Upstream data is published as open air quality data, typically under CC BY 4.0. This site does not relicense the data; all original attribution and license terms apply to the upstream sources.

The site code is MIT-licensed.

Estimated health impact (AQLI)

Each station page shows an estimate of life expectancy lost due to air pollution, using the Air Quality Life Index (AQLI) formula from the University of Chicago EPIC group.

The formula is linear and easy to state:

years_of_life_lost = max(0, PM2.5 − baseline) × 0.098

where:

Underlying studies

Why AQI and Yrs lost can disagree

A common point of confusion: a station labeled "Very Poor" (AQI) can have a lower Yrs lost than one labeled "Poor". This is not an error — the two metrics measure different things:

So a station can be "Poor" by AQI yet have a higher Yrs lost than a "Very Poor" one when PM2.5 dominates its emission profile (industrial / traffic / biomass-smoke cities vs. an ozone-heavy station). Both figures are meaningful; they answer different questions. If you care about "how unsafe is it to go for a walk right now?", look at AQI. If you care about "how much shorter are lives here on average?", look at Yrs lost.

Caveats we are honest about

Update cadence