Google Reviews Scraper — No API, 7× Cheaper, 60s Results
Pricing
from $0.10 / small batch (up to 50 reviews)
Google Reviews Scraper — No API, 7× Cheaper, 60s Results
Extract Google Maps reviews at scale — no API key, results in 60s. $0.10/$0.25 per place (flat, not per review). Full text, stars, ISO dates, reviewer + owner responses. 9 countries tested. Up to 68× cheaper than Google Places API at chain scale. For reputation monitoring and lead gen.
Pricing
from $0.10 / small batch (up to 50 reviews)
Rating
0.0
(0)
Developer
Tomas Lebedinskas
Actor stats
0
Bookmarked
8
Total users
3
Monthly active users
15 days ago
Last modified
Categories
Share
Google Reviews Scraper
Extract reviews from any Google Maps business in seconds. Paste URLs, Place IDs, or business names — get clean, structured review data ready for analysis, reputation management, or feeding into AI pipelines.
Maintained by Godberry Studios. Questions: hello@godberrystudios.com.
How to use (30 seconds)
- Open Google Maps in your browser.
- Click any business (restaurant, shop, hotel, service, etc.).
- Copy the URL from the address bar.
- Paste it into
placeUrlsbelow and click Start.
That's it. You can paste multiple URLs to scrape several places in one run. You can also pass business names as search queries — the scraper resolves them the same way a human would.
What you get
Every review comes back as a structured JSON row with these fields:
| Field | Description |
|---|---|
| Place info | Name, address, overall rating, total review count, canonical URL |
| Review text | Full review content (auto-expanded) |
| Star rating | 1–5 stars per review |
| Review date | Absolute ISO timestamp (approximate, derived from the relative date) |
| Review relative date | Raw "2 months ago" / "a week ago" string from Google |
| Reviewer name | Name and Local Guide status |
| Reviewer activity | Total reviews written by the reviewer |
| Owner response | Business owner's reply and date (if any) |
| Review likes | How many people found the review helpful |
| Review images | URLs of photos attached to the review |
Why this scraper
- Fast — 100 reviews in ~30 seconds. 5 reviews in ~10 seconds.
- Focused — reviews only. No bloated place-data fields you'll throw away.
- Flat-fee pricing — pay per place, not per review. Scrape 500 reviews from one place for the same price as 51.
- Handles multiple UI variants — restaurants, shops, hotels, cafés, markets, chains with 100K+ reviews. Tested across 9 countries and 3 scripts.
- Flexible input — accepts browser-copied URLs, short links, Place IDs, CIDs, or plain business-name search queries.
- Absolute dates — in addition to Google's relative strings, each review includes an ISO timestamp derived from the scrape time (±½ unit precision).
- Resilient to Google's UI variants — the scraper navigates around stripped/minimal panel responses that fool simpler scrapers.
Input
{"placeUrls": ["https://www.google.com/maps/place/Katz's+Delicatessen/@40.7223234,-73.9873893","Lokys restaurant Vilnius","ChIJm77V--yUC0cRwEg_TQAef9Q"],"maxReviewsPerPlace": 100,"sortBy": "newest","onlyWithText": false,"language": "en"}
Input fields
- placeUrls (required): Array of Google Maps URLs, short links, Place IDs, CIDs, or business names.
- maxReviewsPerPlace (default: 100, max: 5000): How many reviews to extract per place.
- sortBy (default: "newest"):
relevant,newest,highest,lowest. - onlyWithText (default: false): Skip star-only reviews without text.
- language (default: all): Filter by language code (e.g.,
en,de,fr). Affects both review filtering and Google's UI locale.
Output example
{"placeUrl": "https://www.google.com/maps/place/Lokys/@54.6799344,25.2863904,17z/data=!...?hl=en","placeName": "Lokys","placeAddress": "Stiklių g. 8, Vilnius, 01131 Vilniaus m. sav.","placeOverallRating": 4.6,"placeTotalReviews": 14913,"reviewerName": "George Markopoulos","reviewerUrl": "","reviewerTotalReviews": 52,"reviewerIsLocalGuide": true,"reviewRating": 5,"reviewText": "Eating here is a reason by itself to visit Vilnius... believe me, the price is good for the quality of the taste.","reviewDate": "2026-04-16T14:16:24.804Z","reviewRelativeDate": "18 hours ago","reviewLikes": 0,"ownerResponse": null,"ownerResponseDate": null,"reviewImages": ["https://lh3.googleusercontent.com/..."],"scrapedAt": "2026-04-17T08:16:24.804Z"}
Use cases
- Reputation management — monitor what customers say about your business.
- Competitor analysis — compare review sentiment across competitors.
- Lead generation — find businesses with poor reviews (opportunity for your service).
- Market research — analyze customer feedback patterns in any industry.
- SEO & local marketing — track review velocity and response rates.
- Sentiment analysis — feed reviews into NLP/AI pipelines.
Pricing
Flat fee per place, based on how many reviews you extract from it:
| Batch size | Price per place | Per-review cost at max |
|---|---|---|
| Up to 50 reviews | $0.10 | $0.002 |
| 51 or more reviews | $0.25 | $0.0005 (at 500 reviews) |
How to think about it: if you scrape 500 reviews from one restaurant, you pay $0.25. If you scrape 5 reviews, you pay $0.10. We only charge once per place — not once per review — so bigger extractions are dramatically cheaper per row. A chain with 5,000 reviews still costs $0.25 total — that's $0.05 per 1,000 reviews.
For comparison: Google's official Places Details API charges ~$17 per 1,000 requests for reviews (and only returns 5 reviews per request). To get 1,000 reviews via the official API you'd pay ~$3.40, and you'd get truncated previews instead of the full text. This scraper pulls 1,000 reviews for roughly $2 (at average batch sizes) or as little as $0.05 when you're extracting from high-review businesses — up to 68× cheaper per review at chain scale, with no API key or GCP billing account required.
Tested locations
We regression-test against real Google Maps across:
🇺🇸 USA · 🇬🇧 UK · 🇩🇪 Germany · 🇫🇷 France · 🇮🇹 Italy · 🇪🇸 Spain · 🇯🇵 Japan · 🇦🇺 Australia · 🇷🇺 Russia · 🇨🇿 Czechia · 🇱🇹 Lithuania
Business types validated: restaurants, hotels, cafés & coffee shops, department stores, markets & attractions, fine-dining, niche independents, global chains with 100K+ reviews.
Supported input formats
- ✅ Full Google Maps URL:
https://www.google.com/maps/place/... - ✅ Short link:
https://maps.app.goo.gl/abc123 - ✅ Place ID:
ChIJLU7jZClu5kcR4PcOOO6p3I0 - ✅ CID:
1234567890123456789 - ✅ Business name search:
"Starbucks Times Square New York"
Known limitations
- 5,000 reviews per place is Google's display ceiling. Even places with 200K reviews only expose ~5K through the Maps UI. This scraper respects that.
- Landmarks without a Reviews tab (e.g., Eiffel Tower, some monuments and parks) show reviews inline on their Overview page. These may not extract reliably — use the specific business inside the landmark instead (e.g., a restaurant, shop, or ticket office).
- Very popular places (100K+ reviews) may take several minutes — we have to scroll through Google's virtualized list, which throttles itself.
reviewDateis approximate — derived from Google's relative date ("2 months ago") and the scrape time, with ±½ unit precision. For non-English relatives (e.g., "vor 2 Monaten") the field is empty; usereviewRelativeDatein those locales. For exact absolute dates, no scraper can retrieve them — Google doesn't render them in the DOM.reviewerUrlis often empty. Google removed the direct reviewer-profile anchor from the Maps UI in 2026; the reviewer name is still returned but the link to their profile is no longer available in the rendered DOM.- Review text is in the locale Google renders (controlled by the
languageinput). For mixed-locale reviews, passlanguage: "en"to get English translations where Google provides them.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Run fails with "URL could not be resolved" | URL doesn't match a specific place | Open Google Maps, click the place, copy the URL directly |
| Empty dataset | Place is a landmark without a Reviews tab | Try a specific business inside the landmark |
| Run fails with "Google served a sorry-page" | Rate limiting | Retry after a few minutes; contact support for proxy-rotation options at higher volumes |
| Missing owner responses | Place has no owner responses | Not a bug — the field is null when no response exists |
| First run is slower than expected | Playwright browser is warming up | Subsequent runs in the same session are ~2× faster |
Responsible use
This scraper reads publicly-visible review content from Google Maps. You are responsible for complying with Google's Terms of Service in your jurisdiction and for handling the scraped data in accordance with applicable law. In particular:
- GDPR / privacy — reviews contain reviewer names and may contain other personal data. If you store or analyze this data, make sure your use has a lawful basis and that you respect any downstream right-to-be-forgotten requests.
- Rate limiting — don't run the scraper at volumes that degrade the service for other users. For high-volume workflows, contact us at hello@godberrystudios.com to discuss a proxy-rotating configuration.
- No impersonation or manipulation — this tool reads reviews. Do not use it to automate the writing or voting on reviews; that violates both Google's ToS and, in many jurisdictions, consumer-protection law.
By using this actor you accept that Godberry Studios provides the tool as-is with no warranty. The source is under MIT license — feel free to fork and adapt.
Support
Found a place that doesn't scrape correctly? Hit a bug? Contact us at hello@godberrystudios.com with:
- The input URL you used.
- The error message (if any) and the Apify run ID.
- What you expected to get.
We typically respond within 24 hours.
