EPA Air Quality System (AQS) Data Scraper avatar

EPA Air Quality System (AQS) Data Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
EPA Air Quality System (AQS) Data Scraper

EPA Air Quality System (AQS) Data Scraper

Scrape EPA AQS air quality monitoring data — PM2.5, ozone, SO2, NO2, CO daily readings with AQI scores from 4,000+ US monitoring stations. Free API key required.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Compute Edge

Compute Edge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract official EPA air quality monitoring data — PM2.5, ozone, SO2, NO2, CO, and other pollutant readings from 4,000+ monitoring stations across the United States. Powered by the EPA's Air Quality System (AQS) Data Mart API, every record includes a daily AQI score, geographic coordinates, county/state identifiers, and observation statistics.

This Actor is an ideal data pipeline for ESG compliance teams, real estate developers doing environmental due diligence, industrial site selectors, public health researchers, HVAC and air-purifier companies targeting high-pollution regions, and environmental journalists.

What This Actor Does

The EPA AQS Data Mart API is the authoritative source for historical and near-real-time U.S. air quality data, maintained under regulatory obligation by the Environmental Protection Agency. This Actor wraps the /dailyData/byState endpoint, giving you structured JSON records you can pipe directly into analytics platforms, RAG pipelines, or spreadsheets.

Key Features

  • Official EPA data — sourced from the EPA AQS Data Mart, not a third-party aggregator
  • All six NAAQS criteria pollutants — PM2.5, PM10, ozone, SO2, NO2, CO, and lead
  • Daily AQI scores — ready-to-use Air Quality Index values per monitoring site per day
  • Rich geographic context — monitoring site name, county, state, latitude/longitude, CBSA name
  • Flexible date ranges — query any period from the 1980s to today
  • Batch output — handles large date windows efficiently, respects maxResults cap
  • Free API key — EPA registration is free and instant (no approval wait)
  • Graceful no-key behavior — with no credentials, the Actor emits an informational record with signup instructions so your pipeline never errors silently

Output Fields (per monitoring record)

FieldDescription
dateLocalDate of the reading (YYYY-MM-DD)
siteNameName of the EPA monitoring site
countyNameCounty name
stateNameFull state name
stateCode2-digit FIPS state code
latitudeMonitoring site latitude
longitudeMonitoring site longitude
parameterNamePollutant name (e.g., "PM2.5 - Local Conditions")
parameterCodeAQS parameter code (e.g., 88101)
arithmeticMeanDaily arithmetic mean concentration
firstMaxValueDaily maximum value
aqiAir Quality Index score
unitsOfMeasureMeasurement units (e.g., "Micrograms/cubic meter (LC)")
observationCountNumber of hourly observations that day
observationPercentComplete% of expected observations that were valid
sampleDurationSampling duration (e.g., "24 HOUR")
pollutantStandardApplicable NAAQS standard
cityNameCity name
cbsaNameCore Based Statistical Area name
addressLineStreet address of monitoring site

Getting Started

Step 1: Get Your Free EPA AQS API Key (2 minutes)

The EPA AQS API is completely free to use. To register:

  1. Open your browser and go to:

    https://aqs.epa.gov/data/api/signup?email=YOUR_EMAIL

    Replace YOUR_EMAIL with your actual email address.

  2. Check your inbox — EPA will send your API key within a few minutes.

  3. Copy your email and key — you will enter both into this Actor's input.

Step 2: Configure the Actor

Fill in the input fields:

  • AQS Email — the email address you used to register
  • AQS API Key — the key EPA sent you
  • State FIPS Code — 2-digit code for the state you want (default: 06 for California). See the state code list.
  • Pollutant Parameter Code — default 88101 (PM2.5). Change to 44201 for ozone, 42401 for SO2, etc.
  • Begin Date / End Date — YYYYMMDD format (e.g., 20240101 / 20241231). Defaults to the last 30 days.
  • Max Results — cap on records returned (default 1000; set to 0 for all)

Step 3: Download Results

Results appear as JSON in the Dataset tab. Export as CSV or JSON via the Apify platform.

Tutorials

Tutorial 1: Pull PM2.5 Data for California (Last 30 Days)

Goal: Get the most recent validated PM2.5 readings for all monitoring sites in California.

Input:

{
"aqsEmail": "your@email.com",
"aqsKey": "your_key_here",
"state": "06",
"param": "88101",
"maxResults": 2000
}

Expected output (one record per site per day):

{
"siteName": "Fresno-Garland",
"stateCode": "06",
"stateName": "California",
"countyName": "Fresno",
"latitude": 36.785726,
"longitude": -119.773403,
"dateLocal": "2024-06-15",
"parameterName": "PM2.5 - Local Conditions",
"parameterCode": "88101",
"arithmeticMean": 12.4,
"firstMaxValue": 19.1,
"aqi": 52,
"unitsOfMeasure": "Micrograms/cubic meter (LC)",
"observationCount": 24,
"observationPercentComplete": 100.0,
"sampleDuration": "24 HOUR",
"cityName": "Fresno",
"cbsaName": "Fresno, CA"
}

Tutorial 2: Ozone Monitoring in Texas

Goal: Retrieve ozone readings for Texas for a full summer month.

Input:

{
"aqsEmail": "your@email.com",
"aqsKey": "your_key_here",
"state": "48",
"param": "44201",
"bdate": "20240601",
"edate": "20240630",
"maxResults": 5000
}

This returns daily ozone readings from every monitoring site in Texas for June 2024 — useful for tracking ozone season trends or identifying high-ozone corridors near industrial areas.

Tutorial 3: Multi-State Environmental Due Diligence

To compare air quality across several states (e.g., for industrial site selection), run the Actor once per state and combine the datasets downstream. Each run takes about 10–30 seconds for a 30-day window.

State FIPS quick reference:

  • 06 California
  • 48 Texas
  • 36 New York
  • 12 Florida
  • 17 Illinois
  • 42 Pennsylvania
  • 26 Michigan
  • 53 Washington State

Pricing

This Actor charges $0.003 per result record. A typical 30-day PM2.5 pull for California returns ~1,500 records, costing about $0.0045 in Actor fees plus standard Apify compute costs.

AQS data availability varies by state and pollutant. Not all pollutants are monitored in every state — if you get 0 records, try a different state or parameter code.

Input Example

{
"aqsEmail": "researcher@university.edu",
"aqsKey": "abcdef1234567890abcdef1234567890",
"state": "06",
"param": "88101",
"bdate": "20240101",
"edate": "20240331",
"maxResults": 10000
}

Output Example

[
{
"siteName": "Los Angeles-North Main Street",
"stateCode": "06",
"stateName": "California",
"countyCode": "037",
"countyName": "Los Angeles",
"latitude": 34.0675,
"longitude": -118.227,
"dateLocal": "2024-01-15",
"parameterName": "PM2.5 - Local Conditions",
"parameterCode": "88101",
"arithmeticMean": 17.3,
"firstMaxValue": 28.5,
"aqi": 62,
"unitsOfMeasure": "Micrograms/cubic meter (LC)",
"observationCount": 24,
"observationPercentComplete": 100.0,
"sampleDuration": "24 HOUR",
"pollutantStandard": "PM25 24-hour 2024",
"cityName": "Los Angeles",
"cbsaName": "Los Angeles-Long Beach-Anaheim, CA"
}
]

Common Parameter Codes

CodePollutantNAAQS Standard
88101PM2.5 – Local Conditions9 µg/m³ (annual), 35 µg/m³ (24h)
44201Ozone (O3)0.070 ppm (8-hour)
42401Sulfur Dioxide (SO2)75 ppb (1-hour)
42101Carbon Monoxide (CO)9 ppm (8-hour)
42602Nitrogen Dioxide (NO2)100 ppb (1-hour)
81102PM10 Mass150 µg/m³ (24-hour)
14129Lead (Pb)0.15 µg/m³ (rolling 3-month)

Other Actors You Might Like

  • EPA ECHO Compliance Scraper — Enforcement and Compliance History Online: permits, violations, inspections
  • EPA GHG Emitters Scraper — Greenhouse gas emission reports from large industrial facilities
  • EPA TRI Scraper — Toxics Release Inventory: chemical releases by facility
  • EPA Drinking Water Scraper — Safe Drinking Water Act violations and system data
  • BLS Labor Statistics Scraper — Unemployment, wages, and CPI data from the Bureau of Labor Statistics

FAQ

Q: Is this data free? A: EPA AQS API access is completely free. You only pay Apify platform fees ($0.003/result for this Actor).

Q: How current is the data? A: AQS data is validated before it appears in the API. Most data lags 1–3 months behind real time. For near-real-time AQI, the EPA AirNow API is a better source.

Q: Why did I get 0 records? A: Not all pollutants are monitored in every state, and monitoring data may not exist for your requested date range. Try a different state (like California or Texas, which have many monitoring stations) or a wider date range.

Q: Can I query by county or monitoring site? A: The current version queries by state. The AQS API also supports /dailyData/byCounty and /dailyData/bySite — contact support if you need county or site-level filtering added.

Q: How do I find valid state FIPS codes? A: Use https://aqs.epa.gov/data/api/list/states?email=test@test.com&key=test (no real key needed for list endpoints).

This Actor accesses publicly available data from the U.S. Environmental Protection Agency's Air Quality System (AQS) Data Mart API (aqs.epa.gov). All data is provided by the U.S. federal government under an open-data mandate. The EPA AQS API Terms of Service permit automated access for research, commercial, and educational use. No personal data is collected. Users are responsible for compliance with applicable data use policies. This Actor is not affiliated with, endorsed by, or sponsored by the U.S. EPA.

For support, questions, or feature requests, please use the Apify Actor issue tracker.