You can scrape Google reviews from a business's Google Maps listing, but you cannot get them in bulk from Google's official API: the Places API returns a maximum of five reviews per place, and the Business Profile API only works for locations you own. That gap is the whole reason a review-scraping industry exists.
If you need the full review history of one business, or any reviews at all for a competitor, the official endpoints will not get you there. This guide covers what the APIs actually give you, the three ways to extract reviews instead, the fields worth capturing, what breaks when you build it yourself, and where the legal lines sit.
Why the official API is not the answer
This is the part most guides skip, and it is the part that determines your whole approach.
Google exposes review data through two different products, and neither one does what a reputation or competitive-intelligence project needs.
| Route | What you get | The catch |
|---|---|---|
| Places API (Place Details) | Up to five user-submitted reviews per place, plus an AI-generated review summary | Five is a hard cap, not a page size. There is no pagination to review six. Requesting the field bills at the Enterprise + Atmosphere SKU tier, the most expensive one |
Business Profile API () | All reviews for a location, paginated with a page token, plus average rating and total count | Works only for locations you own and have verified. Access is gated behind an application Google reviews manually, and parts of the v4 API are on a shutdown schedule |
| Scraping the public listing | Whatever is publicly visible: full history, owner replies, reviewer metadata, any business | You build and maintain it, and you own the compliance decisions |
The practical consequence: the Business Profile API is fine for a single-brand review inbox, which is why most review-response tools are built on it. It is useless the moment your question involves a competitor, a market or a category, because you do not own those locations.
So if your question is "how are the twelve dispensaries in my city rated, and what are people complaining about," there is no API for that. There is public data and a decision about how to collect it.
What a Google review record should actually contain
A scraper that returns star ratings and review text is easy to write and nearly useless for analysis. The value sits in the metadata, because that is what lets you filter noise, spot manipulation and track change over time.
| Field | Why it matters |
|---|---|
, business name, address | Your join key. The place ID is stable; names and addresses are not |
(1–5) | The obvious one, and weak on its own |
| Where the actual signal is. Empty for rating-only reviews, which are common |
and | Google shows "3 months ago." You need a real timestamp to build a trend line, so resolve it at capture time and store the capture date too |
, profile URL | Personal data. See the compliance section — you may want to hash or drop this |
, Local Guide status | The cheapest fake-review signal available. A one-review account and a 400-review Local Guide are not equal evidence |
+ response date | How the business handles criticism. Often more commercially interesting than the review itself |
/ helpful count | Weighting signal |
+ original vs. translated text | Google auto-translates. Sentiment scoring on a machine translation produces results you cannot audit |
| Deduplication. Without it, every re-run inflates your dataset |
The language field catches teams out constantly. If you score sentiment over Google's translated text instead of the original, your numbers drift in ways nobody can explain three months later.
Three ways to scrape Google reviews
1. No-code tools and browser extensions
Point-and-click scrapers and extensions export reviews to CSV or XLSX. There are plenty of them, and for a one-off pull on a handful of listings they are genuinely the right call — you will have your data in twenty minutes.
Where they stop working: scheduled runs, hundreds or thousands of locations, a consistent schema across months, and anything that has to land in a database rather than a spreadsheet. Extensions also break every time Google ships a layout change, and you tend to find out when an export comes back empty. We compared this category in no-code web scraping tools.
2. Build your own scraper
Full control over fields, scheduling and storage. Realistic to build — and considerably harder to keep running than to build, which is the next section.
3. A managed data service
You define the sources, fields and frequency; someone else owns the maintenance, the proxy infrastructure and the breakage at 3 a.m. That is what our brand reputation monitoring work is: structured mentions delivered as CSV, Excel, JSON or straight into your database, on a daily, weekly or custom cadence.
The honest decision rule: if review data feeds a product or a recurring business decision, the maintenance burden decides this, not the build cost. If it is a one-time market study, build it or use a tool and move on. Our breakdown of what web scraping costs walks through the numbers.
What actually breaks when you build it
Google reviews are one of the harder public targets. These are the problems that consume the time.
Reviews load dynamically, inside a scrolling pane. The review content is not in the initial HTML. You need a real browser, and you need to scroll a specific inner container — not the page — until it stops producing new nodes. Scrolling the window does nothing.
There is no page number. You cannot request page 7. You scroll, and you have to decide when you are finished: no new reviews after N scroll attempts, or you have reached the review count the listing reported. Get this wrong and you silently capture the first 40 reviews of a business that has 900.
Sort order changes what you get. Google's default is "most relevant," which is a curated subset rather than a chronological feed. If you want a complete history or a reliable trend line, switch to "newest" — otherwise your dataset is shaped by Google's ranking and you cannot reproduce it.
Anti-bot friction. Rate limiting, CAPTCHAs and consent interstitials, especially from datacenter IPs. Residential proxies with correct geolocation help, as does slowing down to something resembling human pacing. We cover the general mechanics in how to fix a blocked scraper with IP rotation.
Results are geo- and language-dependent. The same listing returns different review sets depending on where you appear to be browsing from and which language you request. For comparable data across a market, pin the locale and document it. If you do not, you cannot explain month-over-month changes.
Selectors are obfuscated and rotate. Google's class names are generated and change without warning. Anchor on structure and ARIA roles rather than class strings, and add a validation step that alerts you when a run returns a suspiciously round number or a field goes fully null. Silent degradation is the real failure mode — not a crash, but three weeks of empty
review_text that nobody noticed.



