Skip to main content

OpenCage Geocoding Module for Python

A Python module to access the OpenCage Geocoding API.

Build Status / Code Quality / etc

PyPI version Downloads Versions GitHub contributors Build Status Mastodon Follow

Tutorials

You can find a comprehensive tutorial for using this module on the OpenCage site.

There are two brief video tutorials on YouTube, one covering forward geocoding, one covering reverse geocoding.

Working with AI / Agent Skill

There is an Agent Skill for working with the OpenCage Geocoding API which includes a reference file for developing in Python using this module.

Usage

Supports Python 3.10 or newer. Starting opencage version 3.0 depends on asyncio package.

Install the module:

pip install opencage

Load the module:

from opencage.geocoder import OpenCageGeocode

Create an instance of the geocoder module, passing a valid OpenCage Data Geocoder API key as a parameter to the geocoder modules's constructor:

key = 'your-api-key-here'
geocoder = OpenCageGeocode(key)

Pass a string containing the query or address to be geocoded to the modules' geocode method:

query = '82 Clerkenwell Road, London'
results = geocoder.geocode(query)

You can add additional parameters:

results = geocoder.geocode('London', no_annotations=1, language='es')

For example you can use the proximity parameter to provide the geocoder with a hint:

results = geocoder.geocode('London', proximity='42.828576, -81.406643')
print(results[0]['formatted'])
# u'London, ON N6A 3M8, Canada'

Reverse geocoding

Turn a lat/long into an address with the reverse_geocode method:

result = geocoder.reverse_geocode(51.51024, -0.10303)

Sessions

You can reuse your HTTP connection for multiple requests by using a with block. This can help performance when making a lot of requests:

queries = ['82 Clerkenwell Road, London', ...]
with OpenCageGeocode(key) as geocoder:
    # Queries reuse the same HTTP connection
    results = [geocoder.geocode(query) for query in queries]

Asyncronous requests

You can run requests in parallel with the geocode_async and reverse_geocode_async method which have the same parameters and response as their synronous counterparts. You will need the asyncio and aiohttp packages installed.

async with OpenCageGeocode(key) as geocoder:
    results = await geocoder.geocode_async(address)

Non-SSL API use

If you have trouble accesing the OpenCage API with https, e.g. issues with OpenSSL libraries in your enviroment, then you can set the 'http' protocol instead. Please understand that the connection to the OpenCage API will no longer be encrypted.

geocoder = OpenCageGeocode('your-api-key', 'http')

Exceptions

If anything goes wrong, then an exception will be raised:

  • InvalidInputError for non-unicode query strings
  • NotAuthorizedError if API key is missing, invalid syntax or disabled
  • ForbiddenError API key is blocked or suspended
  • RateLimitExceededError if you go past your rate limit
  • UnknownError if there's some problem with the API (bad results, 500 status code, etc)
  • NetworkError if the request fails at the network level (connection refused, DNS or TLS failure, etc)
  • NetworkTimeoutError if the request times out. A subclass of NetworkError and of asyncio.TimeoutError

Command-line batch geocoding

The opencage CLI now lives in its own package. See opencage-cli — install with pip install opencage-cli.

This software is copyright OpenCage GmbH. Please see LICENSE.txt

Who is OpenCage GmbH?

We run a worldwide geocoding API and geosearch service based on open data. Learn more about us.

We also run Geomob, a series of regular meetups for location based service creators, where we do our best to highlight geoinnovation. If you like geo stuff, you will probably enjoy the Geomob podcast.

Metadata

Release files for opencage 3.5.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 opencage 3.5.0
File Size Uploaded Provenance Actions
opencage-3.5.0.tar.gz 18.2 kB Without provenance Details for opencage-3.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for opencage 3.5.0
File Interpreter ABI Platform Actions
opencage-3.5.0-py3-none-any.whl Python 3 none any Details for opencage-3.5.0-py3-none-any.whl

Total release size: 28.9 kB

Release files / opencage-3.5.0.tar.gz

Download URL opencage-3.5.0.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
940728d5c987b9dd2a8d9626c4ca863cde84efa74a8a5400f16411e96b193629
BLAKE2b-256 checksum
How to use checksums
33e037af959c0fa499c12aa695564e065f73ca09c8869767b45328c114cc3c02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / opencage-3.5.0-py3-none-any.whl

Download URL opencage-3.5.0-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd3850a80ccea64d3046f910223412feb887599abe1e41ad8856b1a9e4808043
BLAKE2b-256 checksum
How to use checksums
744c2682cd2ee7d5ff3d0ad30102423db905c8c0425e95d8205b4a3238ebb6c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for opencage 3.5.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.

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