Australian Electorate information
May 28, 2026 · View on GitHub
All information about electorates is available at /Data/electorates.json.
See Milestones for release notes.
Electorates
Location: /Data/electorates.json
Sample:
[
{
"Name": "Bean",
"ShortName": "bean",
"State": "ACT",
"Area": 1913.0,
"Exist2019": true,
"Exist2022": true,
"Exist2025": true,
"DateGazetted": "2018-07-13",
"Description": "<p>The Division of Bean covers an area in the south of the ACT consisting of the Districts of:</p><ul><li>Booth,</li><li>Coree,</li><li>Cotter River,</li><li>Mount Clear,</li><li>Paddys River,</li><li>Rendezvous Creek,</li><li>Stromlo,</li><li>Tennent,</li><li>Tuggeranong,</li><li>part of Jerrabomberra,</li><li>part of Molonglo Valley,</li><li>part of Weston Creek, and</li><li>part of Woden Valley</li></ul><p>The Division of Bean also includes Norfolk Island.</p>",
"DemographicRating": "<strong>Inner Metropolitan</strong> – situated in capital cities and consisting of well-established built-up suburbs",
"NameDerivation": "Named after Charles Edwin Woodrow Bean, 1879–1968, Australia's official correspondent to the Australian Imperial Force in World War One, editor of the <em>Official History of Australia in the War of 1914–1918</em> and primary advocate to establish the Australian War Memorial.",
"Enrollment": 109432,
"TwoCandidatePreferred": {
"Elected": {
"FamilyName": "Smith",
"GivenNames": "David",
"PartyCode": "ALP",
"Votes": 61935,
"Swing": 5.43,
"PartyId": 200
},
"Other": {
"FamilyName": "Hiatt",
"GivenNames": "Jane",
"PartyCode": "LP",
"Votes": 36459,
"Swing": -5.43,
"PartyId": 177
}
},
"Locations": [
{
"Postcode": 2620,
"Localities": [
"Booth District",
"Corin Dam",
"Hume",
"Paddys River District",
"Rendezvous Creek District",
"Royalla",
"Tennent District",
"Tharwa",
"Tuggeranong District",
"Williamsdale"
]
},
{
"Postcode": 2611,
Localities
Location: /Data/Localities.json
Sample:
[
{
"Place": "Beard",
"Postcode": 2620,
"Electorate": "CANBERRA"
},
{
"Place": "Booth District",
"Postcode": 2620,
"Electorate": "BEAN"
},
{
"Place": "Burra",
"Postcode": 2620,
"Electorate": "EDEN-MONARO"
},
{
"Place": "Carwoola",
"Postcode": 2620,
"Electorate": "EDEN-MONARO"
},
Parties
Location: /Data/parties.json
Sample:
[
{
"Id": 1336,
"Name": "Affordable Housing Now - Sustainable Australia Party",
"Code": "Sustainable Australia Party",
"Abbreviation": "Sustainable Australia Party",
"RegisterDate": "23 September 2010",
"AmendmentDate": "23 September 2010",
"Address": "Suite 15, 20 Burlington Street\nCROWS NEST NSW 2065",
"Officer": {
"Title": "Mr",
"FamilyName": "Bourke",
"GivenNames": "William",
"Address": {
"Line1": "Suite 15, 20 Burlington Street",
"Suburb": "Crows Nest",
"State": "NSW",
"Postcode": 2065
}
},
"DeputyOfficers": [
{
"Title": "Mr",
"FamilyName": "Haydon",
"GivenNames": "John",
"Address": {
"Line1": "3/6 Hall Street",
"Suburb": "Lyneham",
"State": "ACT",
"Postcode": 2602
}
}
],
"Branches": []
Detail Maps
AEC publishes pdf electorate maps with some extra detail. eg:
- Rivers
- Main Roads
- Neighboring electorates
The size of these pdfs is significant. The smaller file variants are approx 600MB in total.
To change these to a more manageable size and format, they have been converted to png and are now approx 30MB in total. Located in /Data/DetailMaps.
There are 3 variants of these files:
- Default: A direct conversion from the AEC pdf. Have no suffix ie
electorate.png. - Landscape: Converted to landscape. Has the suffix
_landscape.ieelectorate_landscape.png. - Portrait: Converted to portrait. Has the suffix
_portrait.ieelectorate_portrait.png.
GeoJson Maps
Maps in geojson format.
The following grouping of maps exist:
- 2022 election /Data/Maps/2022
- 2019 election /Data/Maps/2019
- 2016 election /Data/Maps/2016
Structure
Each of the above groupings have the following structure.
- Australia and state "combined electorate" maps are at the root.
- Specific electorate maps are located inside a subdirectory based on the state they exist in.
Map variants
Each maps has multiple variants based on simplification.
With the two options combined, there are 5 different options for each map.
Below is the combinations for Bass
| Size | File name | Simplification |
|---|---|---|
| 2.8MB | bass.geojson | none |
| 231KB | bass_20.geojson | 20% |
| 94KB | bass_10.geojson | 10% |
| 46KB | bass_05.geojson | 5% |
| 8KB | bass_01.geojson | 1% |
Simplification
Simplification uses MapShaper simplify option
Visvalingam simplification iteratively removes the least important point from a polyline. The importance of points is measured using a metric based on the geometry of the triangle formed by each non-endpoint vertex and the two neighboring vertices
The level of simplification is represented as a percent number. 20, 10, 5, and 1. representing 20%, 10%, 5%, and 1%. The smaller the number the smaller the file, but with the loss of some accuracy.
NuGets
The NuGets contain a static copy of the electorate data. This data is embedded as resources inside the assembly. No network calls are done.
- AustralianElectorates
- AustralianElectorates.Bogus
- AustralianElectorates.DetailMaps
- AustralianElectorates.DetailMaps.Landscape
- AustralianElectorates.DetailMaps.Portrait
To get the latests version of the data do a NuGet update. There are several options to help keep a NuGet update:
- Dependabot: Creates pull requests to keep dependencies secure and up-to-date.
- Using NuGet wildcards.
- Libraries.io: Supports subscribing to NuGet package updates.
Usage
// get an electorate by name
var fenner = DataLoader.Fenner;
Trace.WriteLine(fenner.Description);
// get an electorate by string
var canberra = DataLoader.Electorates.Single(_ => _.Name == "Canberra");
Trace.WriteLine(canberra.Description);
// get an electorates maps (geojson) by string
var fennerGeoJson2019 = DataLoader.Fenner.Get2019Map();
Trace.WriteLine(fennerGeoJson2019);
var fennerGeoJson2022 = DataLoader.Fenner.Get2022Map();
Trace.WriteLine(fennerGeoJson2022);
var fennerGeoJson2025 = DataLoader.Fenner.Get2025Map();
Trace.WriteLine(fennerGeoJson2025);
// get an electorates maps (geojson) by string
var canberraGeoJson2019 = DataLoader.Maps2019.GetElectorate("Canberra");
Trace.WriteLine(canberraGeoJson2019);
var canberraGeoJson2022 = DataLoader.Maps2022.GetElectorate("Canberra");
Trace.WriteLine(canberraGeoJson2022);
var canberraGeoJson2025 = DataLoader.Maps2022.GetElectorate("Canberra");
Trace.WriteLine(canberraGeoJson2025);
// export all data to a directory
// structure will be
// /electorates.json
// /2019 (2019 states and australia geojson files)
// /2019/Electorates (2019 electorate geojson files)
// /2022 (202 states and australia geojson files)
// /2022/Electorates (2022 electorate geojson files)
var directory = Path.Combine(Environment.CurrentDirectory, "Maps");
Directory.CreateDirectory(directory);
return DataLoader.Export(directory);
Location Lookup
Find the electorate that contains a geographic location (latitude/longitude). LocateElectorate throws if the location is not inside any electorate; use TryLocateElectorate to handle that case. A postcode can optionally be supplied as a performance hint: it narrows the candidate electorates before the geometric test and falls back to a full search, so the result is identical.
// find the electorate containing a location (latitude, longitude)
// throws if the location is outside all electorates
var electorate = DataLoader.LocateElectorate(-35.349, 149.09);
Trace.WriteLine(electorate.Name);
// or use the Try variant when the location may be outside all electorates
if (DataLoader.TryLocateElectorate(-35.349, 149.09, out var found))
{
Trace.WriteLine(found.Name);
}
// optionally pass a postcode as a performance hint; it narrows the
// candidate electorates first, then falls back to a full search
var byPostcode = DataLoader.LocateElectorate(-35.349, 149.09, 2903);
Trace.WriteLine(byPostcode.Name);
Electorates for Postcode
Get all current (2025) electorates that include a given postcode. A postcode can span multiple electorates.
// all current electorates that include a postcode
var electorates = DataLoader.ElectoratesForPostcode(2606);
foreach (var electorate in electorates)
{
Trace.WriteLine(electorate.Name);
}
Bogus Usage
var faker = new Faker<Target>()
.RuleFor(
property: u => u.RandomElectorate,
setter: (f, _) => f
.AustralianElectorates()
.Electorate())
.RuleFor(
property: u => u.RandomElectorateName,
setter: (f, _) => f
.AustralianElectorates()
.Name());
var targetInstance = faker.Generate();
DetailMaps Usage
var pathToPng = DetailMaps.MapForElectorate("Bass");
Copyright
Code
The code in this repository is licensed under MIT.
Copyright © 2018 Commonwealth of Australia (Department of the Prime Minister and Cabinet)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Content/Data
The content/data that is rendered (all files under /Data/) is sourced from the Australian Electoral Commission (AEC) and remains under the AEC Copyright.
The content/data in this repository does not necessarily represent the latest data made available by the AEC. The Department of the Prime Minister and Cabinet gives no warranty regarding the accuracy, completeness, currency or suitability of the content/data for any particular purpose.
This product (AustralianElectorates) incorporates data that is:
© Commonwealth of Australia (Australian Electoral Commission) 2018
The Data (Commonwealth Electoral Boundaries (various years)) has been used in AustralianElectorates with the permission of the Australian Electoral Commission. The Australian Electoral Commission has not evaluated the Data as altered and incorporated within AustralianElectorates, and therefore gives no warranty regarding its accuracy, completeness, currency or suitability for any particular purpose.
Limited End-user licence provided by the Australian Electoral Commission:
You may use AustralianElectorates to load, display, print and reproduce views obtained from the Data, retaining this notice, for your personal use, or use within your organisation only.
Re-Generating the data
Note: The below are only required by the maintainers and contributors of this project. They are not required when consuming the NuGet package.
Some tools are required.
Adding new elections
Elections are currently added manually as they are declared.
[
new()
{
Parliament = 46,
Year = 2019,
Date = new(2019, 05, 18),
Electorates = Electorates
.Where(_ => _.Exist2019)
.ToList()
},
new()
{
Parliament = 47,
Year = 2022,
Date = new(2022, 05, 21),
Electorates = Electorates
.Where(_ => _.Exist2022)
.ToList()
},
new()
{
Parliament = 48,
Year = 2024,
Date = new(2022, 05, 3),
Electorates = Electorates
.Where(_ => _.Exist2025)
.ToList()
}
];
ogr2ogr
Part of Geospatial Data Abstraction Library (GDAL)
Ensure in path
- C:\Tools\gdal\bin
- C:\Tools\gdal\bin\gdal\apps\
MapShaper
Installation:
- Install Node
- Install MapShaper globally
npm install -g mapshaper - Ensure
C:\Users\USER\AppData\Roaming\npmis in path
https://github.com/mbloch/mapshaper/wiki/Command-Reference
GhostScript
C:\Program Files\gs\gs9.27\bin\
pngquant
Purge history
git checkout --orphan newBranch
# Add all files and commit them
git add -A
git commit -m "Initial commit"
# Delete the master branch
git branch -D master
# Rename the current branch to master
git branch -m master
# Force push master branch to github
git push -f origin master
# remove the old files
git gc --aggressive --prune=all
Notes
Media feed ftp://mediafeed.aec.gov.au/24310/Standard/Verbose/
Verbose Feed: Contains up-to-date election results and information. The feed contains static data, such as candidate names, and dynamic data such as votes. The verbose feed also contains calculated results like swings and aggregated results to the state and national level. This feed is suitable for users who have their own IT system and who may or may not have pre-loaded data and is also suitable for those users who do not have an IT system and simply wish to transform the XMLfile into another format.
From: https://www.aec.gov.au/media/mediafeed/files/media-feed-user-guide-v4.pdf
Icon
Icon designed by Iconathon from The Noun Project.