geopandas supports geocoding (i.e., converting place names to location on Earth) through geopy, an optional dependency of geopandas. The following example shows how to get the locations of boroughs in New York City, and plots those locations along with the detailed borough boundary file included within geopandas.

In [1]: boros = geopandas.read_file(geopandas.datasets.get_path("nybb"))

In [2]: boros.BoroName
0    Staten Island
1           Queens
2         Brooklyn
3        Manhattan
4            Bronx
Name: BoroName, dtype: object

In [3]: boro_locations =

In [4]: boro_locations
                     geometry                                            address
0  POINT (-74.14960 40.58346)  Staten Island, City of New York, New York, Uni...
1  POINT (-73.82831 40.71351)  Queens, City of New York, New York, United States
2  POINT (-73.94972 40.65260)  Brooklyn, City of New York, New York, United S...
3  POINT (-73.95989 40.78962)  Manhattan, City of New York, New York, United ...
4  POINT (-73.87859 40.84665)  The Bronx, City of New York, New York, United ...

In [5]: import matplotlib.pyplot as plt

In [6]: fig, ax = plt.subplots()

In [7]: boros.to_crs("EPSG:4326").plot(ax=ax, color="white", edgecolor="black");

In [8]: boro_locations.plot(ax=ax, color="red");

By default, the geocode() function uses the Photon geocoding API. But a different geocoding service can be specified with the provider keyword.

The argument to provider can either be a string referencing geocoding services, such as 'google', 'bing', 'yahoo', and 'openmapquest', or an instance of a Geocoder from geopy. See geopy.geocoders.SERVICE_TO_GEOCODER for the full list. For many providers, parameters such as API keys need to be passed as **kwargs in the geocode() call.

For example, to use the OpenStreetMap Nominatim geocoder, you need to specify a user agent:, provider='nominatim', user_agent="my-application")


Please consult the Terms of Service for the chosen provider. The example above uses 'photon' (the default), which expects fair usage - extensive usage will be throttled. (Photon’s Terms of Use).