OpenAQ Air Quality Scraper avatar

OpenAQ Air Quality Scraper

Pricing

$1.00 / 1,000 results

Go to Apify Store
OpenAQ Air Quality Scraper

OpenAQ Air Quality Scraper

Find air quality monitors anywhere by coordinates or country code. Every station carries its name, coordinates, provider, measured pollutants, and latest readings for PM2.5, PM10, ozone, and NO2 with timestamps. Handy for environmental research, public dashboards, and health monitoring.

Pricing

$1.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

a day ago

Last modified

Share

ParseForge Banner

🌍 OpenAQ Air Quality Scraper

🚀 Map air quality monitors anywhere in seconds. One query around London returns 100+ stations with live PM2.5, PM10, NO2, and ozone readings.

🕒 Last updated: 2026-06-02 · 📊 22 fields per station · coordinate or country queries · live pollutant readings

Pull air quality monitoring stations and their latest measurements from the OpenAQ global network. Search by coordinates with a radius or by country code, and for every station get its location, provider, the pollutants it tracks, and the most recent readings for PM2.5, PM10, ozone, NO2, SO2, and CO with timestamps.

Coverage: the worldwide OpenAQ network of government and research monitors. Pass coordinates (for example "34.0522,-118.2437") with a radius, or a two-letter country code.

🎯 Target Audience💡 Primary Use Cases
Environmental researchersStudy pollution across regions
App and dashboard buildersPower live air quality maps
Health and safety teamsTrigger alerts on poor air
Data scientistsBuild air quality datasets

📋 What the OpenAQ Air Quality Scraper does

  • Finds monitoring stations near coordinates or within a country.
  • Returns 22 structured fields per station, including a full measurements list.
  • Joins each sensor to its pollutant, value, units, and timestamp.
  • Flattens PM2.5 and PM10 to top-level columns for quick comparison.
  • Optionally filters to stations that measure a chosen pollutant.
  • Exports to CSV, Excel, JSON, XML, or via API.

🎬 Full Demo (🚧 Coming soon)

⚙️ Input

FieldTypeDescription
coordinatesstringCenter point "lat,lon". Returns nearby stations.
radiusKmintegerSearch radius in km (max 25).
countryCodestringOptional. Two-letter ISO code, used when no coordinates are given.
parameterstringOptional. Keep only stations measuring this pollutant.
maxItemsintegerCap on stations returned. Free plan is limited to 10.
apiKeystringOpenAQ API key. A shared key is provided by default.

Example 1: by coordinates

{
"coordinates": "34.0522,-118.2437",
"radiusKm": 15,
"maxItems": 50
}

Example 2: by country, only PM2.5 stations

{
"countryCode": "GB",
"parameter": "pm25",
"maxItems": 100
}

⚠️ Good to Know: OpenAQ requires a free API key. A shared key ships by default, but for heavy use get your own at explore.openaq.org. Some stations are historical, so check datetimeLast for the freshness of each reading. Coordinate queries surface the most active stations.

📊 Output

Each record contains the following fields:

FieldDescription
🆔 locationIdOpenAQ station ID
📍 nameStation name
🏘 localityLocality, when available
🌍 countryCountry name
🏳 countryCodeTwo-letter country code
🧭 latitudeLatitude
🧭 longitudeLongitude
🕓 timezoneStation timezone
🏢 providerData provider
👤 ownerStation owner
🚐 isMobileMobile sensor flag
🖥 isMonitorReference monitor flag
🔬 instrumentsInstruments used
🧪 parametersPollutants the station measures
🟣 pm25Latest PM2.5 reading
🟠 pm10Latest PM10 reading
📈 measurementsAll latest readings with value, units, and time
🗓 datetimeFirstFirst data timestamp
🕒 datetimeLastMost recent data timestamp
🔗 locationUrlOpenAQ Explorer page
🕒 scrapedAtCollection timestamp
errorError message, null on success

Real sample records:

{
"locationId": 146,
"name": "Southwark A2 Old Kent Road - UKA00558",
"country": "United Kingdom",
"countryCode": "GB",
"latitude": 51.4804989994662,
"longitude": -0.059550000208953166,
"provider": "EEA",
"parameters": ["no2", "pm10", "pm25"],
"pm25": 5.1,
"pm10": 19,
"measurements": [
{ "parameter": "pm10", "displayName": "PM10", "value": 19, "units": "µg/m³", "datetimeUtc": "2026-06-01T00:00:00Z" },
{ "parameter": "no2", "displayName": "NO₂ mass", "value": 6.5025, "units": "µg/m³", "datetimeUtc": "2026-06-02T17:00:00Z" }
],
"datetimeLast": "2026-06-02T17:00:00Z",
"locationUrl": "https://explore.openaq.org/locations/146",
"error": null
}
{
"locationId": 148,
"name": "London Bloomsbury - UKA00211",
"country": "United Kingdom",
"countryCode": "GB",
"latitude": 51.52228999923011,
"longitude": -0.12588900021133392,
"provider": "EEA",
"parameters": ["no2", "o3", "pm10", "pm25", "so2"],
"pm25": 13.9,
"pm10": 31.3,
"measurements": [
{ "parameter": "o3", "displayName": "O₃ mass", "value": 86.6, "units": "µg/m³", "datetimeUtc": "2026-05-26T23:00:00Z" },
{ "parameter": "no2", "displayName": "NO₂ mass", "value": 19.3, "units": "µg/m³", "datetimeUtc": "2026-05-26T23:00:00Z" }
],
"datetimeLast": "2026-05-28T15:00:00Z",
"locationUrl": "https://explore.openaq.org/locations/148",
"error": null
}
{
"locationId": 60,
"name": "Haringey Roadside - UKA00260",
"country": "United Kingdom",
"countryCode": "GB",
"latitude": 51.59929999967941,
"longitude": -0.06821799979396657,
"provider": "EEA",
"parameters": ["no2", "pm25"],
"pm25": 10,
"pm10": null,
"measurements": [
{ "parameter": "no2", "displayName": "NO₂ mass", "value": 26.20125, "units": "µg/m³", "datetimeUtc": "2026-06-02T17:00:00Z" }
],
"datetimeLast": "2026-06-02T17:00:00Z",
"locationUrl": "https://explore.openaq.org/locations/60",
"error": null
}

✨ Why choose this Actor

  • Global reach. Query any city by coordinates or any nation by code.
  • Joined and clean. Every sensor is matched to its pollutant, value, units, and time.
  • Quick comparison. PM2.5 and PM10 are flattened to their own columns.
  • Freshness visible. datetimeLast shows how current each station is.
  • Ready to export. CSV, Excel, JSON, XML, or API, with a clean table view.

📈 How it compares to alternatives

OpenAQ Air Quality ScraperManual API callsGeneric web scrapers
Sensor to pollutant join⚠️ Manual
Coordinate and country search⚠️
Flattened PM2.5 and PM10
Pagination handled⚠️⚠️
Export to CSV/Excel/JSON/XML⚠️

🚀 How to use

  1. Create a free Apify account using this sign-up link.
  2. Open the OpenAQ Air Quality Scraper.
  3. Enter coordinates with a radiusKm, or a countryCode, and set maxItems.
  4. Click Start and watch the dataset fill in real time.
  5. Export your results as CSV, Excel, JSON, or XML, or pull them via API.

💼 Business use cases

🌫 Environmental monitoring

GoalHow
Track a cityQuery coordinates on a schedule
Compare regionsAggregate by country code

🏥 Health and safety

GoalHow
Alert on spikesWatch PM2.5 across stations
Protect workersMap nearby monitors to a site

📊 Research and analytics

GoalHow
Build datasetsCollect stations across areas
Study trendsPair readings with timestamps

🗺 Apps and dashboards

GoalHow
Power a mapUse coordinates and latest values
Show pollutantsRender the measurements list

🔌 Automating OpenAQ Air Quality Scraper

Connect this Actor to your stack with Apify integrations: Make, Zapier, Slack, Airbyte, GitHub, and Google Drive. Schedule runs and push fresh air quality data into spreadsheets, databases, or alerts.

🌟 Beyond business use cases

  • Research: study pollution patterns across cities and seasons.
  • Personal: check the air near your home or commute.
  • Non-profit: support clean air advocacy with open data.
  • Experimentation: build environmental analytics projects.

🤖 Ask an AI assistant

Paste your dataset into ChatGPT, Claude, Perplexity, or Copilot and ask for the cleanest stations, average PM2.5 by area, or pollution hotspots.

❓ Frequently Asked Questions

1. Do I need an API key? OpenAQ requires a free key. A shared key ships by default, and you can add your own for heavy use.

2. How do I search a city? Pass coordinates as "lat,lon" with a radiusKm. Coordinate queries surface the most active stations.

3. Can I search a whole country? Yes. Use countryCode with a two-letter ISO code.

4. What pollutants are covered? PM2.5, PM10, ozone, NO2, SO2, CO, and more, depending on each station.

5. Why is PM2.5 sometimes null? That station does not measure PM2.5. Check the parameters and measurements fields.

6. How fresh is the data? Each station shows datetimeLast. Some stations are historical, so this field reveals freshness.

7. Can I filter by pollutant? Yes. Set parameter to keep only stations measuring it.

8. What export formats are supported? CSV, Excel, JSON, XML, and API.

9. Can I run it on a schedule? Yes, with Apify Schedules and integrations.

10. Is there a free option? Yes. Free runs are limited to 10 items as a preview. Paid plans unlock up to 1,000,000.

🔌 Integrate with any app

Use the Apify API, webhooks, and 5,000-plus integrations to push OpenAQ data into Make, Zapier, Google Sheets, Airtable, databases, and more.

💡 Pro Tip: browse the complete ParseForge collection.

🆘 Need Help? Open our contact form

⚠️ Disclaimer: independent tool, not affiliated with OpenAQ. Data is provided by the OpenAQ open data platform and its contributors.