Tony Wang5 min readHow to Scrape Google Reviews in 2026 (API & Python)
Collect Google reviews — ratings, review text, author, and dates — as structured JSON via API, why the official Places API caps out, and the legal basics.
The fastest way to get Google reviews in 2026 is to call a structured API that resolves a business to its Google place and returns the place's details and reviews as normalized JSON — rating, review text, author, and dates — instead of automating the Google Maps site yourself. This guide covers why Google's own APIs fall short for review collection, the DIY route and why it breaks, and the reliable path.
This is the reviews-focused companion to how to scrape Google Maps: if you need the full business record (address, hours, phone, category) start there; if you specifically need the review stream, keep reading.
Is there an official Google Reviews API in 2026?
There are two official APIs, and neither does what most people want. The Google Places API returns place details including reviews, but only up to five reviews per place, with terms that restrict caching and how you display the data — fine for showing a few reviews on your own site, useless for collecting a business's full review history or doing sentiment analysis at scale. The separate Google Business Profile API can read all reviews, but only for locations you own and have verified — so you can monitor your own listings, not a competitor's or a market's.
That gap — no official way to pull the full public review stream for arbitrary businesses — is why review collection still runs through scraping or a maintained scraping API.
Is it legal to scrape Google reviews?
Google reviews are public, and collecting public data is generally treated differently from accessing private accounts — but it is not unconditional:
- Collect only public review data; never login-gated or private content.
- Reviews contain personal data (author names), so mind GDPR/CCPA if you store or process it — aggregate where you can and avoid building profiles of individuals.
- Respect rate limits and Google's terms; review your local law before commercial redistribution.
This is not legal advice — see Is web scraping legal in 2026? for the detail.
Option 1: DIY in Python (and why it breaks)
The Maps reviews UI is rendered client-side and defended, so a plain requests call gets you almost nothing. The common DIY path is a headless browser:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.google.com/maps/place/...")
# click the reviews tab, then scroll the panel repeatedly to lazy-load more
for _ in range(10):
page.mouse.wheel(0, 3000)
page.wait_for_timeout(800)
reviews = page.query_selector_all("div.jftiEf") # brittle, changes often
It works until it doesn't. The recurring pain:
- JavaScript rendering — reviews load client-side, so you need a real browser, not
requests. - Bot detection — Google fingerprints the browser and IP; datacenter IPs and headless Chrome get flagged fast, so you need residential proxies and stealth patches.
- Scroll pagination — reviews lazy-load on scroll with no stable page parameter, so you script an unbounded scroll loop and hope it finishes.
- Brittle selectors — the obfuscated class names change without notice and break your parser.
Option 2: No-code and ready-made tools
Browser extensions and spreadsheet add-ons can export a handful of reviews for one place, but they rarely give you the full stream in a form you can store, join, or schedule. For anything feeding a pipeline, a dashboard, or a product, you want the JSON.
Option 3: A structured Google reviews API
Resolve the business with a search, then pull its details and reviews from the place endpoint — normalized JSON, no browser to babysit. First find the place_id:
curl -X POST "https://api.crawlora.net/api/v1/google/map/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Blue Bottle Coffee, San Francisco"}'
Then fetch the place details, which include its reviews:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1"
# 1) find the place
place = requests.post(f"{base}/google/map/search", headers=h,
json={"query": "Blue Bottle Coffee, San Francisco"}).json()["data"]
place_id = place["results"][0]["place_id"]
# 2) pull details + reviews (fields are illustrative — confirm in the docs)
detail = requests.get(f"{base}/google/map/place/{place_id}", headers=h).json()["data"]
print(detail["rating"], detail["reviews_count"])
for r in detail["reviews"]:
print(r["rating"], r["date"], r["author"], r["text"][:120])
A response is normalized JSON (fields are illustrative — confirm the exact request body and schema in the docs):
{
"code": 200,
"msg": "OK",
"data": {
"name": "Blue Bottle Coffee",
"rating": 4.5,
"reviews_count": 1287,
"reviews": [
{ "rating": 5, "date": "a week ago", "author": "A. Reviewer", "text": "Great pour-over…" }
]
}
}
For monitoring many locations, the Google Maps Businesses dataset endpoints let you search and pull aggregates across a pre-crawled corpus instead of resolving each place live.
What you can collect
- The aggregate rating and total review count per place
- Individual reviews — star rating, review text, author, and relative date
- Owner responses where present
- Enough to build a rating distribution and track sentiment over time
Limitations and common challenges
- No official bulk source. The Places API caps at 5 reviews and restricts storage; the Business Profile API is own-listings-only — so full public review collection is inherently a scraping problem.
- Relative dates. Google exposes review dates as "a week ago", not timestamps; normalize them at collection time and store your fetch date so the series stays meaningful.
- Reviews are truncated and reordered. The public UI surfaces a subset and sorts by relevance by default; treat a pull as a large sample, not a guaranteed complete history.
- Personal data. Author names are personal data — aggregate for analysis and mind GDPR/CCPA before storing or redistributing.
Sources
Where this fits
Try it first, free: run a place through the Free Web Scraper, or check whether a target blocks bots with the Anti-Bot Checker — no signup.
Reviews are most valuable next to the rest of the business record and other review sources. Pair them with how to scrape Google Maps for the full listing, how to scrape Trustpilot reviews for cross-platform reputation, and the app-review analysis workflow for turning raw reviews into sentiment. For the broader toolkit, see how to choose a web scraping API.
Get started by testing the endpoint in the Playground, reading the request and response schema in the API docs, and reviewing credit costs on the pricing page.
Frequently asked questions
Is there an official Google reviews API?
Two exist, and neither covers bulk review collection. The Google Places API returns at most five reviews per place and restricts how you cache and display them. The Google Business Profile API can read all reviews, but only for locations you own and have verified. So there is no official way to pull the full public review stream for an arbitrary business — that gap is why review collection still runs through scraping or a scraping API.
How do I scrape Google reviews?
The reliable route is a structured API: resolve the business to a Google place with a search call, then fetch the place details — which include its reviews — as JSON (rating, review text, author, relative date). Doing it yourself means driving a headless browser through the client-rendered Maps UI, an unbounded scroll loop for pagination, and brittle obfuscated selectors, plus residential proxies to survive Google's bot detection.
Is it legal to scrape Google reviews?
Google reviews are public data, and collecting public data is generally treated differently from accessing private accounts, but it is not unconditional. Collect only public reviews, respect rate limits and Google's terms, and remember that author names are personal data — aggregate where you can and mind GDPR/CCPA before storing or redistributing. This is not legal advice; review your local law before commercial use.