ParseForge Scrapers

Sensor.Community Air Scraper

parseforge/sensor-community-air-scraper

Developer toolsOther

Scrapes live and hourly air quality measurements from the Sensor.Community network. Returns flat rows with sensor ID, coordinates, timestamp, and pollutant values, filterable by country and sensor type.

Run this scraper See the API call
Total users
2
Monthly active
1
Total runs
62
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

Sensor.Community Air Scraper

Scrape live air quality measurements from the Sensor.Community network, worldwide or filtered by country and sensor type. Every reading includes particulate matter, temperature, humidity, and more, with sensor coordinates and timestamps. Export to CSV, JSON, Excel, or XML.

Sensor.Community publishes open air quality data from thousands of citizen-run stations, but there is no bulk download for a specific region or sensor model. This Actor reads the public live and hourly snapshots directly, filters them by country or sensor type, and returns each measurement as a flat row. No API key or registration is needed.

Who uses it What they scrape Sensor.Community for
Environmental researchers Build datasets of PM2.5 and PM10 readings for a city or region over time.
Citizen science groups Monitor the health of their local sensor network and spot faulty stations.
App developers Feed live air quality data into maps, dashboards, or alerting systems.
Urban planners Compare pollution levels across neighborhoods to prioritize interventions.

What it does

This Actor collects air quality measurements from the Sensor.Community network and returns each one as a flat row with sensor metadata and pollutant values.

  • ๐ŸŒ Global coverage: pull measurements from every Sensor.Community station in one run.
  • โฑ๏ธ Live or hourly: choose the last 5 minutes of readings or the rolling 1 hour average per sensor.
  • ๐Ÿ” Filter by country: keep only sensors in one of 60+ countries, from Germany to Japan.
  • ๐Ÿ“ก Filter by sensor type: isolate particulate matter (SDS011), temperature/humidity (BME280), CO2 (SCD30), noise, or radiation sensors.
  • ๐Ÿ“Š Flat output: every measurement is one row with sensor ID, coordinates, timestamp, and all pollutant values.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Sensor.Community data

๐ŸŒซ๏ธ Track urban air pollution.

A researcher pulls hourly PM2.5 and PM10 readings for all SDS011 sensors in Berlin to map pollution hotspots and validate a dispersion model.

๐Ÿ”” Build a local air quality alert.

A developer runs the Actor every 5 minutes for a city, filters for PM sensors, and pushes readings above a threshold to a Telegram channel.

๐Ÿ“ˆ Monitor sensor network health.

A citizen science coordinator collects daily measurements from all stations in their country and flags sensors that stop reporting or show implausible values.

๐ŸŒก๏ธ Compare microclimates.

An urban planner gathers temperature and humidity data from BME280 sensors across neighborhoods to identify urban heat islands.

Why choose this scraper

What you get
No API key Reads the public Sensor.Community archive directly, no registration or rate limits.
One fixed schema Every measurement, regardless of sensor model, lands in the same flat structure.
Filter before export Country and sensor type filters run on the snapshot, so your dataset only has what you need.
Scales to a million rows Collect up to 1,000,000 measurements in a single run for large studies.

How it compares

No other Store actor targets Sensor.Community the same way, so the honest comparison is with the alternatives teams actually weigh.

Sensor.Community Air Scraper Build it in-house By hand
Setup Run it now, zero config Days of engineering None, but hours per pull
When Sensor.Community changes Maintained for you You fix it You re-learn the page
Proxies, retries, anti-bot Built in Your problem Browser only
Output Fixed JSON schema, CSV/Excel export Whatever you build Copy-paste
Cost Pay per result Engineering time Analyst hours

Configure the run

Drive the Actor with a data window (live or hourly), an optional country, and an optional sensor type, and set a maximum number of measurements per run. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10
}

A larger pull:

{
 "maxItems": 200
}

Pricing

Pay-per-result: $0.01 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.00
1,000 results $10.00
10,000 results $100.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Sensor.Community Air Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Sensor.Community through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/sensor-community-air-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Your filters may be too narrow. Try setting country to 'Any country' and sensor type to 'Any sensor type', then increase the maximum measurements. Also check that the selected data window has recent data.

Why are some sensor values missing?

Not every sensor reports all pollutants. A particulate sensor like SDS011 will not have temperature or humidity, and a BME280 will not have PM values. Missing fields are left empty in the output.

The run takes a long time.

The Actor fetches the full snapshot before filtering. If you only need a few sensors, set a lower maximum measurements or narrow the country filter to reduce processing time.

I see duplicate sensor IDs.

A sensor can report multiple measurements within the same window, for example every 5 minutes in live mode. Each row is a distinct measurement with its own timestamp, so duplicates are expected.

FAQ

Question Answer
What is Sensor.Community? Sensor.Community is a global network of citizen-run environmental sensors that openly publish air quality data such as particulate matter, temperature, humidity, and noise.
Do I need an API key? No. The Actor reads the public data snapshots directly from the Sensor.Community archive, so no registration or key is required.
What is the difference between live and hourly average? Live mode returns every measurement reported in the last 5 minutes. Hourly average mode returns the rolling 1 hour average per sensor, which smooths out short-term spikes.
Can I filter by country? Yes. Choose from over 60 countries in the input, or leave it as 'Any country' to get worldwide readings.
Can I filter by sensor type? Yes. You can select a specific model such as SDS011 for particulate matter, BME280 for temperature and humidity, SCD30 for CO2, or DNMS for noise.
How many measurements can I get in one run? You can set the maximum up to 1,000,000 measurements per run. The actual number depends on how many sensors match your filters.
What data fields are returned? Each row includes the sensor ID, location coordinates, timestamp, sensor type, and the measured values such as PM2.5, PM10, temperature, humidity, and pressure, depending on the sensor model.
How often should I run the Actor? For live monitoring, schedule it every 5 to 10 minutes. For historical trends, run it hourly or daily and store the results in a dataset.
Can I export the data? Yes. The Actor outputs a dataset that you can export to CSV, JSON, Excel, or XML from the Apify platform.
Is the data free to use? Sensor.Community data is openly published for public use. Check their website for the exact license terms.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Sensor.Community. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
mode string (2 options) Which Sensor.Community snapshot to read. 'Live' returns every measurement reported in the last 5 minutes. 'Hourly average' returns the rolling 1 hour average per sensor. live
maxItems integer How many measurements to collect per run. 10
country string (65 options) Optional. Keep only measurements from sensors in this country. Leave as 'Any country' to return readings worldwide. not set
sensorType string (32 options) Optional. Keep only measurements from this sensor model, for example SDS011 for particulate matter or BME280 for temperature, humidity, and pressure. Leave as 'Any sensor type' for all models. not set

Pricing

from $4.52 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.00452 to $0.005
result details Detailed result with additional fields. $0.00905 to $0.01

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~sensor-community-air-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Sensor.Community Air Scraper on Apify All scrapers