Open
Description
Environment Details
API Used: Places
OS: Mac OS 10.15.4 (Catalina)
Python Version: 3.8
Library Version: 4.4.1
Other Info: Executed in PyCharm
Steps to Reproduce
- Retrieve a list of places with a radius
- submit a next page request with next_page_token
Code that Produces Exception
import googlemaps
import json
from pprint import pprint
import time
## Import API Key
with open('config.json') as config_file:
config_data = json.load(config_file)
## Establish API Connection
gmaps = googlemaps.Client(key=config_data['maps_api_key'])
## Find places
barber_shops = gmaps.places('barber shop', radius=3218)
#Extract Next Page Token
npt = barber_shops["next_page_token"]
#For Usability
print(f'The first business returned is {barber_shops["results"][0]["name"]}')
print(f'\t The placed id is {barber_shops["results"][0]["id"]}')
print(f'\n\t\tThe next_page_token is {npt}')
#Request the next page || Raises googlemaps.exceptions.ApiError: INVALID_REQUEST
next_page_barber_shops = gmaps.places('barber shop', radius=3218, page_token=npt)
pprint(next_page_barber_shops)
Stack Trace
Traceback (most recent call last):
File "/Users/bjg/CDA/GMaps_LeadGen/rate_limit_bug", line 26, in <module>
next_page_barber_shops = gmaps.places('barber shop', radius=3218, page_token=npt)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googlemaps/client.py", line 418, in wrapper
result = func(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googlemaps/places.py", line 243, in places
return _places(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googlemaps/places.py", line 409, in _places
return client._request(url, params)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googlemaps/client.py", line 313, in _request
result = self._get_body(response)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/googlemaps/client.py", line 342, in _get_body
raise googlemaps.exceptions.ApiError(api_status,
googlemaps.exceptions.ApiError: INVALID_REQUEST
Extra
Adding time.sleep(2) resolves this error and the code executes
Working Code
import googlemaps
import json
from pprint import pprint
import time
## Import API Key
with open('config.json') as config_file:
config_data = json.load(config_file)
## Establish API Connection
gmaps = googlemaps.Client(key=config_data['maps_api_key'])
## Find places
barber_shops = gmaps.places('barber shop', radius=3218)
#Extract Next Page Token
npt = barber_shops["next_page_token"]
#For Usability
print(f'The first business returned is {barber_shops["results"][0]["name"]}')
print(f'\t The placed id is {barber_shops["results"][0]["id"]}')
print(f'\n\t\tThe next_page_token is {npt}')
#Request the next page || Raises googlemaps.exceptions.ApiError: INVALID_REQUEST
#next_page_barber_shops = gmaps.places('barber shop', radius=3218, page_token=npt)
#pprint(next_page_barber_shops)
#However if time.sleep(2) is utilized, there is no error:
time.sleep(2)
next_page_barber_shops = gmaps.places('barber shop', radius=3218, page_token=npt)
pprint(next_page_barber_shops)