Skip to content

Pagination in Places Produces ApiError: INVALID_REQUEST (Rate-limit Problem?) #366

Description

@ChicagoDev

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

  1. Retrieve a list of places with a radius
  2. 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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage meI really want to be triaged.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions