Participant Registration List
The official list of all market participants (generators, loads, storage, and some others) is outside the main MMS dataset, and in a different format to the main dataset (Excel, not CSV). This contains DUID, participant name, a descriptive generator name, and fuel type information.
You can find it in the NEM Registration and Exemption List, on the Registration page.
There are many sheets in this .xlsx Excel file.
The main one is PU and Scheduled Loads, which contains columns:
Warning
This file is very messy. Be very cautious when programatically extracting data.
- Some values may be wrapped in quotes. (e.g.
Categorymay beMarketor"Market") - Some values have trailing spaces
- Some values have spelling mistakes (e.g.
photovoltilacornatrual gas) - Some empty values are actually empty, others are
-
If you see assets here, but not in other tables, it is likely that this is because they are unscheduled.
Warning
When generators retire, they are removed from this file. (Unlike all other AEMO data, where it is kept for posterity and marked as no longer applicable.)
Note that Basslink (the DC interconnector from Tasmania to Victoria) is included (although this may change soon). Other interconnectors are not included.
Warning
Some numbers in this file are stored as text.

This means that if you open it in Excel, operations such as summing numbers will give you incorrect results.

Tip
You can also get the fuel type of each DUID from CO2EII_AVAILABLE_GENERATORS.
Column Schema
Participant
This is a human-readable description. It is not the literal PARTICIPANTID column, but should map to that one-to-one.
Examples value: South Australian Water Corporation.
This column is mandatory.
Station Name
Example: Adelaide Desalination Plant
This column is mandatory.
Region
This is the REGIONID.
Values:
QLD1VIC1TAS1NSW1SA1
This column is mandatory.
Dispatch Type
Values:
Bidirectional UnitGenerating UnitLoad
This column is mandatory.
Some batteries are represented as a single bidirectional DUID, some are 2 related DUIDs.
(More information.)
Category
Values:
MarketNon-Market
Classification
This tells you whether the generator is scheduled or not.
For more information about this concept, see the dedicated guide. Non-Scheduled assets are missing from many tables.
Examples:
ScheduledNon-ScheduledSemi-Scheduled
Fuel Source - Primary
Examples:
Battery StorageHydroSolar
Fuel Source - Descriptor
Examples:
GridWaterSolar
Warning
This value may have spelling mistakes.
e.g. Natrual Gas/ Diesel instead of Natural Gas/ Diesel
Warning
This value may have trailing spaces and be wrapped in quotes, e.g. "solar ".
Warning
When classifying generators into broad types using keyword searches, be careful.
Coal Seam Methane should probably be counted as gas, not coal, despite containing the word "coal".
Landfill Methane / Landfill Gas should probably be counted as biowaste not gas, despite containing the word "gas".
Technology Type - Primary
Examples:
- Storage
- Renewable
Technology Type - Descriptor
Examples:
Battery and InverterRun of RiverPhotovoltaic Tracking Flat panelPhotovoltaic Flat panel
Warning
This value may have spelling mistakes.
e.g. Photovoltalic Tracking Flat Panel instead of Photovoltaic Tracking Flat Panel
Units
Examples:
1,2-31-21-4, 5-9
Aggregation
Values:
YN
This field is optional.
DUID
Examples of values in the file:
W/HOE#2ALDGASF1ANGAST1
This value can be empty (represented as -). This is the case for some (but not all) non-scheduled generators, and Callide A, whose DUID was deleted around when it was decomissioned.
More information here.
Reg Cap generation (MW)
Max Cap generation (MW)
To understand the difference between registered capacity and maximum capacity, see this Watt Clarity guide
Max ROC/Min generation
"ROC" stands for "Rate of Change"
This may be empty.
Reg Cap consumption (MW)
This may be empty.
Max Cap consumption (MW)
This may be empty.
Max ROC/Min consumption
This may be empty.
Maximum storage capacity
This may be empty.
Comments
This is always empty.
Data Sample
| Participant | Station Name | Region | Dispatch Type | Category | Classification | Fuel Source - Primary | Fuel Source - Descriptor | Technology Type - Primary | Technology Type - Descriptor | Units | Aggregation | DUID | Reg Cap generation (MW) | Max Cap generation (MW) | Max ROC/Min generation | Reg Cap consumption (MW) | Max Cap consumption (MW) | Max ROC/Min consumption | Maximum storage capacity | Comments |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| South Australian Water Corporation | Adelaide Desalination Plant | SA1 | Bidirectional Unit | Market | Scheduled | Battery Storage | Grid | Storage | Battery and Inverter | 1,2-3 | Y | ADPBA1 | 7.76 | 6.15 | 4 | 7 | 6 | 4 | 6 | |
| South Australian Water Corporation | Adelaide Desalination Plant | SA1 | Generating Unit | Market | Non-Scheduled | Hydro | Water | Renewable | Run of River | 1-2 | Y | ADPMH1 | 1.44 | 1 | - | |||||
| South Australian Water Corporation | Adelaide Desalination Plant | SA1 | Generating Unit | Market | Semi-Scheduled | Solar | Solar | Renewable | Photovoltaic Tracking Flat panel | 1-4, 5-9 | Y | ADPPV1 | 24.75 | 19 | 4 | |||||
| South Australian Water Corporation | Adelaide Desalination Plant | SA1 | Generating Unit | Market | Non-Scheduled | Solar | Solar | Renewable | Photovoltaic Flat panel | 1-2 | Y | ADPPV2 | 0.2 | 0.2 | - |
Code Examples
Downloading with Requests
AEMO recently started discriminating against user-agents. So if you try to download this programatically with a script, you will be blocked, unless you set your request header to pretend to be Chrome.
(AEMO if you're reading this and don't like it, then please just move this data to nemweb with all your other data.)
from requests import Session
s = Session()
s.headers.update(
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
)
url = "https://www.aemo.com.au/-/media/files/electricity/nem/participant_information/nem-registration-and-exemption-list.xlsx"
r = s.get(url)
r.raise_for_status()
with open("nem-registration-and-exemption-list.xlsx", "wb") as f:
f.write(r.content)
Nemosis
Nemosis calls this the "Generators and Scheduled Loads" table.
from nemosis import static_table
df = static_table("Generators and Scheduled Loads", raw_data_cache)
Mapping Fuel Types
See the example here