Google Reviews Scraper — No API, 7× Cheaper, 60s Results avatar

Google Reviews Scraper — No API, 7× Cheaper, 60s Results

Pricing

from $0.10 / small batch (up to 50 reviews)

Go to Apify Store
Google Reviews Scraper — No API, 7× Cheaper, 60s Results

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

Tomas Lebedinskas

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

3

Monthly active users

15 days ago

Last modified

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)

  1. Open Google Maps in your browser.
  2. Click any business (restaurant, shop, hotel, service, etc.).
  3. Copy the URL from the address bar.
  4. Paste it into placeUrls below 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:

FieldDescription
Place infoName, address, overall rating, total review count, canonical URL
Review textFull review content (auto-expanded)
Star rating1–5 stars per review
Review dateAbsolute ISO timestamp (approximate, derived from the relative date)
Review relative dateRaw "2 months ago" / "a week ago" string from Google
Reviewer nameName and Local Guide status
Reviewer activityTotal reviews written by the reviewer
Owner responseBusiness owner's reply and date (if any)
Review likesHow many people found the review helpful
Review imagesURLs 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 sizePrice per placePer-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.
  • reviewDate is 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; use reviewRelativeDate in those locales. For exact absolute dates, no scraper can retrieve them — Google doesn't render them in the DOM.
  • reviewerUrl is 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 language input). For mixed-locale reviews, pass language: "en" to get English translations where Google provides them.

Troubleshooting

ProblemCauseFix
Run fails with "URL could not be resolved"URL doesn't match a specific placeOpen Google Maps, click the place, copy the URL directly
Empty datasetPlace is a landmark without a Reviews tabTry a specific business inside the landmark
Run fails with "Google served a sorry-page"Rate limitingRetry after a few minutes; contact support for proxy-rotation options at higher volumes
Missing owner responsesPlace has no owner responsesNot a bug — the field is null when no response exists
First run is slower than expectedPlaywright browser is warming upSubsequent 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:

  1. The input URL you used.
  2. The error message (if any) and the Apify run ID.
  3. What you expected to get.

We typically respond within 24 hours.