Reviews Scraper for Google Maps - Full History & Replies avatar

Reviews Scraper for Google Maps - Full History & Replies

Pricing

from $0.33 / 1,000 reviews

Go to Apify Store
Reviews Scraper for Google Maps - Full History & Replies

Reviews Scraper for Google Maps - Full History & Replies

Scrape Google Maps reviews for any place, full history up to 4,490 per place: text, stars, reviewer, dates, owner replies, photos and detailed ratings, plus Google's total and a scorecard per place. Give it a place URL, a place ID or a search term.

Pricing

from $0.33 / 1,000 reviews

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

7 days ago

Last modified

Features

Limited permissions

Share

Reviews Scraper for Google Maps - Full History, Ratings & Replies

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Google Maps" is referenced only to describe the publicly available website this Actor collects data from.

Scrape Google Maps reviews for any place and export them to JSON, CSV or Excel: every review, up to 4,490 per place, with the full text in the original language and translated, star rating, reviewer, date, the owner's reply, photos, and Google's detailed ratings (food, service, atmosphere, rooms, price per person) in clean columns of their own.

Point it at a Maps link, a place ID, or just a search term. No API key and no Google account needed. Each place also gets a scorecard worked out from its reviews: reply rate, how recent stars compare with older stars, and how much of the place's reviews you have.

Why this Google reviews scraper?

DataThis Actor
Full review history, not just the first few reviews✅ up to 4,490 per place
Review text, star rating, reviewer name and profile✅
Original text and translation side by side✅
Exact publish date✅
Owner reply text and reply date✅ (see Good to know)
Local Guide status, reviewer review and photo counts✅
Detailed ratings in flat columns, one column name in 8 languages✅
Review photos✅
Whether the reviewer edited the review✅
Direct link back to the review✅
Google's total review count on every place✅
Place scorecard: reply rate, last 90 days against before, share with text and photos✅
Google's own 1 to 5 star counts, topics customers mention, claimed or not✅ optional place profile
Filter by stars, text, owner reply or date✅
Monitor mode: only new reviews✅

What you get

Every review row carries:

FieldNotes
textwhat the reviewer wrote, in their own language
textTranslated, translatedLanguagethe translation into your Language setting, when the review was written in another one
rating1-5 stars
publishedAtDateISO timestamp, not "3 months ago"
publishedAtTextGoogle's own wording, kept alongside
isEdited, updatedAtDatewhether the reviewer edited the review, and when
originalLanguagethe language the review was written in
reviewerName, reviewerUrl, reviewerId, reviewerPhotoUrlthe public profile
reviewerNumberOfReviews, reviewerNumberOfPhotos, isLocalGuidehow much weight the reviewer carries
ownerReplyText, ownerReplyDate, ownerReplyDateIsExact, hasOwnerReplythe business response
ratingFood, ratingService, ratingAtmosphere, ratingRooms, ratingLocationthe reviewer's detailed ratings, 1-5, where the review has them
pricePerPerson, orderType, mealType, waitTime, noiseLevel, groupSize, tripType, travelGroupthe rest of what the reviewer filled in
reviewDetailedRatingall of those together, with Google's own labels
photoUrls, photos, photoCountreview photos
reviewUrl, rank, sortedBya direct link, and the review's place in the order you asked for
placeName, placeAddress, placeCategory, placeScore, placeReviewsCount, placeId, placeCid, featureId, placeUrl, placeLatitude, placeLongitudethe place, on every row, so one export stands on its own

With Include a place summary row on (the default), each place also returns one place row:

FieldNotes
totalScore, reviewsCount, reviewsCountIsExactthe overall score and Google's total review count
placeCategory, placeAddress, phone, website, latitude, longitudethe listing
reviewsRead, reviewsFetched, coveragePcthow many reviews the run read and delivered, and the share of Google's total
avgRatingRead, avgRatingLast90Days, avgRatingBefore90Days, ratingChange90Daysare the stars going up or down?
reviewsLast30Days, reviewsLast90Days, reviewsLast365Days, latestReviewAthow busy the place is
ownerReplyRatePct, withTextPct, withPhotosPct, localGuidePcthow the owner responds, and how rich the reviews are
reviewsDistribution, reviewsDistributionPercent1-5 star counts, when every review was read or the place profile is on

The scorecard needs at least 20 reviews read (or the place's whole list) and is left empty on a star-sorted read, because a small or sorted sample would mislead. scorecardBasis says which reviews it is based on.

Switch on Add the full place profile to add Google's own star counts (stars1 to stars5), the topics customers mention and how often (reviewTopics, topReviewTopics), isClaimed, openingHours, businessStatus, address parts (addressStreet, city, postalCode, region, countryCode), additionalCategories, totalPhotos, hotelStars and more, where the listing has them.

Use cases

  • Reputation monitoring: a scheduled run with monitor mode emails or Slacks you only the reviews that arrived since last time.
  • Spotting a slide early: ratingChange90Days shows a place whose recent reviews are worse than its older ones, long before the headline score moves.
  • Complaint analysis: filter to 1 and 2 stars, or by a word, and feed the text straight into a sentiment or topic model.
  • Multi-location and franchise reporting: paste a list of place IDs and get one comparable table across every branch, with per-aspect ratings.
  • Competitor benchmarking: pull rivals' reviews and compare rating trends, reply rates and what customers actually complain about.
  • Lead generation: isClaimed: false and a low ownerReplyRatePct point to businesses nobody is looking after.
  • LLM and analytics pipelines: clean review text with real dates attached, ready to load without parsing HTML.

How to use

  1. Sign up for Apify: the free plan is enough to try this Actor.
  2. Put one or more places in Place URLs or IDs. All of these work:
    • a Maps link: https://www.google.com/maps/place/...
    • a share link: https://maps.app.goo.gl/...
    • a place ID: ChIJ3UFdD2KAhYARYOHf4j7DshM or place_id:ChIJ...
    • a feature ID: 0x808580620f5d41dd:0x13b2c33ee2dfe160
    • a CID: 1419411507436839264
  3. Or paste a whole list into Import places from a file, or link a .txt, .csv, Google Sheet or Drive file. Or skip links entirely and use Search terms (plus an optional Search location) to find places by name.
  4. Set Max reviews per place and Sort reviews by, click Start, then export as JSON, CSV, Excel, XML or RSS, or pull results through the Apify API.

Run the form as it opens, or leave the input empty, and you see real example rows of one place, stored, so no review is read or charged and you can check the output shape before a real job.

Sorting

newest (default), relevance, highest or lowest. newest really is the newest review first, which is what monitoring needs.

Filters

  • Star ratings: keep only the ratings you care about (e.g. just 1 and 2 for complaint analysis)
  • Review text contains: keep only reviews mentioning a word or phrase, in the original or the translation
  • Only reviews with an owner reply, Only reviews with text
  • Reviews newer than: a date, or a moving window such as 90 days for a scheduled run

Finding the matches means reading the place's reviews, so a review your star, text or owner-reply filter removes costs the lower Filtered-out review price, shown on the Pricing tab. Reviews older than your date are not charged. Max reviews to check caps how far a run looks. With Lowest rating or Highest rating sorting, a star filter finds its reviews at the top and reads far fewer.

Monitor mode

Switch on Monitor mode and the Actor remembers every review ID it has already returned, so a scheduled run delivers only new reviews, newest first. A check that finds nothing new costs no review. Ideal for a daily or hourly reputation alert.

Output

One row per review, plus an optional place row per place. A review row, shortened:

{
"type": "review",
"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT25kWlZFdHJjamxqZVZveFZFWm9TbVIxVkZWalVtYxAB",
"placeName": "Blue Bottle Coffee",
"placeAddress": "54 W 40th St, New York, NY 10018",
"placeCid": "5286334008307676694",
"placeScore": 4.4,
"placeReviewsCount": 1239,
"rating": 1,
"text": "Waited for over 15 min for a coffee while the workers worked on an online order.",
"originalLanguage": "en",
"publishedAtDate": "2026-09-15T20:33:39.000Z",
"publishedAtText": "a month ago",
"isEdited": false,
"reviewerName": "E. B.",
"reviewerNumberOfReviews": 3,
"isLocalGuide": false,
"ratingService": 1,
"ratingAtmosphere": 2,
"pricePerPerson": "$1–10",
"orderType": "Take out",
"hasOwnerReply": false,
"photoCount": 0,
"rank": 8,
"sortedBy": "newest"
}

And the scorecard on that place's place row, from the newest 100 reviews:

{
"type": "place",
"placeName": "Blue Bottle Coffee",
"totalScore": 4.4,
"reviewsCount": 1239,
"reviewsRead": 100,
"coveragePct": 8.1,
"avgRatingRead": 4.13,
"avgRatingLast90Days": 3.53,
"avgRatingBefore90Days": 4.27,
"ratingChange90Days": -0.75,
"reviewsLast90Days": 19,
"ownerReplyRatePct": 1,
"withTextPct": 72,
"withPhotosPct": 35,
"localGuidePct": 76
}

Good to know

  • Up to 4,490 reviews per place in one run, in the order you pick. Very large places have more than that: use Reviews newer than, or read the newest and lowest separately.
  • How long it takes: 20 reviews take a few seconds, 1,000 take about 3 minutes and the full 4,490 about 20 minutes. Keep the run timeout above that for very deep reads: the Actor reads only what fits the time it has, and says so.
  • Likes and "visited in" are not included. They are not in the data this Actor reads.
  • Owner reply dates: on the first 5 reviews read they are exact. Past those, Google's "2 months ago" is turned into a date, so it can be off by up to that unit: ownerReplyDateIsExact tells you which is which, and ownerReplyText_relative keeps Google's own words.
  • Edited reviews: past the first 5 reviews read, Google gives only the edit date, so publishedAtDate and updatedAtDate both hold it and isEdited is true. isEdited reads empty in a language other than English, German, French, Spanish, Italian, Portuguese, Dutch and Japanese.
  • Photo size, caption and location are filled on the first 5 reviews read; past those a review has its photo links.
  • The detailed-rating columns are filled when Language is one of those same 8. In any other language reviewDetailedRating still holds every detail with Google's own labels.
  • localGuideLevel is always empty. Google does not publish the level in review data, and the number this field held until November 2026 was not a level.
  • reviewsDistribution is empty unless every review was read or the place profile is on, because a star breakdown of part of a list misleads: reviewsDistributionBasis says so. A full read matches Google's own counts.
  • Reviews with no text still come back (rating, reviewer, date), and many reviews are like that. Only reviews with text leaves them out.
  • A place with no reviews returns a place row and no review rows, and says so in the run status.
  • If full history is not available on a run, you still get the first 5 reviews of each place and the run status says so. Re-run for the rest.

How much does it cost to scrape Google Maps?

This Actor uses Apify's pay-per-event pricing, with no monthly rental. You pay for the reviews a place really has, not the number you ask for. The events it can charge are:

  • Review: one Google Maps review in your dataset.
  • Filtered-out review: only when a filter or monitor mode is on, one review the run read and left out because your star, text or owner-reply filter removed it, or monitor mode had already delivered it.
  • Place summary: one summary row per place, while Include a place summary row is on.
  • Place profile: optional, one per place when the full place profile is switched on.
  • Run fee: a small fee each time a run starts.

From 20 November 2026, by your Apify plan:

Your Apify planReview (per 1,000)Filtered-out review (per 1,000)Place summary (each)Place profile (each)
Free$1.75$1.75$0.002$0.02
Bronze$0.43$0.25$0.0017$0.006
Silver$0.38$0.25$0.0014$0.0055
Gold and up$0.29$0.25$0.0011$0.005

The run fee is $0.0005. So 1,000 reviews on Bronze come to $0.43, plus $0.0017 for the place summary.

Until 20 November 2026 the earlier list applies: Review $0.60 / $0.51 / $0.42 / $0.33 per 1,000 on Free / Bronze / Silver / Gold and up, the same place summary, and no run fee. Until then, runs with a filter or monitor mode read the first 5 reviews of each place, the place profile is not available, and Free plan runs get the first 5 reviews of each place.

The live price of each event is always on the Pricing tab of this page. Set a maximum total charge on the run for a hard cap on spend: the Actor reads only what that limit can pay for.

Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/google-reviews-scraper').call({
"placeUrls": [
"https://www.google.com/maps/place/?q=place_id:ChIJi_eyi6pZwokRFvY-ucXUXEk"
],
"maxReviewsPerPlace": 200,
"sortBy": "newest",
"includePlaceSummary": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);

Integrate with any app

Connect the dataset to thousands of apps, no code required:

  • Make: multi-step automation scenarios.
  • Zapier: push new records straight into your CRM or spreadsheet.
  • Slack: get notified when a scheduled run finds something new.
  • Google Drive / Sheets: auto-export every run to a spreadsheet.
  • Airbyte: pipe results into your data warehouse.
  • GitHub: trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this Actor from Claude, ChatGPT or any agent framework through the Apify MCP server: describe the data you need and let the assistant run this Actor for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
  • Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Related Actors in the same category:

Tips

  • Cap, don't crawl. For monitoring, newest plus a small Max reviews per place costs far less than pulling a place's whole history every day, and monitor mode never charges a review as a review twice.
  • 5 reviews or fewer per place is the cheapest ask there is, and the place summary still gives you the score and total.
  • One place ID per branch. Feature IDs and CIDs are stable, so a saved list of them keeps multi-location reports comparable over time.
  • Complaint pipelines. Sort by Lowest rating with the 1-2 star filter, then add Review text contains to isolate a recurring issue.
  • Pair it with the Google Maps Scraper to build the place list first, then feed the place IDs in here.

FAQ

Does it really get all the reviews? Yes, up to 4,490 per place in one run. Compare reviewsRead with reviewsCount, or read coveragePct, to see how much of a place you have. When Google's own star counts are read with the place profile, a full read adds up to the same numbers.

How is this Actor billed? Pay-per-event, with no monthly rental: see How much does it cost. You pay for the reviews a place has, so asking for 1,000 from a place with 12 reviews bills 12.

Can I schedule it and get results automatically? Yes: create a Schedule and add a webhook or an integration (Google Sheets, Slack, Make, Zapier) to push each run's dataset wherever you need it.

Which export formats are available? Every run's dataset can be downloaded as JSON, CSV, Excel (XLSX), XML, HTML or RSS from the Apify Console or the API.

Can I run it from code or an AI agent? Yes: through the Apify API and client libraries, or from Claude, ChatGPT and other assistants via the Apify MCP server.

Is it legal to scrape Google Maps? This Actor collects publicly available data only. You are responsible for using the output in compliance with applicable laws (including data-protection law where personal data is involved) and the source's terms. See Data & lawful use and the Disclaimer below.

Is this an official Google Maps tool? No. It is an independent, third-party Actor with no affiliation to, endorsement by or sponsorship from Google LLC. See the Disclaimer below.

Data & lawful use

This Actor reads only publicly posted Google Maps reviews and place details. It never asks for your Google account, and it does not log in to one. The first reviews of a place come straight from the public Maps pages, with the ordinary anonymous cookies Google Maps itself sets. Reviews past those come from a commercial review-data provider, which receives only the place to read, your language and your sort order. Names, handles and photos are public, but they relate to identifiable people, so treat the output as personal data. If you are in the EU or UK you are the data controller for what you do with it: have a lawful basis (usually legitimate interest for research, marketing analytics or B2B prospecting), honour access and deletion requests, and do not use the output for spam or unsolicited messaging.

Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, and never used for any other purpose. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"Google Maps" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense, to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Google Maps product, is not authorised or certified by Google LLC, and does not distribute Google Maps software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome: this Actor is actively maintained.

⌂ 换网址