Getting Started with LASS PM2.5 Open Data Portal

← PM2.5 Open Data Portal

When to use this API

When you need real-time or near-real-time PM2.5 readings from low-cost air quality sensors. This is the API for ground-level, street-by-street air quality data — the granularity government monitoring stations (spaced tens of kilometers apart) cannot provide. The LASS network has deployed 15,000+ sensors across 58 countries, but the data density is overwhelmingly Taiwan-centric; for non-Taiwan locations, check whether PurpleAir's own API offers better local coverage first (some PurpleAir devices also appear in this portal under the "purpleair" project). The non-obviously valuable thing here is the Data Calibration Framework (DCF): raw low-cost sensor readings drift significantly, but this API ships calibration models built against government reference stations, so the c_d0 (calibrated PM2.5) field is the one to trust over s_d0 (raw) whenever it is available.

Getting current PM2.5 readings for a region

"What's the PM2.5 level in Changhua right now?" The /project/{project}/latest/ endpoint returns every device's most recent reading (within 2 hours) for a given project. "airbox" is the largest sub-network. The response is large — filter client-side by the area field to find your location.

curl "https://pm25.lass-net.org/api/project/airbox/latest/" | head -c 10000
{
  "num_of_records": 509,
  "feeds": [
    {
      "time": "22:23:19",
      "SiteName": "明湖國小",
      "app": "AirBox",
      "area": "changhua",
      "date": "2026-04-08",
      "gps_lat": 23.952905,
      "gps_lon": 120.616153,
      "s_d0": 42.0,
      "s_d1": 55.0,
      "s_d2": 24.0,
      "s_h0": 100.0,
      "s_t0": 22.87,
      "device_id": "08BEAC02866E",
      "c_d0": "N/A",
      "c_d0_method": "N/A"
    }
  ]
  // ... 508 more devices
}

The field names follow LASS sensor conventions — not human-readable ones: s_d0 is PM2.5 in μg/m³, s_d1 is PM10, s_d2 is PM1, s_h0 is humidity (%), s_t0 is temperature (°C). A raw reading of 42 μg/m³ falls into the "unhealthy for sensitive groups" range per US EPA breakpoints (35.5–55.4 μg/m³). But c_d0 is "N/A" — no DCF calibration model covers this device's location, which means 42 is a raw sensor value, not a corrected one. Low-cost PM2.5 sensors (the PMS5003 used in most AirBox devices) typically read high in humid conditions; s_h0: 100.0 means the humidity reading is saturated, and the real PM2.5 may be lower than 42. Without c_d0, you cannot be certain. The SiteName and name fields are in Traditional Chinese because most deployed devices are in Taiwan — this is consistent across the API.

The AirBox sensor at Minghu Elementary School in Changhua is reporting 42 μg/m³ PM2.5 (unhealthy for sensitive groups), but the calibrated value is unavailable for this device and humidity is at 100%, which tends to inflate PMS5003 readings — the true PM2.5 is likely lower than 42.

Finding the nearest calibration reference site

"Is there a government monitoring station nearby that calibrates these sensors?" The DCF calibration models are built against official air quality monitoring stations. The /analysis/DCF/nearest/ endpoint finds the closest reference site to any GPS coordinate. Pass the sensor query parameter to filter by PM2.5 sensor model (default is PMS5003, the Plantower sensor in most AirBox devices).

curl "https://pm25.lass-net.org/api/analysis/DCF/nearest/lat/24.05/lon/120.55/?sensor=PMS5003" | head -c 10000
{
  "source": "DCF by IIS-NRL",
  "sensor": "PMS5003",
  "num_of_records": 1,
  "feeds": [
    {
      "gps_lat": 25.047,
      "gps_lon": 121.508,
      "SiteName": "wanhua",
      "distance": 10.707,
      "sensor": "PMS5003"
    }
  ],
  "descriptions": {
    "SiteName": "English name of site DCF Model reference",
    "gps_lat": "GPS latitude (decimal degrees)",
    "gps_lon": "GPS longitude (decimal degrees)",
    "distance": "distance between input location and model-site (km)"
  }
}

The coordinates 24.05°N, 120.55°E land in Changhua, but the nearest DCF reference site is the Wanhua station in Taipei — 10.7 km away. That gap explains why c_d0 was "N/A" for the Changhua device in the previous vignette: the calibration model's coverage doesn't extend cleanly to that location. The distance field is in kilometers, and a 10+ km gap between a sensor and its calibration reference means c_d0 would still be better than raw s_d0, but not as accurate as a station-side reading. The descriptions object is a rare self-documenting feature — every DCF response includes it, mapping each field name to a plain-English explanation.

The nearest DCF calibration reference site to Changhua is the Wanhua monitoring station in Taipei, about 10.7 km away. Because of this distance, calibration models do not fully cover Changhua, and raw sensor readings there cannot be DCF-corrected — which is why the calibrated PM2.5 field is unavailable for that device.

Checking sensor reliability with ADF ranking

"Can I trust the data from device 08BEAC0288FA?" The Anomaly Detection Framework (ADF) ranks every device on a 0-to-1 scale based on reporting consistency and anomaly checks — indoor placement, proximity to emission sources, and data gaps. A ranking of 1.0 means the device is reporting normally; lower scores flag problems.

curl "https://pm25.lass-net.org/api/analysis/ADF/ranking/project/airbox/" | head -c 10000
{
  "feeds": [
    {
      "timestamp": "2023-06-28T16:08:00Z",
      "source": "airbox",
      "ranking": 1.0,
      "device_id": "08BEAC0288FA"
    },
    {
      "timestamp": "2023-06-28T16:04:00Z",
      "source": "airbox",
      "ranking": 0.59,
      "device_id": "74DA38C7D530"
    }
  ],
  "source": "ADF by IIS-NRL"
}

Device 08BEAC0288FA scores 1.0 — reporting consistently, no anomalies detected. Device 74DA38C7D530 scores 0.59, a flag. A score below ~0.7 typically means gaps in reporting, classification as potentially indoor (the ADF has a separate /analysis/ADF/indoor/ endpoint for that), or proximity to a localized emission source (see /analysis/ADF/emission/). The ranking endpoint returns every device in the project at once — to query a single device directly, use /analysis/ADF/ranking/device/{device_id}/ instead.

Device 08BEAC0288FA has an ADF ranking of 1.0 (full score) — it is reporting consistently with no detected anomalies. For comparison, device 74DA38C7D530 in the same project scores 0.59, indicating data quality issues that may include reporting gaps or indoor placement.

Pitfalls

One-line summary for the user

I can pull real-time PM2.5 readings from a crowdsourced network of 15,000+ low-cost sensors via the LASS Open Data Portal — no auth needed — but the data density is Taiwan-centric and you should prefer the calibrated c_d0 field over raw s_d0 whenever available, since low-cost sensors drift significantly without DCF correction.