Totals and trends

GET/v1/stats/outages answers "how many" questions in one call, without paging through the archive.

curl -H "Authorization: Bearer $AOT_API_KEY" \
  "https://api.aussieoutagetracker.com.au/v1/stats/outages?group_by=network&type=unplanned"
200GET /v1/stats/outages?group_by=network&type=unplanned
{
  "data": [
    {
      "key": "ausgrid",
      "outages": 25,
      "customers_affected": 1205,
      "median_duration_minutes": 209
    },
    {
      "key": "ausnet",
      "outages": 14,
      "customers_affected": 4260,
      "median_duration_minutes": 211
    }
  ],
  "window": {
    "from": "2026-09-20T02:28:31.420Z",
    "to": "2026-10-20T02:28:31.420Z"
  },
  "meta": {
    "data_as_of": "2026-10-20T02:28:26.234Z"
  }
}

A real response, captured from the API. Arrays are shortened to two items.

Each row is one group:

  • key — a network id, a state, a cause category, a date (YYYY-MM-DD) or a month (YYYY-MM), depending on group_by.
  • outages — how many outages in the group started in the window.
  • customers_affected — the sum of customers_affected across the group's outages that carry a count. null when none does.
  • median_duration_minutes — the median duration of the group's restored outages.

window echoes the window used.

Choosing the split

group_byRows areFor
networkeach network idwhich network had the most faults this month
stateeach state or territorynational comparisons
causeeach cause categorywhat causes outages, and how long each kind lasts
dayeach datea daily series for a chart
montheach montha longer trend

day and month are cut in each outage's own state's local time, so a Perth outage at 11pm on the 31st counts for that day in Perth, not the next day in Sydney.

Filters and window

from and to set the window; it defaults to the 30 days before to, and to defaults to now. A window may be up to 400 days. state, network, type and cause narrow it the same way they do on GET/v1/outages.

# Unplanned outages by cause in Queensland, this year to date
curl -H "Authorization: Bearer $AOT_API_KEY" \
  "https://api.aussieoutagetracker.com.au/v1/stats/outages?group_by=cause&state=qld&type=unplanned&from=2026-01-01T00:00:00Z"

That window starts before recording did. Nothing earlier than each network's start date exists, so there is simply nothing there to count.

Reading totals honestly

  • Cancelled work is not counted. It did not happen.
  • Compare like with like. Networks differ in what they publish: some publish no customer counts at all, some list planned work weeks ahead and some only once it starts. A network with no counts adds outages to a total but no customers. GET/v1/networks gives each network's publishes shares; read them before ranking networks against each other.
  • The archive has a start date per network. A trend that crosses a network's start date shows a step that is the archive beginning, not outages rising. Start dates are on Networks and coverage.
  • Durations are of restored outages. median_duration_minutes ignores outages still open and cancelled work. Outages explains how a restoration time is known.