Google Maps Reviews Scraper
Pricing
from $0.30 / 1,000 review scrapeds
Google Maps Reviews Scraper
Scrape all reviews from any Google Maps place by URL, Place ID, CID, or business name. Get rating, text, reviewer, date, owner response, and sentiment hint.
Pricing
from $0.30 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Reviews Scraper — Ratings, Text, Owner Replies
What it does: Extract every review from any Google Maps place in structured JSON — rating, text, reviewer, date, owner reply, and a rating-derived sentiment bucket. Accepts Google Maps URLs, Place IDs, CIDs, or a business name plus location.
When to use it: reputation monitoring, competitive review research, sentiment analysis, AI-agent workflows that need review data for a specific place. Do NOT use it for finding business lead contact info — that lives in khadinakbar/google-maps-leads-scraper.
Output at a glance
| Field | Type | Example |
|---|---|---|
reviewId | string | ChZDSUhNMG9nS0VJQ0FnSURwLVlPajJBRRAB |
placeName | string | Joe's Pizza |
placeUrl | string | https://www.google.com/maps/place/... |
placeAddress | string | 7 Carmine St, New York, NY 10014 |
placeRating | number | 4.6 |
placeReviewCount | integer | 12,847 |
rating | integer (1–5) | 5 |
text | string | Best slice in the Village — the classic is unreal. |
publishedAtText | string | a month ago |
publishedAt | ISO-8601 | 2026-03-25T13:24:00.000Z |
ownerResponse | string|null | Thanks for visiting! |
sentimentHint | string | positive / neutral / negative |
photos | string[] | image URLs attached to the review |
likesCount | integer | 3 |
reviewerName | string|null | null unless includePersonalData: true |
reviewUrl | string | permalink to this review |
scrapedAt | ISO-8601 | timestamp of extraction |
sentimentHint is rating-derived (4–5 positive, 3 neutral, 1–2 negative) — not ML-based. Feed the text into your own NLP pipeline for true sentiment.
Pricing — $0.30 per 1,000 reviews
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.00005 | One-time per GB of memory at run start |
| Review scraped | $0.0003 | Per individual review pushed to the dataset |
Typical costs:
- 100 reviews: ~$0.03
- 500 reviews: ~$0.15
- 5,000 reviews: ~$1.50
No tiered games. Same price whether you're on Apify FREE or DIAMOND. Cheaper than most competitors (compass FREE tier charges $0.60/1K, api-ninja $0.30/1K, memo23 effectively $0.32/1K including its $0.07 start fee).
Inputs
You must provide one of:
startUrls— array of Google Maps URLs (place URLs, search URLs, CID URLs).placeIds— array of Place IDs (e.g.,ChIJ...).searchQuery+ optionallocation— business name and city/region; the scraper clicks through to the first matching place.
Optional parameters:
| Param | Default | Notes |
|---|---|---|
maxReviews | 100 | Cap per place. Google typically exposes up to ~4,000 reviews even for very popular places. |
reviewsSort | newest | newest | mostRelevant | highestRanking | lowestRanking |
language | en | UI language for Google Maps; affects relative-date labels. |
includePersonalData | false | GDPR toggle — when false, reviewerName, reviewerUrl, and reviewerPhotoUrl are nulled. Enable only if you have a legitimate basis under your applicable privacy law. |
proxyConfiguration | Apify Residential | Do not override unless you know your proxy handles Google. |
Usage
Via the Apify UI
Paste a Google Maps URL into startUrls, set maxReviews, and hit Start.
Via the Apify API (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/google-maps-reviews-scraper').call({startUrls: [{ url: 'https://www.google.com/maps/place/Joe%27s+Pizza/@40.7299934,-74.0025633,17z' },],maxReviews: 200,reviewsSort: 'newest',language: 'en',includePersonalData: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Via the Apify API (Python)
from apify_client import ApifyClientclient = ApifyClient(token="APIFY_TOKEN")run = client.actor("khadinakbar/google-maps-reviews-scraper").call(run_input={"startUrls": [{"url": "https://www.google.com/maps/place/Joe%27s+Pizza/..."}],"maxReviews": 200,"reviewsSort": "newest",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["rating"], item["text"])
Via MCP (AI agents)
The actor is exposed on Apify MCP as apify--google-maps-reviews-scraper. Claude, GPT, and other agents can call it directly with a Google Maps URL to pull reviews for reasoning.
https://mcp.apify.com?tools=khadinakbar/google-maps-reviews-scraper
Use cases
- Reputation monitoring — watch a single location's newest reviews.
- Competitive analysis — pull ratings and text from a competitor's flagship store.
- Sentiment mining — feed
textinto an NLP pipeline;ratinggives a clean supervised label. - Owner-reply auditing — agencies verifying their clients are replying to negatives.
- AI agent research — chain with
khadinakbar/google-maps-leads-scraperto pull business + reviews in one flow.
Frequently asked
How many reviews can I get per place? Google typically caps accessible reviews at ~3,500–4,000 even for places with tens of thousands. Use maxReviews to set your own cap.
Is this compliant? The scraper reads publicly visible reviews. includePersonalData defaults to false so reviewer names and profile URLs are stripped by default. If you enable it, you are responsible for your legal basis (GDPR Article 6 / equivalent in your jurisdiction).
Why don't dates match exactly? Google shows relative dates ("a month ago"). publishedAt is an ISO approximation derived from that label — not a precise timestamp. The source of truth is publishedAtText.
My run returned 0 reviews — what happened? Most common causes: (1) the URL was a search URL that returned no matches, (2) Google temporarily served a consent/captcha page that we couldn't dismiss, (3) the place has no reviews. Re-run with a direct place URL if in doubt.
Can I schedule this? Yes — use Apify Schedules to run daily or weekly and diff the dataset against the previous run.
Legal
The Actor extracts publicly available reviews from Google Maps. You are responsible for complying with Google's Terms of Service and all applicable data-protection laws (GDPR, CCPA, etc.) when using the extracted data. The author is not affiliated with Google.