Geocode Australian addresses offline
One file for all states and territories, read locally. No server, no API key, and the addresses you geocode never leave your machine.
Get started
The file for Australia is 130 MB and holds 11.92 million addresses from G-NAF, the Geoscape national address file, August 2026 edition (via Overture Maps), including the external territories. Download it once, checked against the signed release; every query after that runs on your machine, with no API key and no rate limit.
$ pip install gridpin-mcp # includes the engine $ gridpin-fetch au # Australia, 130 MB, verified download
import gridpin
from gridpin_mcp import sheets
g = gridpin.Geocoder(str(sheets.download("au"))) # no-op once downloaded
g.geocode("1 Martin Place, Sydney NSW 2000", 1)
# -> house, Martin Place 1, Sydney, 2000
g.geocode("452-456 Sydney Rd, Brunswick VIC 3056", 1)
# -> house, Sydney Road 452, Brunswick, 3056
g.geocode("Unit 3/45 Smith St, Fitzroy VIC 3065", 1)
# -> interp, Smith Street 45, Fitzroy, 3065
g.geocode("25 Mitchell St, Darwin NT 800", 1)
# -> interp, Mitchell Street 25, Darwin City, 0800
g.geocode("Coles Lisarow, 1 Parsons Road LISAROW", 1)
# -> house, Parsons Road 1, Lisarow, 2250
interp means the number was placed between neighbouring houses of the same street. The code 800 is read as 0800, and a name before the address is read past. Sydney NSW 2000 and 2000 alone answer with the place.
Units are read past the slash; states may be written in short or in full; a suburb next door to the address still finds the house, with lower confidence. A query with only a number and a street names no place: the answer is one of the namesakes and says so with low confidence.
Data notice: the Open G-NAF licence does not allow using this data to compile addresses for sending mail unless each address is verified against a second source.
How often it finds the right house, compared with Nominatim and Photon on independent truth: benchmark. Try it without installing: the live demo (pick Australia in the list), or the Colab notebook (set COUNTRY = "au").