Google Maps Reviews API in Python: Pagination, Sorting, Dedupe, Owner Replies
Method note: Measurements in this article were run locally against authenticated Serpent API endpoints on August 3, 2026. Sample sizes are stated in the article. Treat the numbers as a dated field check, not a permanent guarantee.
Short answer: fetch reviews by place identifier, store review_id, and paginate with the returned page token. Never dedupe by reviewer name or date. Review IDs are the stable key.
I tested two businesses on August 3, 2026. Both first pages returned 20 reviews and a next-page token. One second-page request returned 20 more reviews with zero overlapping IDs; the other returned a temporary 503 in this local run, which is why production jobs should checkpoint page progress.
| Business | Page 1 reviews | Next token | Page 2 reviews | Overlapping IDs | Owner replies |
|---|---|---|---|---|---|
| South Austin Dentist | 20 | yes | 0 | 0 | 19 |
| Time Plumbing, Heating & Electric Denver | 20 | yes | 20 | 0 | 38 |
Python Ingest
import requests, sqlite3
BASE = "https://apiserpent.com"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
def fetch_reviews(place_id, page_token=None, sort="newest"):
params = {"place_id": place_id, "sort": sort}
if page_token:
params["page_token"] = page_token
r = requests.get(f"{BASE}/api/maps/reviews", headers=HEADERS, params=params, timeout=60)
r.raise_for_status()
return r.json()
page = fetch_reviews("ChIJ...")
for review in page["reviews"]:
save_review(review["review_id"], review["rating"], review["text"]["original"])
if page.get("next_page_token"):
next_page = fetch_reviews("ChIJ...", page["next_page_token"])
Pagination Rules
Store the input identifier, sort mode, page token, and fetch timestamp. If a later page fails, resume from the last successful token. Do not assume a page token is meaningful for a different sort order.
Primary Sources
FAQ
Does the endpoint return owner replies?
Yes. In the August 2026 sample, the first review page for both tested businesses included owner responses on 19 of 20 reviews.
How do I avoid duplicate reviews?
Use review_id as the primary key and treat page tokens as cursors, not offsets.
Can I sort reviews?
The endpoint accepts sort values such as newest, relevant, highest, and lowest. Always store the sort with the page token you requested.


