Skip to main content

Geocoder version build

A simplistic Python Geocoder.

Geocoder is an Apache2 Licensed Geocoding library, written in Python.

>>> import geocoder
>>> g = geocoder.google('Moscone Center')
>>> g.latlng
(37.784173, -122.401557)
>>> g.city
'San Francisco'
...

Installation

You can install, upgrade, uninstall Geocoder with these commands:

$ pip install geocoder
$ pip install --upgrade geocoder
$ pip uninstall geocoder

Documentation

Search with Google

Using the Geocoder API from Google, this is a simplistic approach to return you all the same results that Google would provide.

>>> import geocoder
>>> g = geocoder.google('1600 Amphitheatre Pkwy, Mountain View, CA')
>>> g.latlng
(37.784173, -122.401557)
>>> g.postal
'94043'
>>> g.city
'Mountain View'
>>> g.country
'United States'
...

Long names with Google

When using Google, the default results are using the short names, here is how you would retrieve the long names as the results.

>>> g = geocoder.google(<address>, short_name=False)
...

Getting JSON

The web uses JSON and GeoJSON, here is how to return your Geocoded address into this format.

>>> g = geocoder.google('1600 Amphitheatre Parkway, Mountain View, CA')
>>> g.json
{'address': '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
'bbox': {'northeast': {'lat': 37.4233474802915, 'lng': -122.0826054197085},
'southwest': {'lat': 37.4206495197085, 'lng': -122.0853033802915}},
'city': 'Mountain View',
'country': 'United States',
'lat': 37.4219985,
'lng': -122.0839544,
'location': '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
'ok': True,
'postal': '94043',
'provider': 'Google',
'quality': 'ROOFTOP',
'status': 'OK'}
...

GeoJSON is a widely used, open format for encoding geographic data, and is supported by a number of popular applications.

>>> import simplejson as json
>>> g = geocoder.google('Ottawa, ON')
>>> json.dumps(g.geojson, indent=4)
{
"geometry": {
    "type": "Point",
    "coordinates": [
        -75.69719309999999,
        45.4215296
    ]
},
"crs": {
    "type": "name",
    "properties": {
        "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
},
"type": "Feature",
"properties": {
    "status": "OK",
    "city": "Ottawa",
    "ok": true,
    "country": "Canada",
...

Using Proxies & Timeout

There many obvious reasons why you would need to use proxies, here is the basic syntax on how to successfully use them.

Timeouts are used to stop the connection if it reaches a certain time.

>>> proxies = '111.161.126.84:80'
>>> g = geocoder.google('Ottawa', proxies=proxies, timeout=5.0)
<[OK] Geocoder Google [Ottawa, ON, Canada]>
...

Reverse Geocoding

Using Google’s reverse geocoding API, you are able to input a set of coordinates and geocode its location.

>>> latlng = (48.85837, 2.2944813)
>>> g = geocoder.reverse(latlng)
<[OK] Geocoder Google [Eiffel Tower, Paris, France]>
...

Bounding Box (Extent)

>>> g = geocoder.osm('1600 Amphitheatre Pkwy, Mountain View, CA')
>>> g.bbox
{'northeast': {'lat': 37.4233474802915, 'lng': -122.0826054197085},
'southwest': {'lat': 37.4206495197085, 'lng': -122.0853033802915}}
>>> g.southwest
{'lat': 37.4206495197085, 'lng': -122.0853033802915}
>>> g.south
37.4206495197085
...

Geocoding IP Address

Retrieves geocoding data from MaxMind’s GeoIP2 services

>>> g = geocoder.ip('74.125.226.99')
>>> g.address
'Mountain View, California United States'
>>> g.latlng
(37.4192, -122.0574)

Geocoding your current IP address, simply use me as the input.

>>> g = geocoder.ip('me')
>>> g.address
'Ottawa, Ontario Canada'
>>> g.latlng
(45.4805, -75.5237)
...

Population Data from City

Retrieves population data from Geonames’s Web Service API.

>>> pop = geocoder.population('Springfield, Virginia')
>>> pop
30484
...

Geocoder Attributes

  • address

  • location

  • city

  • state

  • country

  • postal

  • quality

  • status

  • population (integer)

  • ok (boolean)

  • x, lng, longitude (float)

  • y, lat, latitude (float)

  • latlng, xy (tuple)

  • bbox {southwest, northeast}

  • southwest {lat, lng}

  • northeast {lat, lng}

  • south, west, north, east (float)

Geocoding Providers

## Priority Geocoders
>>> geocoder.google(<location>)
>>> geocoder.reverse(<latlng>)
>>> geocoder.ip(<ip>)

## Secondary Geocoders
>>> geocoder.osm(<location>)
>>> geocoder.mapquest(<location>)
>>> geocoder.arcgis(<location>)
>>> geocoder.geonames(<location>, username='XXXXX')
>>> geocoder.bing(<location>, key='XXXXX')
>>> geocoder.nokia(<location>, app_id='XXXXX', app_code='XXXXX')
>>> geocoder.tomtom(<location>, key='XXXXX')
...

Support

This project is free & open source, it would help greatly for you guys reading this to contribute, here are some of the ways that you can help make this Python Geocoder better.

Feedback

Please feel free to give any feedback on this module. If you find any bugs or any enhancements to recommend please send some of your comments/suggestions to the Github Issues Page.

Metadata

Release files for geocoder 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for geocoder 0.6.0
File Size Uploaded Provenance Actions
geocoder-0.6.0.tar.gz 14.9 kB Without provenance Details for geocoder-0.6.0.tar.gz

Release files / geocoder-0.6.0.tar.gz

Download URL geocoder-0.6.0.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6155d2ef6414a143365e7995a480626966bce83f79743f880c572564f3dc75fa
BLAKE2b-256 checksum
How to use checksums
ddb3670569df4c8d8a6b326c333dce433e02d4436b7bcac78caf27d8810ede9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for geocoder 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

1.1.4

1.0.8

This release

0.6.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page