Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

Python wrapper for API

Project description

Python wrapper for Geocodio geocoding API.

Full documentation on Read the Docs.

If you are upgrading from a version prior to 0.2.0 please see the changelog in HISTORY.rst. The default coordinate ordering has changed to something a bit more sensible for most users.

Geocodio API Features

  • Geocode an individual address
  • Batch geocode up to 10,000 addresses at a time
  • Parse an address into its identifiable components
  • Reverse geocode an individual geographic point
  • Batch reverse geocode up to 10,000 points at a time

The service is limited to U.S. and Canada addresses for the time being.

Read the complete Geocodio documentation for service documentation.


pygeocodio requires requests 1.0.0 or greater and will ensure requests is installed:

pip install pygeocodio

Basic usage

Import the API client and ensure you have a valid API key:

>>> from geocodio import GeocodioClient
>>> client = GeocodioClient(YOUR_API_KEY)


Geocoding an individual address:

>>> geocoded_location = client.geocode("42370 Bob Hope Drive, Rancho Mirage CA")
>>> geocoded_location.coords
(33.738987255507, -116.40833849559)

Batch geocoding

You can also geocode a list of addresses:

>>> geocoded_addresses = client.geocode([
        '2 15th St NW, Washington, DC 20024',
        '3101 Patterson Ave, Richmond, VA, 23221'

Return a list of just the coordinates for the resultant geocoded addresses:

>>> geocoded_addresses.coords
[(38.890083, -76.983822), (37.560446, -77.476008)]
>>> geocoded_addresses[0].coords
(38.890083, -76.983822), (37.560446, -77.476008)

Lookup an address by queried address:

>>> geocoded_addresses.get('2 15th St NW, Washington, DC 20024').coords
(38.879138, -76.981879))

Address parsing

And if you just want to parse an individual address into its components:

>>> client.parse('1600 Pennsylvania Ave, Washington DC')
      "address_components": {
          "number": "1600",
          "street": "Pennsylvania",
          "suffix": "Ave",
          "city": "Washington",
          "state": "DC"
      "formatted_address": "1600 Pennsylvania Ave, Washington DC"

Reverse geocoding

Reverse geocode a point to find a matching address:

>>> location = client.reverse((33.738987, -116.4083))
>>> location.formatted_address
"42370 Bob Hope Dr, Rancho Mirage CA, 92270"

Batch reverse geocoding

And multiple points at a time:

>>> locations = client.reverse([
        (33.738987, -116.4083),
        (33.738987, -116.4083),
        (38.890083, -76.983822)

Return the list of formatted addresses:

>>> locations.formatted_addresses
["42370 Bob Hope Dr, Rancho Mirage CA, 92270",  "42370 Bob Hope Dr, Rancho Mirage CA, 92270", "2 15th St NW, Washington, DC 20024"]

Access a specific address by queried point tuple:

>>> locations.get("38.890083,-76.983822").formatted_address
"2 15th St NW, Washington, DC 20024"

Or by the more natural key of the queried point tuple:

>>> locations.get((38.890083, -76.983822)).formatted_address
"2 15th St NW, Washington, DC 20024"

CLI usage

In the works!


For complete documentation see the docs.


BSD License


0.7.0 (2018-03-29)

  • Added support for new Congressional districts for 2018 election (thanks nickcatal!)

0.6.0 (2018-02-16)

  • Upgrade to Geocodio API version 1.2 (thanks MiniCodeMonkey!)
  • Update allowed fields
  • Update docs that Canada now included (thanks Goorzhel!)
  • Miscellaneous fixes (thanks snake-plissken!)

0.5.0 (2016-05-16)

  • Add additional allowed fields (census, cd114)

0.4.2 (2015-02-17)

  • Bug fix the last bug fix

0.4.1 (2015-02-17)

  • Bug fix to flatten ‘fields’ argument as a single query key

0.4.0 (2014-09-28)

  • Bug fix for batch reverse geocoding
  • Removes request handling from client methods

0.3.0 (2014-03-24)

  • Adds support for additional data fields (e.g. Congressional districts, timezone)

0.2.1 (2014-02-15)

  • Fixed Python 3.3 test errors. Shouldn’t have any functional effect on Python 3.3 usage except for matching module paths of pygeocodio objects.

0.2.0 (2014-02-07)

  • Added initial reverse geocoding functionality
  • Swaps default coordinates order. This is a mostly backwards incompatible change to amend a silly design decision.

0.1.4 (2014-01-25)

  • Handle error in which has returned empty result set

0.1.3 (2014-01-25)

  • Packaging fix, thanks to @kyen99

0.1.2 (2014-01-23)

  • Moves and enhances fixture data to JSON data based on linted server responses
  • Adds Geocodio named errors
  • Better handling of errors in individual locations from batch requests

0.1.1 (2014-01-22)

  • Adds requests to install_requires in and drops minimum version to 1.0.0

0.1.0 (2014-01-21)

  • First release on PyPI.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pygeocodio-0.7.0-py3-none-any.whl (10.7 kB) Copy SHA256 hash SHA256 Wheel py3 Mar 29, 2018
pygeocodio-0.7.0.tar.gz (10.8 kB) Copy SHA256 hash SHA256 Source None Mar 29, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page