geocoder
Geocoder is a simple and consistent geocoding library.
What it is and what it does
Geocoder is a Python library that abstracts away the complexity of calling multiple online geocoding services. Instead of writing separate code for Google, Bing, OpenStreetMap, and dozens of other providers—each with its own JSON schema and authentication—you call a single consistent API. It handles forward geocoding (address to lat/lng), reverse geocoding (coordinates to address), batch queries, and IP-based geolocation across providers optimized for different regions.
The library has no runtime dependencies and installs cleanly as a pure Python wheel. It exposes results through a unified object model with properties like `latlng`, `address`, `city`, `country`, and geospatial formats (GeoJSON, WKT). It also includes a command-line interface for one-off geocoding tasks. However, most providers require API keys, and the package has been dormant since 2018—provider APIs may have changed, and you should verify that your target providers still work before relying on it in production.
Use it for:
- Convert a user-supplied address to latitude and longitude for mapping or location-based services without writing provider-specific code.
- Reverse-geocode GPS coordinates to retrieve the nearest city, state, country, or street address.
- Batch-geocode a list of addresses using a single provider's batch API to reduce API calls.
- Geolocate an IP address to approximate geographic location for analytics or content delivery.
- Extract structured address components (house number, street, postal code) from a full address string.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Geocoder provides a unified Python interface to multiple online geocoding services, converting addresses to coordinates and vice versa without requiring you to handle each provider's different API schemas.
Yes, if you need a simple unified geocoding interface and accept the maintenance risk. The package is stable and has no security vulnerabilities, but it is dormant—last release was 2018. Before using in production, verify that your chosen providers' APIs still match the library's expectations, as provider changes after 2018 may break functionality. For new projects requiring active maintenance and up-to-date provider support, consider alternatives.
Install
geocoder on PyPI
pip
pip install geocoderuv
uv add geocoderpoetry
poetry add geocoderInstalling geocoder
Before you install
Installation is straightforward with no runtime dependencies. However, the package is dormant—last release was in 2018 and last commit in 2024, with no active maintenance. Use only if you accept that bug fixes and provider updates will not arrive.
License in practice
Licensed under the MIT License (permissive), allowing free use, modification, and distribution with minimal restrictions.
Quickstart
pip install geocoder
import geocoder
g = geocoder.google('Mountain View, CA')
print(g.latlng)
# (37.3860517, -122.0838511)
Most providers require an API key (Google, Bing, MapQuest, etc.). Some have rate limits or usage policies. Verify your chosen provider's current authentication requirements before deploying.
Verify before relying
- Whether all listed providers remain functional or have changed their APIs since the last release
- Current API key requirements and rate limits for each provider
- Whether the package works reliably with modern Python versions beyond those listed in classifiers
Package facts
| License | The MIT License (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 3,054 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,173,708/month — #2,712 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: geocoder-1.38.1-py2.py3-none-any.whl
Keywords: geocoder, arcgis, tomtom, opencage, google, bing, here
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
geopygeopy is a Python client for geocoding and…
permissive · top 5,000 on PyPI
opencageA Python wrapper for the OpenCage Geocoding API…
permissive · top 15,000 on PyPI
censusgeocodeWraps the US Census Geocoder API to convert…
copyleft · top 15,000 on PyPI
googlemapsPython client library that wraps Google Maps…
permissive · top 5,000 on PyPI
reverse_geocoderReverse Geocoder converts latitude/longitude…
copyleft · top 15,000 on PyPI
azure-maps-searchProvides a Python client for Azure Maps Search…
permissive · top 15,000 on PyPI
reverse-geocodeReverse Geocode converts latitude/longitude…
copyleft · top 15,000 on PyPI
pgeocodepgeocode queries postal codes to retrieve GPS…
permissive · top 5,000 on PyPI
ipinfoQueries the IPinfo.io API to retrieve…
permissive · top 15,000 on PyPI