EPA Air Quality System (AQS) Scraper avatar

EPA Air Quality System (AQS) Scraper

Pricing

from $19.00 / 1,000 results

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

EPA Air Quality System (AQS) Scraper

Export U.S. ambient air-quality measurements from EPA's Air Quality System: daily summaries by county, hourly sample readings by monitor site, and active monitor inventory by state. Covers PM2.5, PM10, NO2, O3, CO, SO2, lead, VOCs and meteorological data from 10,000+ monitoring stations.

Pricing

from $19.00 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

ParseForge Banner

🌬️ EPA Air Quality (AQS) Scraper

πŸš€ Export U.S. ambient air-quality data in seconds. Pull daily summaries by county, hourly sample readings by monitor site, or the active monitor inventory by state from the EPA Air Quality System. PM2.5, PM10, NO2, O3, CO, SO2, lead, VOCs and meteorology from 10,000+ monitoring stations.

πŸ•’ Last updated: 2026-05-27 Β· πŸ“Š 25+ fields per record Β· πŸ‡ΊπŸ‡Έ 50 states + DC Β· 🏭 10,000+ active monitors Β· πŸ§ͺ 11 pollutant parameters

The EPA AQS Air Quality Scraper queries the official Environmental Protection Agency air-quality data warehouse and returns 25+ structured fields per record, including state and county codes, monitor site identifiers, parameter codes, sample duration, units of measure, the measured value, the AQI, the local-and-GMT timestamps, lat/lon coordinates, and the reporting agency. The underlying data is what EPA, NOAA, and academic atmospheric scientists work from every day.

The catalog covers every U.S. state, criteria pollutants plus meteorology, and three workhorse endpoints: daily-summary records by county, hourly sample readings by monitor site, and the active monitor inventory by state. This Actor handles credentials, pagination, and the AQS JSON response format, and ships the result as CSV, Excel, JSON, or XML.

🎯 Target AudienceπŸ’‘ Primary Use Cases
Environmental scientists, public-health analysts, urban planners, climate-tech startups, journalists, ESG analysts, real-estate intelligence teamsPollution dashboards, wildfire-smoke impact studies, ozone-season analyses, monitor-network mapping, exposure modeling, ESG-risk scoring

πŸ“‹ What the EPA AQS Scraper does

Three dataset choices and eleven parameter codes in a single run:

  • πŸ“… Daily Summary by County. Calendar-day means for one pollutant in one county.
  • ⏱️ Hourly Samples by Site. Sub-daily raw sample readings at a single monitor.
  • 🏭 Active Monitors by State. Inventory and metadata for every active monitor in one state.
  • πŸ§ͺ Pollutants. PM2.5 (FRM/FEM and non-FRM), PM10, CO, SO2, NO2, O3, lead, reactive nitrogen oxides, wind, temperature.

Each record carries the state and county FIPS codes, monitor site number, parameter code and human name, sample duration, units, the value, AQI if applicable, both local and GMT timestamps, monitor lat/lon, the CBSA, and the responsible reporting agency.

πŸ’‘ Why it matters: ambient air quality is one of the most-watched environmental variables in the world. Wildfire seasons, ozone alerts, ESG disclosures, and exposure-based epidemiology all depend on EPA AQS as the ground truth. Pulling it yourself means navigating the registration flow, the parameter-code lookup, the date-window limits, and the JSON response shape. This Actor does all of that.


🎬 Full Demo

🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset of monitor readings.


βš™οΈ Input

InputTypeDefaultBehavior
maxItemsinteger10Records to return. Free plan caps at 10, paid plan at 1,000,000.
endpointstring"dailyDataByCounty"One of `dailyDataByCounty`, `sampleDataBySite`, `monitorsByState`.
parameterstring"88101"EPA parameter code. PM2.5 is `88101`, ozone is `44201`, etc.
stateCodestring"06"Two-digit state FIPS code.
countyCodestring"037"Three-digit county FIPS code (required for daily and sample endpoints).
siteNumberstring"0080"Four-digit monitor site number (required for `sampleDataBySite`).
startDatestring"20240101"YYYYMMDD start date (inclusive).
endDatestring"20240131"YYYYMMDD end date. Max one year per query.
emailstringshared demoOptional. Register on the EPA AQS data service for higher quotas.
accessKeystringshared demoOptional. Your personal access key.

Example: January 2024 daily PM2.5 in Los Angeles County, CA.

{
"maxItems": 31,
"endpoint": "dailyDataByCounty",
"parameter": "88101",
"stateCode": "06",
"countyCode": "037",
"startDate": "20240101",
"endDate": "20240131"
}

Example: every active ozone monitor in Texas.

{
"maxItems": 500,
"endpoint": "monitorsByState",
"parameter": "44201",
"stateCode": "48",
"startDate": "20240101",
"endDate": "20241231"
}

⚠️ Good to Know: the shared demo credentials work for small test runs but have a low quota. For production work, register a free account on the EPA AQS data service in 30 seconds and pass your own email + accessKey in the input. Per-query date windows are capped at one calendar year.


πŸ“Š Output

Each record contains 25+ fields. Download the dataset as CSV, Excel, JSON, or XML.

🧾 Schema

FieldTypeExample
πŸ›οΈ stateCodestring"06"
🏘️ countyCodestring"037"
🏭 siteNumberstring"0080"
πŸ‡ΊπŸ‡Έ stateNamestring"California"
πŸŒ† countyNamestring"Los Angeles"
πŸ™οΈ cityNamestring"Los Angeles"
πŸͺͺ localSiteNamestring"Los Angeles - North Main Street"
πŸ§ͺ parameterCodestring"88101"
🌫️ parameterNamestring"PM2.5 - Local Conditions"
πŸ”’ pocnumber1
πŸ“ datumstring"NAD83"
⏱️ sampleDurationstring"24 HOUR"
πŸ“ unitsstring"Micrograms/cubic meter (LC)"
πŸ’¨ valuenumber | null12.4
πŸ“… datestring"2024-01-15"
πŸ• timestring | null"12:00"
πŸ•’ datetimeLocalstring"2024-01-15T12:00"
🌐 datetimeGmtstring"2024-01-15T20:00"
🚦 aqinumber | null52
πŸ§ͺ methodstring | null"R & P Model 2025 PM-2.5 Sequential Air Sampler"
🏷️ monitorAgencystring"South Coast Air Quality Management District"
πŸ“ latitudenumber34.06658
πŸ“ longitudenumber-118.22688
πŸ—ΊοΈ cbsastring"31080"
πŸ•’ scrapedAtISO 8601"2026-05-27T00:00:00.000Z"

For monitorsByState, additional fields include openDate, closeDate, networks, and siteEstablishedDate.

πŸ“¦ Sample records


✨ Why choose this Actor

Capability
πŸ›οΈOfficial EPA source. Same data feed used by AirNow, the EPA, and atmospheric researchers.
🌬️Criteria pollutants + meteorology. PM2.5, PM10, CO, SO2, NO2, O3, lead, plus wind and temperature.
🏭10,000+ monitors. Every active U.S. site, with lat/lon, CBSA, and reporting agency.
🧩Three endpoints, one Actor. Daily summaries, hourly samples, monitor inventory.
πŸ“…Decades of history. AQS goes back to the 1980s for some pollutants.
πŸ”Always fresh. Every run queries the live EPA data service.
🚫No paid subscription. Free registration unlocks higher quotas, but a shared demo works for testing.

🌫️ Wildfire smoke, ozone exceedances, and PM2.5 spikes all live in the same dataset. This Actor turns them into clean, joinable rows.


πŸ“ˆ How it compares to alternatives

ApproachCostCoverageRefreshEndpointsSetup
⭐ EPA AQS Scraper (this Actor)$5 free credit, then pay-per-use10,000+ U.S. monitorsLive per rundaily, hourly, inventory⚑ 2 min
AirNow real-time feedFreeSubset of monitorsLiveReal-time only🐒 Custom parsing
EPA AirData web portalFreeAll monitorsLiveUI-only export🐒 Slow, manual
Commercial weather + air vendors$500+/monthGlobalReal-timeMany⏳ Sales cycle

Pick this Actor when you want EPA-grade historical and recent monitor data without writing the integration yourself.


πŸš€ How to use

  1. πŸ“ Sign up. Create a free account with $5 credit (takes 2 minutes).
  2. 🌐 Open the Actor. Go to the EPA AQS Scraper page on the Apify Store.
  3. 🎯 Set input. Pick a dataset, parameter code, state and county codes, and a date range.
  4. πŸš€ Run it. Click Start and let the Actor collect your data.
  5. πŸ“₯ Download. Grab your results in the Dataset tab as CSV, Excel, JSON, or XML.

⏱️ Total time from signup to downloaded dataset: 3-5 minutes. No coding required.


πŸ’Ό Business use cases

πŸ₯ Public-health analytics

  • Exposure modeling for respiratory-disease research
  • Asthma-trigger early-warning dashboards
  • Wildfire-smoke impact assessments
  • ER-visit correlation with PM2.5 spikes

🌎 ESG & climate tech

  • Plant-level emissions verification
  • ESG-risk scores tied to local air quality
  • Corporate-net-zero footprint reporting
  • Carbon-credit project monitoring

🏘️ Real estate & urban planning

  • Neighborhood-level air-quality scoring
  • Site-selection due diligence for warehouses and schools
  • Property-listing enrichment with AQI history
  • Zoning impact analysis pre/post permits

πŸ“° Environmental journalism

  • Wildfire-smoke maps with monitor data
  • Industrial-pollution investigations near refineries
  • Ozone-season explainers with multi-year context
  • Local "is the air safe today?" widgets for newsrooms

πŸ”Œ Automating EPA AQS Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

  • 🟒 Node.js. Install the apify-client NPM package.
  • 🐍 Python. Use the apify-client PyPI package.
  • πŸ“š See the Apify API documentation for full details.

The Apify Schedules feature lets you trigger this Actor on any cron interval. A daily refresh on the monitor inventory keeps your map layer current, and an hourly refresh on a single site supports near-real-time dashboards.


🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

πŸŽ“ Research and academia

  • Atmospheric-science coursework with real monitor data
  • Public-health theses on PM2.5 exposure and outcomes
  • Reproducible studies citing versioned AQS pulls
  • Climate-justice research correlating exposure with demographics

🎨 Personal and creative

  • Personal "is the air safe today?" widgets
  • Data-art visualizations of long-term ozone trends
  • Newsletters covering local air-quality history
  • Hobbyist sensor projects validated against EPA data

🀝 Non-profit and civic

  • Community-science groups challenging permits with data
  • Environmental-justice maps overlaying AQI with demographics
  • Asthma-management programs in low-income neighborhoods
  • City climate-action plans grounded in monitor readings

πŸ§ͺ Experimentation

  • Train air-quality forecast models on EPA history
  • Benchmark low-cost sensor networks vs. reference monitors
  • Prototype dashboards for citizen-science portals
  • Test agent pipelines that summarize air-quality alerts

πŸ€– Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:


❓ Frequently Asked Questions

🧩 How does it work?

You pick a dataset (daily, hourly, or inventory), a parameter code, a state and (sometimes) county, and a date range. The Actor calls the EPA AQS data service, paginates through the response, and ships one clean record per row.

πŸ§ͺ Which pollutants are supported?

PM2.5 FRM/FEM (88101), PM2.5 non-FRM (88502), PM10 (81102), CO (42101), SO2 (42401), NO2 (42602), O3 (44201), lead (14129), reactive oxides of nitrogen (42600), wind (WIND), and temperature (TEMP).

πŸ”‘ Do I need an EPA account?

Not for testing. The shared demo credentials work for small runs. For production work, register a free account in 30 seconds on the EPA AQS data service and pass your email + accessKey for higher quotas.

πŸ“… How far back does the data go?

Many monitors and parameters have records going back to the 1980s. PM2.5 (88101) typically starts in 1999, ozone (44201) goes back further. The Actor accepts any date range your account is allowed to query.

πŸ“… Why is there a one-year limit per query?

That's an EPA AQS service constraint. For longer ranges, run the Actor multiple times with year-bucketed date windows and union the datasets in your downstream pipeline.

🚦 How is AQI calculated?

AQI comes directly from the EPA AQS response for parameters where it applies (PM2.5, PM10, O3, CO, SO2, NO2, lead). The field is null for parameters that don't have an AQI definition (wind, temperature, etc.).

πŸ“ How accurate are the coordinates?

EPA AQS uses NAD83 datum and ships monitor coordinates to five or six decimal places, which is sub-meter accurate. This is the canonical location for each monitor.

⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval. An hourly refresh on a single site supports near-real-time dashboards.

Yes. EPA AQS data is published by the U.S. federal government and is freely usable for commercial, research, and journalism purposes.

πŸ’³ Do I need a paid Apify plan?

No. The free Apify plan is enough for testing and small runs (10 records). A paid plan lifts the limit and gives you scheduling, higher concurrency, and larger datasets.

πŸ†˜ What if I need help?

Contact us through the Apify platform or use the Tally form linked below.


πŸ”Œ Integrate with any app

EPA AQS Scraper connects to any cloud service via Apify integrations:

  • Make - Automate multi-step workflows
  • Zapier - Connect with 5,000+ apps
  • Slack - Get run notifications in your channels
  • Airbyte - Pipe air-quality data into your warehouse
  • GitHub - Trigger runs from commits and releases
  • Google Drive - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh AQI data into your monitoring stack, or alert your team in Slack when a monitor crosses a threshold.


πŸ’‘ Pro Tip: browse the complete ParseForge collection for more reference and environmental-data scrapers.


πŸ†˜ Need Help? Open our contact form to request a new scraper, propose a custom data project, or report an issue.


⚠️ Disclaimer: this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the U.S. Environmental Protection Agency. All trademarks mentioned are the property of their respective owners. Only publicly available EPA Air Quality System data is collected, subject to the standard EPA data-use policy.