---
title: Air quality hourly averages at every EPA monitoring station, Victoria, latest year
resource: https://publicdata.au/d/vic-air-quality-hourly/
publisher: Environment Protection Authority Victoria
licence: CC BY 4.0
licence_url: https://creativecommons.org/licenses/by/4.0/
version: 2026-10-03
rows: 884554
fields: 17
source: https://apps.epa.vic.gov.au/datavic/Data_Vic/AirWatch/2025_All_sites_air_quality_hourly_avg_AIR-I-F-V-VH-O-S1-DB-M2-4-0.xlsx
source_sha256: c3981abdffcee913c4e414855350ada646a1cc9ec160981f99bab99b392c456c
language: en-AU
operator: National Digital
not_endorsed: true
---

# Air quality hourly averages at every EPA monitoring station, Victoria, latest year

Every validated hourly air quality and weather reading from EPA Victoria's monitoring stations for the latest full year, about 880,000 rows, one row per station, measure and hour.

Published by Environment Protection Authority Victoria under CC BY 4.0 and republished here in other formats, with cells typed and suppressed values made null. Environment Protection Authority Victoria has not endorsed this site.

Also called: EPA AirWatch hourly averages, Victoria air pollution data by station, Melbourne PM2.5 and ozone hourly readings, EPA Victoria validated air quality data.

## Download

Latest version, redirects to `https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/`:

- csv: https://publicdata.au/d/vic-air-quality-hourly/latest/data.csv (198 MB)
- xlsx: https://publicdata.au/d/vic-air-quality-hourly/latest/data.xlsx (69 MB)
- json: https://publicdata.au/d/vic-air-quality-hourly/latest/data.json (465 MB)
- parquet: https://publicdata.au/d/vic-air-quality-hourly/latest/data.parquet (4.6 MB)
- sqlite: https://publicdata.au/d/vic-air-quality-hourly/latest/data.sqlite (188 MB)
- duckdb: https://publicdata.au/d/vic-air-quality-hourly/latest/data.duckdb (40 MB)
- ndjson: https://publicdata.au/d/vic-air-quality-hourly/latest/data.ndjson (464 MB)
- arrow: https://publicdata.au/d/vic-air-quality-hourly/latest/data.arrow (27 MB)
- csv.gz: https://publicdata.au/d/vic-air-quality-hourly/latest/data.csv.gz (7.4 MB)

Pinned version 2026-10-03: `https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/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/vic-air-quality-hourly/rows. Counts and sums: https://publicdata.au/api/v1/datasets/vic-air-quality-hourly/aggregate.

- Rows: https://publicdata.au/api/v1/datasets/vic-air-quality-hourly/rows?parameter_name=eq.PM2.5&limit=5
- Aggregate: https://publicdata.au/api/v1/datasets/vic-air-quality-hourly/aggregate?group=location_name&metric=avg.value&parameter_name=eq.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/vic-air-quality-hourly/openapi.json

## Explore

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

## Smaller files

- by `parameter_name`: https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/by/parameter_name/index.json lists 15 files

## Fields

| field | type | publisher's header | note |
|---|---|---|---|
| `datetime_aest` | datetime | datetime_AEST |  |
| `datetime_local` | datetime | datetime_local |  |
| `date_hour_start_utc_id` | integer | date_hour_start_utc_id | The UTC hour as YYYYMMDDHH, the publisher's identifier for the hour. |
| `sample_point_id` | integer | sample_point_id |  |
| `location_id` | integer | location_id |  |
| `location_name` | string | location_name |  |
| `latitude` | number | latitude |  |
| `longitude` | number | longitude |  |
| `value` | number | value | The hourly average in the unit given in unit_of_measure. |
| `validation_flag` | string | validation_flag |  |
| `parameter_name` | string | parameter_name | A short code such as PM2.5, O3, NO2 or DBT. |
| `parameter_method_name` | string | parameter_method_name |  |
| `parameter_description` | string | parameter_description |  |
| `analysis_method_name` | string | analysis_method_name |  |
| `unit_of_measure` | string | unit_of_measure |  |
| `method_quality` | string | method_quality |  |
| `datetime_utc` | datetime | datetime_UTC |  |

## Versions

- 2026-10-03: 884554 rows, 17 fields, sha256 c3981abdffce. https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/

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

## Same subject, other publishers

- [Air quality monitoring by hour, ACT](https://publicdata.au/d/act-air-quality/) (ACT)
- [Air quality monitoring sites, South Australia](https://publicdata.au/d/sa-air-quality-monitoring-sites/) (SA)
- [Beachwatch swim sites with pollution forecasts and latest water quality, New South Wales](https://publicdata.au/d/nsw-beachwatch-sites/) (NSW)
- [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)
- [Lakes and rivers water quality samples, ACT](https://publicdata.au/d/act-lakes-rivers-water-quality/) (ACT)

## Attribution and citation

Environment Protection Authority Victoria, Victorian Government, EPA Air Watch All Sites Air Quality Hourly Averages - Yearly, sourced 3 October 2026, https://discover.data.vic.gov.au/dataset/epa-air-watch-all-sites-air-quality-hourly-averages-yearly, 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: Environment Protection Authority Victoria, Victorian Government, EPA Air Watch All Sites Air Quality Hourly Averages - Yearly, sourced 3 October 2026, https://discover.data.vic.gov.au/dataset/epa-air-watch-all-sites-air-quality-hourly-averages-yearly, licensed under CC BY 4.0. Serialised and versioned by National Digital at publicdata.au, https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/

Harvard: Environment Protection Authority Victoria (2026) Air quality hourly averages at every EPA monitoring station, Victoria, latest year, version 2026-10-03 [data set], CC BY 4.0, sourced 3 October 2026. Serialised and versioned by National Digital at publicdata.au. Available at: https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/

Markdown: Data: [Air quality hourly averages at every EPA monitoring station, Victoria, latest year](https://discover.data.vic.gov.au/dataset/epa-air-watch-all-sites-air-quality-hourly-averages-yearly), Environment Protection Authority Victoria, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), sourced 3 October 2026. Files: [publicdata.au](https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/) by [National Digital](https://nationaldigital.com.au/).

## Questions

### How do I download Air quality hourly averages at every EPA monitoring station, Victoria as a CSV file?

Open https://publicdata.au/d/vic-air-quality-hourly/latest/data.csv. It redirects to the newest dated version, which is https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/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 hourly averages at every EPA monitoring station, Victoria in Excel?

Yes. https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/data.xlsx is a workbook with the 884,554 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/vic-air-quality-hourly/v/2026-10-03/data.csv.gz is the CSV at about a tenth of the size.

### What years does Air quality hourly averages at every EPA monitoring station, Victoria cover?

The current version covers the years since 2025. Each release from EPA Victoria becomes a new dated version here, and earlier versions stay online.

### How often is Air quality hourly averages at every EPA monitoring station, Victoria updated?

EPA Victoria releases it yearly. This site checks the portal every week and adds a dated version when the file changes.

### Can I use Air quality hourly averages at every EPA monitoring station, Victoria 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 hourly averages at every EPA monitoring station, Victoria?

No. The publisher is Environment Protection Authority Victoria, and its page is https://discover.data.vic.gov.au/dataset/epa-air-watch-all-sites-air-quality-hourly-averages-yearly. This site republishes the publisher's file without changing its content. The original sits beside every version as source.xlsx with its SHA-256, so the two can be compared.

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

Every version has one JSON file per value of parameter_name, 15 files in the current version, listed with row counts at https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/by/parameter_name/index.json. For example https://publicdata.au/d/vic-air-quality-hourly/v/2026-10-03/by/parameter_name/dbt.json holds the 96,867 rows where parameter_name is DBT.

### What does each row hold?

One hourly average of one measure at one EPA monitoring station, with the hour in AEST, local time and UTC, the station and its coordinates, the value and its unit, a validation flag and the method used. The measures include particles (PM2.5 and PM10), ozone, nitrogen oxides, sulfur dioxide, carbon monoxide, visibility and weather readings such as temperature and wind.

### Which year does it cover?

EPA releases one workbook per calendar year once the year's data is validated, and this entry follows the newest. The first version holds 2025 and the first hours of 1 January 2026. Earlier years are on the publisher's portal as separate workbooks, back to 1979, and each later year is kept here as a new version.

### Why are some values negative?

Gas analysers can read slightly below zero at very low concentrations. EPA publishes these validated values as measured, and they are kept as published.

## 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.xlsx`.

## Improve this dataset

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