---
title: Air quality monitoring by hour, ACT
resource: https://publicdata.au/d/act-air-quality/
publisher: Health Protection Service, ACT Health Directorate
licence: CC BY 4.0
licence_url: https://creativecommons.org/licenses/by/4.0/
version: 2026-10-04
rows: 386883
fields: 22
source: https://www.data.act.gov.au/api/views/94a5-zqnn/rows.csv?accessType=DOWNLOAD
source_sha256: 31c17a5c4a326b866718d89618f8de751897c0623736894ed2ce694b5061d172
language: en-AU
operator: National Digital
not_endorsed: true
---

# Air quality monitoring by hour, ACT

Hourly readings from the ACT's air quality monitoring stations at Civic, Florey and Monash since 2011, with particles, ozone, nitrogen dioxide, carbon monoxide and the Air Quality Index.

Published by Health Protection Service, ACT Health Directorate under CC BY 4.0 and republished here in other formats, with cells typed and suppressed values made null. Health Protection Service, ACT Health Directorate has not endorsed this site.

Also called: ACT Air Quality Monitoring Data, Canberra air quality index history, ACT PM2.5 and PM10 readings, Civic Florey Monash air quality stations.

## Download

Latest version, redirects to `https://publicdata.au/d/act-air-quality/v/2026-10-04/`:

- csv: https://publicdata.au/d/act-air-quality/latest/data.csv (51 MB)
- xlsx: https://publicdata.au/d/act-air-quality/latest/data.xlsx (34 MB)
- json: https://publicdata.au/d/act-air-quality/latest/data.json (143 MB)
- parquet: https://publicdata.au/d/act-air-quality/latest/data.parquet (7.8 MB)
- sqlite: https://publicdata.au/d/act-air-quality/latest/data.sqlite (61 MB)
- duckdb: https://publicdata.au/d/act-air-quality/latest/data.duckdb (50 MB)
- ndjson: https://publicdata.au/d/act-air-quality/latest/data.ndjson (143 MB)
- arrow: https://publicdata.au/d/act-air-quality/latest/data.arrow (15 MB)
- csv.gz: https://publicdata.au/d/act-air-quality/latest/data.csv.gz (11 MB)

Pinned version 2026-10-04: `https://publicdata.au/d/act-air-quality/v/2026-10-04/data.<format>`. Dated versions never change.

## Query

The query API returns only the rows you ask for, as JSON, NDJSON or CSV, from the same typed rows as the files. It needs no key. Rows: https://publicdata.au/api/v1/datasets/act-air-quality/rows. Counts and sums: https://publicdata.au/api/v1/datasets/act-air-quality/aggregate.

- Rows: https://publicdata.au/api/v1/datasets/act-air-quality/rows?limit=5
- Aggregate: https://publicdata.au/api/v1/datasets/act-air-quality/aggregate?group=name&metric=avg.pm2_5

Each filter is `field=operator.value` in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive except with `ilike`. Prefix `not.` to negate a filter, as `not.eq.value`. Operators: `eq.value`, `neq.value`, `gt.value`, `gte.value`, `lt.value`, `lte.value`, `like.*text*`, `ilike.*text*`, `in.(a,b,c)`, `is.null`.

- `select`: Fields to return, comma-separated. Every field when absent.
- `order`: `field.asc` or `field.desc`, comma-separated. The publisher's row order when absent.
- `limit`: Rows per page, 1 to 10,000. 100 when absent.
- `offset`: Rows to skip. The `next` URL in each answer sets it for you.
- `group`: On `aggregate`, fields to group by, comma-separated.
- `metric`: On `aggregate`, `count`, `sum.field`, `avg.field`, `min.field` or `max.field`, comma-separated. `count` when absent.
- `format`: `json`, `ndjson` or `csv`. JSON carries the provenance header, and the others carry it in response headers.

Without a version the API answers from the newest loaded version, and that answer changes when the publisher releases again. Put `versions/<date>/` before `rows` or `aggregate` for an answer that never changes. `/api/v1/datasets/<slug>/versions` lists the loaded versions. The API allows 60 requests in 10 seconds from one address. Above that it answers 429 for 10 seconds with a `Retry-After` header, a `RateLimit-Policy` header and a JSON body that gives the limit. Every API answer carries the same `RateLimit-Policy`. A client should wait the `Retry-After` seconds, or read the files, which have no limit. OpenAPI for this dataset: https://publicdata.au/d/act-air-quality/openapi.json

## Explore

Charts and dashboards in the browser: https://publicdata.au/d/act-air-quality/explore/. A dashboard can be shared as a link or embedded.

## Smaller files

- by `name`: https://publicdata.au/d/act-air-quality/v/2026-10-04/by/name/index.json lists 3 files

## Fields

| field | type | publisher's header | note |
|---|---|---|---|
| `name` | string | Name |  |
| `gps` | string | GPS | The publisher's own text of the station's coordinates, as (latitude, longitude). |
| `datetime` | datetime | DateTime | Local time in Canberra, as the publisher gives it. |
| `no2` | number | NO2 | Nitrogen dioxide, 1-hour average in parts per million. |
| `o3_1hr` | number | O3_1hr |  |
| `o3_4hr` | number | O3_4hr | 4-hour rolling average in parts per million. |
| `o3_8hr` | number | O3_8hr | 8-hour rolling average. |
| `co` | number | CO | Carbon monoxide, 8-hour rolling average in parts per million. |
| `pm10_1hr` | number | PM10 1 hr |  |
| `pm2_5_1hr` | number | PM2.5 1 hr |  |
| `pm10` | number | PM10 |  |
| `pm2_5` | number | PM2.5 |  |
| `aqi_co` | number | AQI_CO |  |
| `aqi_no2` | number | AQI_NO2 |  |
| `aqi_o3_1hr` | number | AQI_O3_1hr |  |
| `aqi_o3_4hr` | number | AQI_O3_4hr |  |
| `aqi_o3_8hr` | number | AQI_O3_8hr |  |
| `aqi_pm10` | number | AQI_PM10 | 24-hour rolling PM10 index. |
| `aqi_pm2_5` | number | AQI_PM2.5 | 24-hour rolling PM2.5 index. |
| `aqi_site` | number | AQI_Site |  |
| `date` | date | Date |  |
| `time` | string | Time | 24-hour time as the publisher types it. |

## Versions

- 2026-10-04: 386883 rows, 22 fields, sha256 31c17a5c4a32 (386799 rows before). https://publicdata.au/d/act-air-quality/v/2026-10-04/
- 2026-10-03: 386799 rows, 22 fields, sha256 e985425f989b. https://publicdata.au/d/act-air-quality/v/2026-10-03/

Machine-readable: https://publicdata.au/d/act-air-quality/versions.json, https://publicdata.au/d/act-air-quality/changes.json, https://publicdata.au/d/act-air-quality/datapackage.json, https://publicdata.au/d/act-air-quality/schema.json, https://publicdata.au/d/act-air-quality/history.tar.zst

## Same subject, other publishers

- [Air quality hourly averages at every EPA monitoring station, Victoria, latest year](https://publicdata.au/d/vic-air-quality-hourly/) (Vic)
- [Air quality monitoring sites, South Australia](https://publicdata.au/d/sa-air-quality-monitoring-sites/) (SA)
- [Lakes and rivers water quality samples, ACT](https://publicdata.au/d/act-lakes-rivers-water-quality/) (ACT)
- [Coastal wave monitoring, Mackay](https://publicdata.au/d/qld-coastal-waves-mackay/) (Qld)
- [Coastal wave monitoring, Mooloolaba](https://publicdata.au/d/qld-coastal-waves-mooloolaba/) (Qld)
- [Coastal wave monitoring, Brisbane](https://publicdata.au/d/qld-coastal-waves-brisbane/) (Qld)
- [Coastal wave monitoring, Cairns](https://publicdata.au/d/qld-coastal-waves-cairns/) (Qld)
- [Coastal wave monitoring, Townsville](https://publicdata.au/d/qld-coastal-waves-townsville/) (Qld)
- [Coastal wave monitoring, Gold Coast](https://publicdata.au/d/qld-coastal-waves-gold-coast/) (Qld)
- [Coastal wave monitoring, Tweed Heads](https://publicdata.au/d/qld-coastal-waves-tweed-heads/) (Qld)
- [Open surface water gauging stations, Queensland](https://publicdata.au/d/qld-surface-water-gauging-stations/) (Qld)
- [Beach Report enterococci samples, Port Phillip Bay, since 2013](https://publicdata.au/d/vic-beach-report-enterococci/) (Vic)

## Attribution and citation

ACT Health Directorate, ACT Government, Air Quality Monitoring Data, https://www.data.act.gov.au/d/94a5-zqnn, accessed 4 October 2026, licensed under CC BY 4.0.

The licence requires the publisher's attribution. We ask that you also name publicdata.au and link to the version you used.

Plain text: ACT Health Directorate, ACT Government, Air Quality Monitoring Data, https://www.data.act.gov.au/d/94a5-zqnn, accessed 4 October 2026, licensed under CC BY 4.0. Serialised and versioned by National Digital at publicdata.au, https://publicdata.au/d/act-air-quality/v/2026-10-04/

Harvard: Health Protection Service, ACT Health Directorate (2026) Air quality monitoring by hour, ACT, version 2026-10-04 [data set], CC BY 4.0, sourced 4 October 2026. Serialised and versioned by National Digital at publicdata.au. Available at: https://publicdata.au/d/act-air-quality/v/2026-10-04/

Markdown: Data: [Air quality monitoring by hour, ACT](https://www.data.act.gov.au/d/94a5-zqnn), Health Protection Service, ACT Health Directorate, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), sourced 4 October 2026. Files: [publicdata.au](https://publicdata.au/d/act-air-quality/v/2026-10-04/) by [National Digital](https://nationaldigital.com.au/).

## Questions

### How do I download Air quality monitoring by hour as a CSV file?

Open https://publicdata.au/d/act-air-quality/latest/data.csv. It redirects to the newest dated version, which is https://publicdata.au/d/act-air-quality/v/2026-10-04/data.csv today. The same path serves Excel, JSON, Parquet, SQLite, DuckDB, NDJSON, Arrow. A dated URL never changes, so use it when the file must stay the same.

### Can I open Air quality monitoring by hour in Excel?

Yes. https://publicdata.au/d/act-air-quality/v/2026-10-04/data.xlsx is a workbook with the 386,883 rows on a records sheet, the field list on a second sheet and the provenance on a third. The CSV also opens in Excel. https://publicdata.au/d/act-air-quality/v/2026-10-04/data.csv.gz is the CSV at about a tenth of the size.

### What years does Air quality monitoring by hour cover?

The current version covers 2011 to 2025. Each release from ACT Health becomes a new dated version here, and earlier versions stay online.

### How often is Air quality monitoring by hour updated?

ACT Health releases it hourly, checked weekly. This site checks the portal every week and adds a dated version when the file changes.

### Can I use Air quality monitoring by hour commercially?

Yes. CC BY 4.0 allows commercial use, redistribution and derived works as long as the attribution is kept. The attribution string is in this page's side column and inside every file.

### Is this the official source for Air quality monitoring by hour?

No. The publisher is Health Protection Service, ACT Health Directorate, and its page is https://www.data.act.gov.au/d/94a5-zqnn. This site republishes the publisher's file without changing its content. The original sits beside every version as source.csv with its SHA-256, so the two can be compared.

### How do I get only the rows for one name?

Every version has one JSON file per value of name, 3 files in the current version, listed with row counts at https://publicdata.au/d/act-air-quality/v/2026-10-04/by/name/index.json. For example https://publicdata.au/d/act-air-quality/v/2026-10-04/by/name/civic.json holds the 138,169 rows where name is Civic.

### What is in each row?

One hour at one of the ACT's air quality monitoring stations (Civic, Florey and Monash), with the pollutant concentrations measured there and the Air Quality Index the publisher works out for each pollutant and for the site.

### Has the data been checked?

The publisher says the readings are unverified. They may have had no or only preliminary quality assurance, and may change after calibration changes, power failures or instrument failures.

### Why are some pollutants blank at some stations?

Not every station measures every pollutant. A blank cell is a reading the station did not make or report for that hour.

## What this site did to the data

Cells were typed, headers were renamed to snake_case and the encoding was made UTF-8. Rows were left alone. Nothing is derived. The publisher's file is beside every version as `source.csv`.

## Improve this dataset

This page is built from [register/act-air-quality.yaml](https://github.com/National-Digital/publicdata.au/blob/main/register/act-air-quality.yaml) on GitHub, and a fix to it is welcome as a pull request. https://publicdata.au/contribute/ explains how.
