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 use the Google geocoding API 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 =, provider="google")

In [4]: boro_locations
                                geometry                       address
0         POINT (-74.1502007 40.5795317)        Staten Island, NY, USA
1         POINT (-73.7948516 40.7282239)               Queens, NY, USA
2  POINT (-73.94415789999999 40.6781784)             Brooklyn, NY, USA
3         POINT (-73.9712488 40.7830603)  Manhattan, New York, NY, USA
4         POINT (-73.8648268 40.8447819)                Bronx, NY, USA

In [5]: import matplotlib.pyplot as plt

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

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

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

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.

Please consult the Terms of Service for the chosen provider.