Google Maps Reviews Scraper: Ratings, Text & Owner Reply avatar

Google Maps Reviews Scraper: Ratings, Text & Owner Reply

Pricing

from $7.00 / 1,000 reviews

Go to Apify Store
Google Maps Reviews Scraper: Ratings, Text & Owner Reply

Google Maps Reviews Scraper: Ratings, Text & Owner Reply

Scrape Google Maps reviews: star rating, reviewer name, full text, date, owner response and photo count. Works as MCP tool in Claude, ChatGPT & AI agents. Pay per result, first 10 free.

Pricing

from $7.00 / 1,000 reviews

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

⭐ Google Maps Reviews Scraper: Ratings, Text & Owner Replies

Overview

Google Maps Reviews Scraper extracts reviews from any Google Maps business listing at scale. Paste one or more Google Maps place URLs and get structured review data in seconds: star rating, full expanded review text, date, reviewer name and profile, owner response, photo count, and helpful votes.

It goes beyond the official Google Places API, which caps results at roughly five reviews per place with no control over sort order. This scraper drives a real Chromium browser through residential proxies, dismisses the consent dialog, scrolls the reviews panel, expands every truncated review, and returns up to 1,000 records per place sorted by newest, most relevant, highest, or lowest rating.

✅ No login required | ✅ No API key | ✅ Full expanded review text | ✅ MCP-ready for AI agents

Features

Up to 1,000 reviews per place URL, far beyond the official API's five review cap. Four sort orders: newest, most relevant, highest rating, lowest rating. Full expanded review text, never truncated with a "more" ellipsis. Handles the EU cookie consent wall automatically across regions. Pay per review returned, empty results and failed runs never charged.

How it works

The scraper opens each Google Maps place URL in a stealth hardened Chromium session behind Apify's residential proxy network, dismisses the cookie consent dialog with a multi selector fallback, and clicks into the reviews panel. It then applies your chosen sort order, scrolls to trigger Google's lazy loaded pagination, and clicks "read more" on every truncated review before extracting the content.

Every field is read from the rendered DOM, so review text, ratings, reviewer profiles, owner responses, photo counts, and helpful votes all match what a human visitor sees. The default residential proxy avoids Google's datacenter IP blocks, and you can override the browser locale by setting a language code.

🧾 Input configuration

{
"placeUrls": [
"https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2944813,17z/data=!4m8!3m7!1s0x47e66e2964e34e2d:0x8ddca9ee380ef7e0!8m2!3d48.8583701!4d2.2944813!9m1!1b1"
],
"maxReviews": 50,
"sortBy": "newest",
"language": "en",
"proxyConfig": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

📤 Output format

{
"reviewId": "ChdDSUhNMG9nS0VJQ0FnSUNuNV9DVnFRRRAB",
"placeId": "ChIJLU7jZC1u5kcR9wOePBLb38A",
"placeName": "Eiffel Tower",
"placeUrl": "https://www.google.com/maps/place/Eiffel+Tower/...",
"reviewerName": "TALENTO HUMANO",
"reviewerUrl": "https://www.google.com/maps/contrib/110758759962531004425",
"rating": 5,
"reviewText": "Breathtaking at night. Worth the wait to go to the top.",
"reviewDate": "51 minutes ago",
"ownerResponse": null,
"photoCount": 2,
"helpfulVotes": 0,
"charged": true,
"scraped_at": "2026-07-10T04:56:59.605Z"
}

Every review record contains these fields:

FieldDescription
🆔 reviewIdUnique review identifier from Google
📍 placeIdGoogle Maps place identifier
🏢 placeNameName of the business or landmark
🔗 placeUrlThe input Google Maps URL
🙋 reviewerNameDisplay name of the reviewer
👤 reviewerUrlLink to the reviewer's Google Maps profile
ratingStar rating from 1 to 5
📝 reviewTextFull expanded review text
📅 reviewDateWhen the review was posted
ownerResponseBusiness owner reply if present
📷 photoCountNumber of photos attached to the review
👍 helpfulVotesNumber of helpful votes
💳 chargedWhether this result consumed a paid credit
🕒 scraped_atISO timestamp when the review was scraped

💼 Common use cases

Reputation management Pull the latest reviews on a schedule, route negatives to your CRM, and catch recurring complaints early.

Competitive analysis Collect competitors' reviews to compare star distributions and surface common praise and criticism.

Local SEO research Study review velocity, rating trends, and owner response rates for top ranking businesses in a category or city.

Sentiment analysis and NLP Feed full reviewText into classifiers, topic models, or LLM summarization pipelines without worrying about truncation.

Product and service improvement Mine reviews for recurring issues and feature requests. Extract authentic customer quotes for social proof.

🚀 Getting started

  1. Open the actor and add one or more Google Maps place URLs. Open the place on Google Maps and copy the URL from the address bar.
  2. Set maxReviews per place (default 50, up to 1,000).
  3. Choose sortBy: newest, most_relevant, highest_rating, or lowest_rating.
  4. Optionally set the language ISO code (e.g. fr, de, ja) and keep the default RESIDENTIAL proxy.
  5. Click Start, then export the dataset as JSON, CSV, or Excel, or pull it via API or MCP.

FAQ

How many reviews can I scrape per place? Up to 1,000 per place URL. Google lazy loads reviews through scroll events rather than traditional pagination, so the ceiling keeps runs bounded. For more than 1,000, run the actor again with a different sortBy value to capture distinct slices of the review corpus.

Does it handle the Google cookie consent dialog? Yes. The scraper runs a real Chromium browser and automatically detects and dismisses the EU cookie consent wall (trying multiple selector strategies) before any interaction, across regions.

Can I filter reviews by language? Set the language input to any ISO 639 1 code. That sets the browser locale so Google serves reviews in or near your preferred language. Google still shows reviews in the reviewer's own language, so for strict filtering, post process reviewText with a language detection library.

How much does it cost? Pay per event. You are charged per review actually returned, and there is no free tier. Empty results and failed runs are never charged. Residential proxy usage is billed separately by Apify at standard rates.

Can I use it inside an AI agent? Yes. It is exposed as an MCP tool. See below.

Use in Claude, ChatGPT & any MCP agent

https://mcp.apify.com/?tools=themineworks/google-maps-reviews

Or call it programmatically with the Apify client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('themineworks/google-maps-reviews').call({
placeUrls: ['https://www.google.com/maps/place/Taj+Mahal/...'],
maxReviews: 100,
sortBy: 'highest_rating',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => !i._type));

🛠️ Complete your Google Maps pipeline

Pair this reviews scraper with the rest of the themineworks Google Maps and lead gen suite:

Common flow: google-maps-search-scraper finds businesses, maps-leads adds verified emails, then google-maps-reviews pulls reviews for the same businesses to gauge reputation.