Google Maps Reviews Scraper avatar

Google Maps Reviews Scraper

Pricing

from $0.30 / 1,000 review scrapeds

Go to Apify Store
Google Maps Reviews Scraper

Google Maps Reviews Scraper

Scrape Google Maps reviews by URL, data ID, Place ID, CID, or business name. Get rating, text, date, owner response, photos, and privacy-safe reviewer hashes.

Pricing

from $0.30 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

1

Bookmarked

13

Total users

7

Monthly active users

2 days ago

Last modified

Share

Google Maps Reviews Scraper — Ratings, Text, Owner Replies

What it does: Extract Google Maps reviews in structured JSON — rating, text, reviewer hash or reviewer details, date, owner reply, photos, and a rating-derived sentiment bucket. Accepts Google Maps place URLs, internal data IDs/CIDs, Place IDs, 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

FieldTypeExample
reviewIdstringChZDSUhNMG9nS0VJQ0FnSURwLVlPajJBRRAB
placeNamestringJoe's Pizza
placeUrlstringhttps://www.google.com/maps/place/...
placeAddressstring7 Carmine St, New York, NY 10014
placeRatingnumber4.6
placeReviewCountinteger12,847
ratinginteger (1–5)5
textstringBest slice in the Village — the classic is unreal.
publishedAtTextstringa month ago
publishedAtISO-86012026-03-25T13:24:00.000Z
ownerResponsestring|nullThanks for visiting!
sentimentHintstringpositive / neutral / negative
photosstring[]image URLs attached to the review
likesCountinteger3
reviewerNamestring|nullnull unless includePersonalData: true
reviewerHashstring|nullstable privacy-safe reviewer hash
reviewUrlstringpermalink to this review
extractionSourcestringlistugcposts or boq
scrapedAtISO-8601timestamp 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

EventPriceWhen charged
Actor start$0.00005One-time per GB of memory at run start
Review scraped$0.0003Per 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).
  • dataIds — array of internal Maps data IDs/CIDs in 0x...:0x... format.
  • placeIds — array of Place IDs (e.g., ChIJ...).
  • searchQuery + optional location — business name and city/region; the scraper clicks through to the first matching place.

Optional parameters:

ParamDefaultNotes
maxReviews100Cap per place. Google typically exposes up to ~4,000 reviews even for very popular places.
reviewsSortnewestnewest | mostRelevant | highestRanking | lowestRanking
reviewSearchQueryemptyOptional keyword filter inside reviews. Best with direct Google Maps URLs.
languageenUI language for Google Maps; affects relative-date labels.
countryCodeUSGoogle region hint for place/review requests.
includePersonalDatafalseGDPR toggle — when false, reviewerName, reviewerUrl, and reviewerPhotoUrl are nulled. Enable only if you have a legitimate basis under your applicable privacy law.
proxyConfigurationApify ResidentialOptional. The actor uses Chrome TLS impersonation and can route through Apify proxy when needed.

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);

Fast direct mode with a Maps data ID

{
"dataIds": ["0x89c259a9b3117469:0xd134e199a405a163"],
"maxReviews": 100,
"reviewsSort": "newest",
"includePersonalData": false
}

Via the Apify API (Python)

from apify_client import ApifyClient
client = 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 text into an NLP pipeline; rating gives a clean supervised label.
  • Owner-reply auditing — agencies verifying their clients are replying to negatives.
  • AI agent research — chain with khadinakbar/google-maps-leads-scraper to 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 or Place ID resolves to the wrong place, (2) the place has no visible reviews, (3) Google returned no reviews for that sort/filter combination. Re-run with a direct Google Maps place URL or a 0x...:0x... data ID if in doubt.

Can I schedule this? Yes — use Apify Schedules to run daily or weekly and diff the dataset against the previous run.


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.

How it works

The actor resolves each input into a Google Maps internal data ID, then uses browser-free Google review RPC endpoints with Chrome TLS impersonation. Direct place URLs usually use the richer listugcposts path; data IDs, Place IDs, and search-query resolutions can fall back to the BOQ review endpoint when Google does not return the primary review feed. This avoids the brittle headless-browser place panel that Google often strips in cloud environments.