Geocoded National Address File (G-NAF), Geoscape
liveG-NAF is the Geocoded National Address File, the address database Geoscape Australia builds from the address data of the states, territories and the Commonwealth and publishes each quarter on data.gov.au. Each release is a set of pipe-separated files that make up a relational database: addresses, the sites and geocodes behind them, aliases, streets, localities, states and the ABS mesh block each address falls in, with lookup tables for every code.
This site serves each release as one DuckDB database holding every table, the keys and references between them and Geoscape's own address view, which joins an address to its street, locality, state and default geocode. The same tables are also served as one Parquet file each. The database attaches read-only over HTTPS, so a query over addresses runs without downloading the release. Coordinates are GDA2020.
Also called: G-NAF, GNAF, Geocoded National Address File, PSMA G-NAF, Australian address database.
- The licence has a condition
- You must not use the data to generate an address, or a compilation of addresses, for the sending of mail unless you have verified that each address is capable of receiving mail by reference to a secondary source (clause 2(a)(2) of the EULA). The licence is otherwise CC BY 4.0: use, share and build on it with the attribution kept.
- What is the condition on use?
- The Open G-NAF End User Licence Agreement is CC BY 4.0 with one condition added: the data must not be used to generate an address, or a compilation of addresses, for the sending of mail unless each address has been verified as capable of receiving mail by reference to a secondary source. Geoscape's fact sheet on the restriction is on the source page. Everything else CC BY 4.0 allows, this licence allows, with the attribution kept.
- Which coordinate system is it in?
- GDA2020. Geoscape publishes a GDA94 release beside it, which this site does not serve.
- Where do I start?
- The address_view view is one row per address with its street, locality, state, postcode and default geocode already joined, from Geoscape's own script. The address_detail table is the same addresses with every field and the keys into the other tables. Every code column has a lookup table ending in _aut.
- Why is there no CSV or Excel file?
- A release is 37 tables and about 131 million rows, which is not one spreadsheet. The DuckDB file holds every table and attaches over HTTPS, and each table is also a Parquet file that pandas, R, Spark and DuckDB read directly. The publisher's pipe-separated files are beside every version as source.zip.
- Does it include G-NAF Core?
- No. G-NAF Core is a flattened single-table cut Geoscape publishes on its own site. The address view here serves the same purpose from the full release.
One database, every table
Query it from R, Python or DuckDB without downloading it
The DuckDB file holds all 37 tables, the 1 view and the keys between them. It attaches read-only over HTTPS, and only the blocks a query touches are read. Start with address_view.
The dated URL in the code never changes. https://publicdata.au/d/gnaf/latest/data.duckdb redirects to the newest version.
library(publicdataau)
con <- pd_connect("gnaf")
DBI::dbGetQuery(con, "SELECT postcode, count(*) AS n FROM address_view GROUP BY 1 ORDER BY 2 DESC LIMIT 10")
# dplyr: pd_tbl("gnaf", "address_view") pd_connect() attaches the version read-only over HTTPS, so the query runs without a download. Needs the duckdb and DBI packages.
import publicdata_au as pd_au
con = pd_au.connect("gnaf")
con.sql("SELECT postcode, count(*) AS n FROM address_view GROUP BY 1 ORDER BY 2 DESC LIMIT 10").df() pip install publicdata-au duckdb. The connection has the version attached read-only; every table and view is in it.
INSTALL httpfs; LOAD httpfs;
ATTACH 'https://publicdata.au/d/gnaf/v/2026-08-17/data.duckdb' AS gnaf (READ_ONLY);
SELECT postcode, count(*) AS n FROM gnaf.address_view GROUP BY 1 ORDER BY 2 DESC LIMIT 10; In the DuckDB shell or any client. Only the blocks the query touches are read over HTTPS.
import pandas as pd
df = pd.read_parquet('https://publicdata.au/d/gnaf/v/2026-08-17/tables/address_detail.parquet') One Parquet file per table under tables/, for pandas, Polars, Arrow, Spark and R's arrow package.
Made for agents
Connect your AI agent
Any agent that connects to publicdata.au/mcp can find this dataset, read its 37 tables and 219 fields and diff its versions. Every answer names the version and carries Geoscape's attribution. No key.
Then ask it: What does Geocoded National Address File (G-NAF), Geoscape hold, and how do I attach it?
claude mcp add --transport http publicdata https://publicdata.au/mcp One command. No key, no account, no sign-up.
Settings, then Connectors, then Add custom connector, and paste https://publicdata.au/mcp.
On the web and in the desktop app.
https://publicdata.au/mcp Streamable HTTP. Cursor, VS Code or any client that connects to a remote MCP server.
Using https://publicdata.au/llms.txt, how many people died on Queensland roads in 2025, by month? For an assistant that reads the web and has no connector.
Download the database, or one table at a time
Every file is from version 2026-08-17. A dated version keeps its content. The same files sit under https://publicdata.au/d/gnaf/latest/, which redirects to the newest version.
- data.duckdbevery table and view, with the provenance in a publicdata table
- schema.sql
CREATE TABLEfor every table with keys and references, and the views, for PostgreSQL and most SQL dialects - schema.jsonevery table as a Frictionless Table Schema, with primary and foreign keys
- source.zip1.9 GB · the publisher's archive, byte for byte as fetched
One Parquet file per table, 2.3 GB in all, under tables/. Each carries the provenance header in its metadata.
| Table | Rows | Key | Refers to | Parquet |
|---|---|---|---|---|
| address_detail | 16,970,406 | address_detail_pid | address_site, flat_type_aut, geocoded_level_type_aut, level_type_aut, locality, street_locality | Parquet 576 MB |
| address_default_geocode | 16,970,406 | address_default_geocode_pid | address_detail, geocode_type_aut | Parquet 466 MB |
| address_site | 16,970,406 | address_site_pid | address_type_aut | Parquet 98 MB |
| address_site_geocode | 20,754,564 | address_site_geocode_pid | address_site, geocode_reliability_aut, geocode_type_aut | Parquet 576 MB |
| address_alias | 878,895 | address_alias_pid | address_alias_type_aut, address_detail | Parquet 14 MB |
| address_feature | 234,311 | address_feature_id | address_change_type_aut, address_detail | Parquet 3.3 MB |
| primary_secondary | 4,966,622 | primary_secondary_pid | address_detail, ps_join_type_aut | Parquet 66 MB |
| street_locality | 767,239 | street_locality_pid | geocode_reliability_aut, locality, street_class_aut, street_suffix_aut, street_type_aut | Parquet 13 MB |
| street_locality_alias | 41,100 | street_locality_alias_pid | street_locality, street_locality_alias_type_aut, street_suffix_aut, street_type_aut | Parquet 736 KB |
| street_locality_point | 719,651 | street_locality_point_pid | street_locality | Parquet 22 MB |
| locality | 17,581 | locality_pid | geocode_reliability_aut, locality_class_aut, state | Parquet 365 KB |
| locality_alias | 29,577 | locality_alias_pid | locality, locality_alias_type_aut | Parquet 458 KB |
| locality_neighbour | 89,438 | locality_neighbour_pid | locality | Parquet 794 KB |
| locality_point | 17,581 | locality_point_pid | locality | Parquet 570 KB |
| state | 9 | state_pid | Parquet 9.0 KB | |
| address_mesh_block_2026 | 16,970,406 | address_mesh_block_pid_2026 | address_detail, mb_2026, mb_match_code_aut | Parquet 156 MB |
| mb_2026 | 374,916 | mb_pid_2026 | Parquet 4.0 MB | |
| address_mesh_block_2021 | 16,970,406 | address_mesh_block_2021_pid | address_detail, mb_2021, mb_match_code_aut | Parquet 156 MB |
| mb_2021 | 368,285 | mb_2021_pid | Parquet 3.1 MB | |
| address_mesh_block_2016 | 16,970,406 | address_mesh_block_2016_pid | address_detail, mb_2016, mb_match_code_aut | Parquet 156 MB |
| mb_2016 | 358,122 | mb_2016_pid | Parquet 2.9 MB | |
| address_alias_type_aut | 8 | code | Parquet 8.6 KB | |
| address_change_type_aut | 511 | code | Parquet 17 KB | |
| address_type_aut | 3 | code | Parquet 8.2 KB | |
| flat_type_aut | 54 | code | Parquet 9.3 KB | |
| geocoded_level_type_aut | 8 | code | Parquet 8.7 KB | |
| geocode_reliability_aut | 6 | code | Parquet 9.0 KB | |
| geocode_type_aut | 30 | code | Parquet 9.7 KB | |
| level_type_aut | 16 | code | Parquet 8.6 KB | |
| locality_alias_type_aut | 2 | code | Parquet 8.3 KB | |
| locality_class_aut | 9 | code | Parquet 8.7 KB | |
| mb_match_code_aut | 5 | code | Parquet 9.4 KB | |
| ps_join_type_aut | 2 | code | Parquet 8.7 KB | |
| street_class_aut | 2 | code | Parquet 8.9 KB | |
| street_locality_alias_type_aut | 2 | code | Parquet 8.3 KB | |
| street_suffix_aut | 19 | code | Parquet 8.5 KB | |
| street_type_aut | 276 | code | Parquet 12 KB |
What is in it
Column names are the publisher's own in snake_case, and the publisher's header is kept beside each one. Cells are typed. Blank cells are null. Nothing is added, removed, ranked or summarised; the view below is the publisher's own script.
address_detail 16,970,406 rows, 35 fields
One row per address: its building, lot, flat, level and street numbers, the street and locality it sits in, its postcode and confidence, and the dates it was created, last changed and retired. The key is address_detail_pid. Publisher's table ADDRESS_DETAIL. address_detail.parquet (576 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address, which never changes. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_last_modified | date | DATE_LAST_MODIFIED | The date the row last changed. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| building_name | string | BUILDING_NAME | The building's name, where it has one. |
| lot_number_prefix | string | LOT_NUMBER_PREFIX | The prefix of the lot number. |
| lot_number | string | LOT_NUMBER | The lot number, for an address with no street number. |
| lot_number_suffix | string | LOT_NUMBER_SUFFIX | The suffix of the lot number. |
| flat_type_code | string | FLAT_TYPE_CODE | The kind of flat, from flat_type_aut. Refers to flat_type_aut.code. |
| flat_number_prefix | string | FLAT_NUMBER_PREFIX | The prefix of the flat number. |
| flat_number | integer | FLAT_NUMBER | The flat, unit, apartment or shop number. |
| flat_number_suffix | string | FLAT_NUMBER_SUFFIX | The suffix of the flat number. |
| level_type_code | string | LEVEL_TYPE_CODE | The kind of level, from level_type_aut. Refers to level_type_aut.code. |
| level_number_prefix | string | LEVEL_NUMBER_PREFIX | The prefix of the level number. |
| level_number | integer | LEVEL_NUMBER | The level number within the building. |
| level_number_suffix | string | LEVEL_NUMBER_SUFFIX | The suffix of the level number. |
| number_first_prefix | string | NUMBER_FIRST_PREFIX | The prefix of the first street number. |
| number_first | integer | NUMBER_FIRST | The street number, or the first of a range. |
| number_first_suffix | string | NUMBER_FIRST_SUFFIX | The suffix of the first street number. |
| number_last_prefix | string | NUMBER_LAST_PREFIX | The prefix of the last street number. |
| number_last | integer | NUMBER_LAST | The last street number of a range. |
| number_last_suffix | string | NUMBER_LAST_SUFFIX | The suffix of the last street number. |
| street_locality_pid | string | STREET_LOCALITY_PID | The street within a locality, from street_locality. Refers to street_locality.street_locality_pid. |
| location_description | string | LOCATION_DESCRIPTION | A description of the location, for an address with no street. |
| locality_pid | string | LOCALITY_PID | The locality, from locality. Refers to locality.locality_pid. |
| alias_principal | string | ALIAS_PRINCIPAL | P for a principal address, A for an alias. |
| postcode | string | POSTCODE | The postcode, as text. |
| private_street | string | PRIVATE_STREET | The private street name, for an address on one. |
| legal_parcel_id | string | LEGAL_PARCEL_ID | The legal parcel identifier of the land, where known. |
| confidence | integer | CONFIDENCE | How many of the contributors hold the address, less one. A value below 0 means the address was retired by every contributor. |
| address_site_pid | string | ADDRESS_SITE_PID | The address site, from address_site. Refers to address_site.address_site_pid. |
| level_geocoded_code | integer | LEVEL_GEOCODED_CODE | The level the address is geocoded to, from geocoded_level_type_aut. Refers to geocoded_level_type_aut.code. |
| property_pid | string | PROPERTY_PID | The property the address belongs to, where known. |
| gnaf_property_pid | string | GNAF_PROPERTY_PID | The G-NAF property identifier, where known. |
| primary_secondary | string | PRIMARY_SECONDARY | P for a primary address, S for a secondary one such as a flat, blank where neither. |
address_default_geocode 16,970,406 rows, 7 fields
The default geocode of each address: the longitude and latitude Geoscape recommends for it and the type of feature the point sits on. The key is address_default_geocode_pid. Publisher's table ADDRESS_DEFAULT_GEOCODE. address_default_geocode.parquet (466 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_default_geocode_pid | string | ADDRESS_DEFAULT_GEOCODE_PID | The persistent identifier of the default geocode. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address. Refers to address_detail.address_detail_pid. |
| geocode_type_code | string | GEOCODE_TYPE_CODE | What the point sits on, from geocode_type_aut. Refers to geocode_type_aut.code. |
| longitude | number | LONGITUDE | Longitude in decimal degrees, GDA2020. |
| latitude | number | LATITUDE | Latitude in decimal degrees, GDA2020. |
address_site 16,970,406 rows, 5 fields
The site an address refers to, with its type and name. Several addresses can share one site. The key is address_site_pid. Publisher's table ADDRESS_SITE. address_site.parquet (98 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_site_pid | string | ADDRESS_SITE_PID | The address site, from address_site. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_type | string | ADDRESS_TYPE | The kind of site, from address_type_aut. Refers to address_type_aut.code. |
| address_site_name | string | ADDRESS_SITE_NAME | The name of the site, where it has one. |
address_site_geocode 20,754,564 rows, 13 fields
Every geocode held for an address site, with its type, reliability and the elevation and boundary extent where known. The key is address_site_geocode_pid. Publisher's table ADDRESS_SITE_GEOCODE. address_site_geocode.parquet (576 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_site_geocode_pid | string | ADDRESS_SITE_GEOCODE_PID | The persistent identifier of the geocode. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_site_pid | string | ADDRESS_SITE_PID | The address site, from address_site. Refers to address_site.address_site_pid. |
| geocode_site_name | string | GEOCODE_SITE_NAME | The name of the feature the geocode sits on. |
| geocode_site_description | string | GEOCODE_SITE_DESCRIPTION | A description of the feature the geocode sits on. |
| geocode_type_code | string | GEOCODE_TYPE_CODE | What the point sits on, from geocode_type_aut. Refers to geocode_type_aut.code. |
| reliability_code | integer | RELIABILITY_CODE | How reliable the geocode is, from geocode_reliability_aut. Refers to geocode_reliability_aut.code. |
| boundary_extent | integer | BOUNDARY_EXTENT | The extent of the boundary the geocode was derived from, in metres, where known. |
| planimetric_accuracy | integer | PLANIMETRIC_ACCURACY | The planimetric accuracy of the point, in metres, where known. |
| elevation | integer | ELEVATION | The elevation of the point, in metres, where known. |
| longitude | number | LONGITUDE | Longitude in decimal degrees, GDA2020. |
| latitude | number | LATITUDE | Latitude in decimal degrees, GDA2020. |
address_alias 878,895 rows, 7 fields
Pairs of addresses where one is an alias of the other, with the type of alias. The key is address_alias_pid. Publisher's table ADDRESS_ALIAS. address_alias.parquet (14 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_alias_pid | string | ADDRESS_ALIAS_PID | The persistent identifier of the alias pair. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| principal_pid | string | PRINCIPAL_PID | The principal address, from address_detail. Refers to address_detail.address_detail_pid. |
| alias_pid | string | ALIAS_PID | The alias address, from address_detail. Refers to address_detail.address_detail_pid. |
| alias_type_code | string | ALIAS_TYPE_CODE | The kind of alias, from the lookup table. Refers to address_alias_type_aut.code. |
| alias_comment | string | ALIAS_COMMENT | A note on the alias. |
address_feature 234,311 rows, 6 fields
Address features: a record per address of the change that created it, kept so a release can be compared with the one before. The key is address_feature_id. Publisher's table ADDRESS_FEATURE. address_feature.parquet (3.3 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_feature_id | string | ADDRESS_FEATURE_ID | The identifier of the feature row. |
| address_feature_pid | string | ADDRESS_FEATURE_PID | The persistent identifier of the feature. |
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address. Refers to address_detail.address_detail_pid. |
| date_address_detail_created | date | DATE_ADDRESS_DETAIL_CREATED | The date the address was created. |
| date_address_detail_retired | date | DATE_ADDRESS_DETAIL_RETIRED | The date the address was retired, where it has been. |
| address_change_type_code | string | ADDRESS_CHANGE_TYPE_CODE | The kind of change, from address_change_type_aut. Refers to address_change_type_aut.code. |
primary_secondary 4,966,622 rows, 7 fields
Links a secondary address, such as a flat, to its primary address. The key is primary_secondary_pid. Publisher's table PRIMARY_SECONDARY. primary_secondary.parquet (66 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| primary_secondary_pid | string | PRIMARY_SECONDARY_PID | The persistent identifier of the link. |
| primary_pid | string | PRIMARY_PID | Refers to address_detail.address_detail_pid. |
| secondary_pid | string | SECONDARY_PID | The secondary address, from address_detail. Refers to address_detail.address_detail_pid. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| ps_join_type_code | integer | PS_JOIN_TYPE_CODE | The kind of link, from ps_join_type_aut. Refers to ps_join_type_aut.code. |
| ps_join_comment | string | PS_JOIN_COMMENT | A note on the link. |
street_locality 767,239 rows, 11 fields
One row per street within a locality, with the street's name, type, suffix and class. The key is street_locality_pid. Publisher's table STREET_LOCALITY. street_locality.parquet (13 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| street_locality_pid | string | STREET_LOCALITY_PID | The street within a locality, from street_locality. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| street_class_code | string | STREET_CLASS_CODE | The class of street, from street_class_aut. Refers to street_class_aut.code. |
| street_name | string | STREET_NAME | The street's name without its type. |
| street_type_code | string | STREET_TYPE_CODE | The street type, from street_type_aut. Refers to street_type_aut.code. |
| street_suffix_code | string | STREET_SUFFIX_CODE | The street suffix, from street_suffix_aut. Refers to street_suffix_aut.code. |
| locality_pid | string | LOCALITY_PID | The locality, from locality. Refers to locality.locality_pid. |
| gnaf_street_pid | string | GNAF_STREET_PID | |
| gnaf_street_confidence | integer | GNAF_STREET_CONFIDENCE | |
| gnaf_reliability_code | integer | GNAF_RELIABILITY_CODE | How reliable the locality's point is, from geocode_reliability_aut. Refers to geocode_reliability_aut.code. |
street_locality_alias 41,100 rows, 8 fields
Alternative names for a street within a locality. The key is street_locality_alias_pid. Publisher's table STREET_LOCALITY_ALIAS. street_locality_alias.parquet (736 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| street_locality_alias_pid | string | STREET_LOCALITY_ALIAS_PID | The persistent identifier of the alias. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| street_locality_pid | string | STREET_LOCALITY_PID | The street within a locality, from street_locality. Refers to street_locality.street_locality_pid. |
| street_name | string | STREET_NAME | The street's name without its type. |
| street_type_code | string | STREET_TYPE_CODE | The street type, from street_type_aut. Refers to street_type_aut.code. |
| street_suffix_code | string | STREET_SUFFIX_CODE | The street suffix, from street_suffix_aut. Refers to street_suffix_aut.code. |
| alias_type_code | string | ALIAS_TYPE_CODE | The kind of alias, from the lookup table. Refers to street_locality_alias_type_aut.code. |
street_locality_point 719,651 rows, 8 fields
A representative point for each street within a locality. The key is street_locality_point_pid. Publisher's table STREET_LOCALITY_POINT. street_locality_point.parquet (22 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| street_locality_point_pid | string | STREET_LOCALITY_POINT_PID | The persistent identifier of the point. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| street_locality_pid | string | STREET_LOCALITY_PID | The street within a locality, from street_locality. Refers to street_locality.street_locality_pid. |
| boundary_extent | integer | BOUNDARY_EXTENT | The extent of the boundary the geocode was derived from, in metres, where known. |
| planimetric_accuracy | integer | PLANIMETRIC_ACCURACY | The planimetric accuracy of the point, in metres, where known. |
| longitude | number | LONGITUDE | Longitude in decimal degrees, GDA2020. |
| latitude | number | LATITUDE | Latitude in decimal degrees, GDA2020. |
locality 17,581 rows, 9 fields
One row per locality, which is a suburb, town or district, with its name, class, state and primary postcode. The key is locality_pid. Publisher's table LOCALITY. locality.parquet (365 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| locality_pid | string | LOCALITY_PID | The locality, from locality. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| locality_name | string | LOCALITY_NAME | The locality's name. |
| primary_postcode | string | PRIMARY_POSTCODE | The locality's primary postcode. |
| locality_class_code | string | LOCALITY_CLASS_CODE | The class of locality, from locality_class_aut. Refers to locality_class_aut.code. |
| state_pid | string | STATE_PID | The state or territory, from state. Refers to state.state_pid. |
| gnaf_locality_pid | string | GNAF_LOCALITY_PID | The G-NAF locality identifier. |
| gnaf_reliability_code | integer | GNAF_RELIABILITY_CODE | How reliable the locality's point is, from geocode_reliability_aut. Refers to geocode_reliability_aut.code. |
locality_alias 29,577 rows, 8 fields
Alternative names for a locality. The key is locality_alias_pid. Publisher's table LOCALITY_ALIAS. locality_alias.parquet (458 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| locality_alias_pid | string | LOCALITY_ALIAS_PID | The persistent identifier of the alias. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| locality_pid | string | LOCALITY_PID | The locality, from locality. Refers to locality.locality_pid. |
| name | string | NAME | The alias name, or the lookup value's name. |
| postcode | string | POSTCODE | The postcode, as text. |
| alias_type_code | string | ALIAS_TYPE_CODE | The kind of alias, from the lookup table. Refers to locality_alias_type_aut.code. |
| state_pid | string | STATE_PID | The state or territory, from state. |
locality_neighbour 89,438 rows, 5 fields
Pairs of localities that share a boundary. The key is locality_neighbour_pid. Publisher's table LOCALITY_NEIGHBOUR. locality_neighbour.parquet (794 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| locality_neighbour_pid | string | LOCALITY_NEIGHBOUR_PID | The persistent identifier of the pair. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| locality_pid | string | LOCALITY_PID | The locality, from locality. Refers to locality.locality_pid. |
| neighbour_locality_pid | string | NEIGHBOUR_LOCALITY_PID | The neighbouring locality, from locality. Refers to locality.locality_pid. |
locality_point 17,581 rows, 7 fields
A representative point for each locality. The key is locality_point_pid. Publisher's table LOCALITY_POINT. locality_point.parquet (570 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| locality_point_pid | string | LOCALITY_POINT_PID | The persistent identifier of the point. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| locality_pid | string | LOCALITY_PID | The locality, from locality. Refers to locality.locality_pid. |
| planimetric_accuracy | integer | PLANIMETRIC_ACCURACY | The planimetric accuracy of the point, in metres, where known. |
| longitude | number | LONGITUDE | Longitude in decimal degrees, GDA2020. |
| latitude | number | LATITUDE | Latitude in decimal degrees, GDA2020. |
state 9 rows, 5 fields
The states and territories, by name and abbreviation. The key is state_pid. Publisher's table STATE. state.parquet (9.0 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| state_pid | string | STATE_PID | The state or territory, from state. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| state_name | string | STATE_NAME | The state or territory's name. |
| state_abbreviation | string | STATE_ABBREVIATION | The state or territory's abbreviation, such as QLD. |
address_mesh_block_2026 16,970,406 rows, 6 fields
The ABS 2026 mesh block each address falls in, with how the match was made. The key is address_mesh_block_pid_2026. Publisher's table ADDRESS_MESH_BLOCK_2026. address_mesh_block_2026.parquet (156 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_mesh_block_pid_2026 | string | ADDRESS_MESH_BLOCK_PID_2026 | The persistent identifier of the match. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address. Refers to address_detail.address_detail_pid. |
| mb_match_code | string | MB_MATCH_CODE | How the address was matched to the mesh block, from mb_match_code_aut. Refers to mb_match_code_aut.code. |
| mb_pid_2026 | string | MB_PID_2026 | The mesh block, from mb_2026. Refers to mb_2026.mb_pid_2026. |
mb_2026 374,916 rows, 4 fields
The ABS 2026 mesh block codes referred to by address_mesh_block_2026. The key is mb_pid_2026. Publisher's table MB_2026. mb_2026.parquet (4.0 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| mb_pid_2026 | string | MB_PID_2026 | The mesh block, from mb_2026. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| mb_code_2026 | string | MB_CODE_2026 | The ABS 2026 mesh block code. |
address_mesh_block_2021 16,970,406 rows, 6 fields
The ABS 2021 mesh block each address falls in, with how the match was made. The key is address_mesh_block_2021_pid. Publisher's table ADDRESS_MESH_BLOCK_2021. address_mesh_block_2021.parquet (156 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_mesh_block_2021_pid | string | ADDRESS_MESH_BLOCK_2021_PID | The persistent identifier of the match. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address. Refers to address_detail.address_detail_pid. |
| mb_match_code | string | MB_MATCH_CODE | How the address was matched to the mesh block, from mb_match_code_aut. Refers to mb_match_code_aut.code. |
| mb_2021_pid | string | MB_2021_PID | The mesh block, from mb_2021. Refers to mb_2021.mb_2021_pid. |
mb_2021 368,285 rows, 4 fields
The ABS 2021 mesh block codes referred to by address_mesh_block_2021. The key is mb_2021_pid. Publisher's table MB_2021. mb_2021.parquet (3.1 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| mb_2021_pid | string | MB_2021_PID | The mesh block, from mb_2021. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| mb_2021_code | string | MB_2021_CODE | The ABS 2021 mesh block code. |
address_mesh_block_2016 16,970,406 rows, 6 fields
The ABS 2016 mesh block each address falls in, with how the match was made. The key is address_mesh_block_2016_pid. Publisher's table ADDRESS_MESH_BLOCK_2016. address_mesh_block_2016.parquet (156 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| address_mesh_block_2016_pid | string | ADDRESS_MESH_BLOCK_2016_PID | The persistent identifier of the match. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| address_detail_pid | string | ADDRESS_DETAIL_PID | The persistent identifier of the address. Refers to address_detail.address_detail_pid. |
| mb_match_code | string | MB_MATCH_CODE | How the address was matched to the mesh block, from mb_match_code_aut. Refers to mb_match_code_aut.code. |
| mb_2016_pid | string | MB_2016_PID | The mesh block, from mb_2016. Refers to mb_2016.mb_2016_pid. |
mb_2016 358,122 rows, 4 fields
The ABS 2016 mesh block codes referred to by address_mesh_block_2016. The key is mb_2016_pid. Publisher's table MB_2016. mb_2016.parquet (2.9 MB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| mb_2016_pid | string | MB_2016_PID | The mesh block, from mb_2016. |
| date_created | date | DATE_CREATED | The date the row was created in G-NAF. |
| date_retired | date | DATE_RETIRED | The date the row was retired. Blank for a current row. |
| mb_2016_code | string | MB_2016_CODE | The ABS 2016 mesh block code. |
address_alias_type_aut 8 rows, 3 fields
Lookup: the kinds of address alias. The key is code. Publisher's table ADDRESS_ALIAS_TYPE_AUT. address_alias_type_aut.parquet (8.6 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
address_change_type_aut 511 rows, 3 fields
Lookup: the kinds of change recorded in address_feature. The key is code. Publisher's table ADDRESS_CHANGE_TYPE_AUT. address_change_type_aut.parquet (17 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
address_type_aut 3 rows, 3 fields
Lookup: the kinds of address site. The key is code. Publisher's table ADDRESS_TYPE_AUT. address_type_aut.parquet (8.2 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
flat_type_aut 54 rows, 3 fields
Lookup: the kinds of flat, unit, apartment, shop and so on. The key is code. Publisher's table FLAT_TYPE_AUT. flat_type_aut.parquet (9.3 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
geocoded_level_type_aut 8 rows, 3 fields
Lookup: the level an address is geocoded to, from locality down to the property. The key is code. Publisher's table GEOCODED_LEVEL_TYPE_AUT. geocoded_level_type_aut.parquet (8.7 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | integer | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
geocode_reliability_aut 6 rows, 3 fields
Lookup: how reliable a geocode is, as a code and a description. The key is code. Publisher's table GEOCODE_RELIABILITY_AUT. geocode_reliability_aut.parquet (9.0 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | integer | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
geocode_type_aut 30 rows, 3 fields
Lookup: what feature a geocode point sits on, such as the building centroid, the frontage or the property centroid. The key is code. Publisher's table GEOCODE_TYPE_AUT. geocode_type_aut.parquet (9.7 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
level_type_aut 16 rows, 3 fields
Lookup: the kinds of level within a building. The key is code. Publisher's table LEVEL_TYPE_AUT. level_type_aut.parquet (8.6 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
locality_alias_type_aut 2 rows, 3 fields
Lookup: the kinds of locality alias. The key is code. Publisher's table LOCALITY_ALIAS_TYPE_AUT. locality_alias_type_aut.parquet (8.3 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
locality_class_aut 9 rows, 3 fields
Lookup: the classes of locality. The key is code. Publisher's table LOCALITY_CLASS_AUT. locality_class_aut.parquet (8.7 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
mb_match_code_aut 5 rows, 3 fields
Lookup: how an address was matched to its mesh block. The key is code. Publisher's table MB_MATCH_CODE_AUT. mb_match_code_aut.parquet (9.4 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
ps_join_type_aut 2 rows, 3 fields
Lookup: the kinds of link between a primary and a secondary address. The key is code. Publisher's table PS_JOIN_TYPE_AUT. ps_join_type_aut.parquet (8.7 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | integer | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
street_class_aut 2 rows, 3 fields
Lookup: the classes of street. The key is code. Publisher's table STREET_CLASS_AUT. street_class_aut.parquet (8.9 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
street_locality_alias_type_aut 2 rows, 3 fields
Lookup: the kinds of street alias. The key is code. Publisher's table STREET_LOCALITY_ALIAS_TYPE_AUT. street_locality_alias_type_aut.parquet (8.3 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
street_suffix_aut 19 rows, 3 fields
Lookup: the street suffixes, such as North or Extension. The key is code. Publisher's table STREET_SUFFIX_AUT. street_suffix_aut.parquet (8.5 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
street_type_aut 276 rows, 3 fields
Lookup: the street types, such as Road, Street and Avenue. The key is code. Publisher's table STREET_TYPE_AUT. street_type_aut.parquet (12 KB).
| Field | Type | Publisher's header | Note |
|---|---|---|---|
| code | string | CODE | The code. |
| name | string | NAME | The alias name, or the lookup value's name. |
| description | string | DESCRIPTION | What the code means. |
Views
address_view
One row per address with its street, locality, state, postcode and default geocode joined, from Geoscape's address_view.sql script. Addresses with a confidence below 0 are left out, as the script does.
The SQL of address_view
SELECT
AD.ADDRESS_DETAIL_PID as ADDRESS_DETAIL_PID,
AD.STREET_LOCALITY_PID as STREET_LOCALITY_PID,
AD.LOCALITY_PID as LOCALITY_PID,
AD.BUILDING_NAME as BUILDING_NAME,
AD.LOT_NUMBER_PREFIX as LOT_NUMBER_PREFIX,
AD.LOT_NUMBER as LOT_NUMBER,
AD.LOT_NUMBER_SUFFIX as LOT_NUMBER_SUFFIX,
FTA.NAME as FLAT_TYPE,
AD.FLAT_NUMBER_PREFIX as FLAT_NUMBER_PREFIX,
AD.FLAT_NUMBER as FLAT_NUMBER,
AD.FLAT_NUMBER_SUFFIX as FLAT_NUMBER_SUFFIX,
LTA.NAME as LEVEL_TYPE,
AD.LEVEL_NUMBER_PREFIX as LEVEL_NUMBER_PREFIX,
AD.LEVEL_NUMBER as LEVEL_NUMBER,
AD.LEVEL_NUMBER_SUFFIX as LEVEL_NUMBER_SUFFIX,
AD.NUMBER_FIRST_PREFIX as NUMBER_FIRST_PREFIX,
AD.NUMBER_FIRST as NUMBER_FIRST,
AD.NUMBER_FIRST_SUFFIX as NUMBER_FIRST_SUFFIX,
AD.NUMBER_LAST_PREFIX as NUMBER_LAST_PREFIX,
AD.NUMBER_LAST as NUMBER_LAST,
AD.NUMBER_LAST_SUFFIX as NUMBER_LAST_SUFFIX,
SL.STREET_NAME as STREET_NAME,
SL.STREET_CLASS_CODE as STREET_CLASS_CODE,
SCA.NAME as STREET_CLASS_TYPE,
SL.STREET_TYPE_CODE as STREET_TYPE_CODE,
SL.STREET_SUFFIX_CODE as STREET_SUFFIX_CODE,
SSA.NAME as STREET_SUFFIX_TYPE,
L.LOCALITY_NAME as LOCALITY_NAME,
ST.STATE_ABBREVIATION as STATE_ABBREVIATION,
AD.POSTCODE as POSTCODE,
ADG.LATITUDE as LATITUDE,
ADG.LONGITUDE as LONGITUDE,
GTA.NAME as GEOCODE_TYPE,
AD.CONFIDENCE as CONFIDENCE,
AD.ALIAS_PRINCIPAL as ALIAS_PRINCIPAL,
AD.PRIMARY_SECONDARY as PRIMARY_SECONDARY,
AD.LEGAL_PARCEL_ID as LEGAL_PARCEL_ID,
AD.DATE_CREATED as DATE_CREATED
FROM
ADDRESS_DETAIL AD
LEFT JOIN FLAT_TYPE_AUT FTA ON AD.FLAT_TYPE_CODE=FTA.CODE
LEFT JOIN LEVEL_TYPE_AUT LTA ON AD.LEVEL_TYPE_CODE=LTA.CODE
JOIN STREET_LOCALITY SL ON AD.STREET_LOCALITY_PID=SL.STREET_LOCALITY_PID
LEFT JOIN STREET_SUFFIX_AUT SSA ON SL.STREET_SUFFIX_CODE=SSA.CODE
LEFT JOIN STREET_CLASS_AUT SCA ON SL.STREET_CLASS_CODE=SCA.CODE
LEFT JOIN STREET_TYPE_AUT STA ON SL.STREET_TYPE_CODE=STA.CODE
JOIN LOCALITY L ON AD.LOCALITY_PID = L.LOCALITY_PID
JOIN ADDRESS_DEFAULT_GEOCODE ADG ON AD.ADDRESS_DETAIL_PID=ADG.ADDRESS_DETAIL_PID
LEFT JOIN GEOCODE_TYPE_AUT GTA ON ADG.GEOCODE_TYPE_CODE=GTA.CODE
LEFT JOIN GEOCODED_LEVEL_TYPE_AUT GLTA ON AD.LEVEL_GEOCODED_CODE=GLTA.CODE
JOIN STATE ST ON L.STATE_PID=ST.STATE_PID
WHERE
AD.CONFIDENCE > -1
The same schema as a Frictionless Table Schema for every table is at schema.json, and as SQL at schema.sql.
What changed
One version for every release the publisher has made since this site started following the dataset. The date is the day the archive changed on the portal. Versions of a database are compared table by table, by row count.
- 2026-08-17 131,441,280 rows37 tables219 fieldszip16820cc91c3e
versions.json · changes.json · history.tar.zst (6.2 KB, every version's schema and manifest)
Questions
How do I query Geocoded National Address File (G-NAF) without downloading it?
Attach https://publicdata.au/d/gnaf/v/2026-08-17/data.duckdb read-only from DuckDB, R or Python and query any table or view, such as address_view. DuckDB reads only the blocks a query touches over HTTPS. https://publicdata.au/d/gnaf/latest/data.duckdb redirects to the newest version; a dated URL never changes.
How do I get one table of Geocoded National Address File (G-NAF)?
Every table is a Parquet file under https://publicdata.au/d/gnaf/v/2026-08-17/tables/, for example https://publicdata.au/d/gnaf/v/2026-08-17/tables/address_detail.parquet, which pandas, R, Polars, Spark and DuckDB read directly. https://publicdata.au/d/gnaf/v/2026-08-17/schema.sql has the SQL that creates every table, with the keys and references, and https://publicdata.au/d/gnaf/v/2026-08-17/schema.json the same as Table Schema.
How often is Geocoded National Address File (G-NAF) updated?
Geoscape releases it quarterly. This site checks the portal every week and adds a dated version when the release changes.
Can I use Geocoded National Address File (G-NAF) commercially?
Yes, with one condition. You must not use the data to generate an address, or a compilation of addresses, for the sending of mail unless you have verified that each address is capable of receiving mail by reference to a secondary source (clause 2(a)(2) of the EULA). The licence is otherwise CC BY 4.0: use, share and build on it with the attribution kept. The attribution string is in this page's side column and inside every file.
Is this the official source for Geocoded National Address File (G-NAF)?
No. The publisher is Geoscape Australia, and its page is https://data.gov.au/data/dataset/geocoded-national-address-file-g-naf. National Digital converted the publisher's release to one DuckDB database and one Parquet file per table. It typed the cells and named the columns in lower case. National Digital made these changes, and the publisher is not responsible for them. The publisher's archive sits beside every version as source.zip with its SHA-256, so the two can be compared.
What this site did to the data. Each table's cells were typed, its columns were named in lower case and the tables were put in one database with the publisher's keys, references and views. Rows were left alone. The publisher's archive sits beside every version as source.zip so the change can be checked.
The licence requires the publisher's attribution. We ask that you also name publicdata.au and link to the version you used.
Incorporates or developed using G-NAF © Geoscape Australia licensed by the Commonwealth of Australia under the Open Geo-coded National Address File (G-NAF) End User Licence Agreement, sourced 1 October 2026, https://data.gov.au/data/dataset/geocoded-national-address-file-g-naf. Serialised and versioned by National Digital at publicdata.au, https://publicdata.au/d/gnaf/v/2026-08-17/
The attribution alone is inside every file. Harvard is the author-date form a report or a brief asks for. Paste the HTML on a web page so the links carry.
You must not use the data to generate an address, or a compilation of addresses, for the sending of mail unless you have verified that each address is capable of receiving mail by reference to a secondary source (clause 2(a)(2) of the EULA). The licence is otherwise CC BY 4.0: use, share and build on it with the attribution kept.
The condition is in the licence and in the licence.condition field of every provenance header. This dataset is not copied to Hugging Face, Kaggle or Zenodo, since none of them can state the condition.
- datapackage.jsonFrictionless data package pointing at the latest version
- schema.jsonevery table's fields, keys and references
- versions.jsonevery version with date, rows per table and hash
- changes.jsonrow counts per table for every consecutive pair
- manifest.jsonwhere the bytes came from and when
- index.mdthis page as Markdown
This page carries a schema.org Dataset record and is listed in /.well-known/ard.json and /catalog.json.
Geoscape Australia publishes this release on data.gov.au. Questions about the content go to the publisher. Questions about the files here go to corrections.
Fetched 1 October 2026. Source SHA-256 16820cc91c3ea32a…