Google Maps Reviews Scraper API - By Place ID, No Login
Pricing
from $0.30 / 1,000 review delivereds
Google Maps Reviews Scraper API - By Place ID, No Login
Every Google Maps review by Place ID, feature id, Maps URL or CID: stars, date, text, owner reply, photos. Newest or since last run. No login. Failures free.
Pricing
from $0.30 / 1,000 review delivereds
Rating
0.0
(0)
Developer
Blackcube
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
14 hours ago
Last modified
Categories
Share
| Google Maps Suite • 3 Actors, one codebase, one record billed once | ||
| Google Maps Reviews Scraper API ➤ You are here | Google Maps Place Details Scraper API By ID, No Login | Google Maps Reviews Monitor Scraper API No Login |
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Business Reviews Suite · Google Trends Suite · Amazon Product Data Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · X / Twitter
Paste Google Maps Place IDs, feature ids, Maps URLs or CIDs and get every review of each place as its own row — stars, the exact posted date, the full text and any translation, review photos, the owner's reply, and the review context (dine-in, meal, price band). Sort newest, since a date, or only what is new since your last run.
You pay per review we deliver; failures are free. An id that does not resolve, a place Google blocks, and a review your filters remove all cost nothing. No login, no cookies, no proxy to configure.
Quick start
- Press Start — the defaults are a working run.
- Replace them with your own Place IDs, feature ids, Maps URLs or CIDs.
- Take the dataset as JSON, CSV or Excel, or via the API. Every row has a
type.
What people use it for
- Reputation and CX analytics. Every review of your locations or a competitor's, one row each, with stars, exact date, text and the owner's reply — straight into a warehouse or an LLM.
- Review monitoring pipelines. Turn on since last run and a scheduled run returns only the reviews posted since yesterday, billed only for those.
- Star and topic breakdowns. Filter to 1–2 star reviews, or text-only reviews, to find what a place is criticised for.
Input
| Field | What it does |
|---|---|
placeIds | Place IDs, feature ids, Maps URLs or CIDs, one per line. |
sort | newest, relevant, highest or lowest. |
maxReviewsPerPlace | Stop after this many reviews per place (default 100). With sinceLastRun this is the most NEW reviews a run delivers per place; a busier place skips the excess, so raise it for busy places. |
since / sinceLastRun | Only reviews since a date, or only those new since your last run. Newest sort only: with another sort the run delivers nothing and says so in a free invalid row, rather than billing the unfiltered set. |
minStars / maxStars / textOnly | Filter by rating or drop star-only reviews. Filtered reviews are free. |
personalData | Off by default; when off the reviewer name, URL and photo are dropped. |
language / country | Google hl / gl codes (default en / us). |
records | Objects from n8n, Make or a CSV; the id is read from a place/placeId/fid/cid/url field and every other field rides along as passthrough. Send a CID as a string: a 19–20 digit JSON number is already rounded to a different place and is refused as a free invalid row. |
maxCostUsd | Optional hard ceiling; the run stops before the charge that would cross it. |
What the rows look like
{"type": "review","placeId": "ChIJHXHcEvGAhYARQPuHNN78s78","fid": "0x808580f112dc711d:0xbfb3fcde3487fb40","reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2tacU1XZHpZbmR6WW5OUE5tWXdVSFJ3ZUZCZmRIYxAB","stars": 4,"publishedAtDate": "2026-09-10T16:30:29.993Z","publishedAt": "2 days ago","text": "🍕 12 different pizza varieties! The menu briefly explains how each is made.<br>🍷decent wine selection<br>🪑 Lots of seating<br>✅ Make sure to check in as soon as you arrive, even if you are on wait-list!","reviewContext": { "Order type": "Dine in", "Meal type": "Dinner", "Price per person": "$20–30", "Food": "5", "Service": "4", "Atmosphere": "4", "Wait time": "30-60 min" },"reviewImageUrls": ["https://lh3.googleusercontent.com/grass-cs/…=k-no"],"ownerReplyText": "Thank you for the rave review, Joe Bar! :)","ownerReplyRelative": "a day ago","reviewer": null}
Reviewer name, profile URL and photo are dropped unless you turn Include reviewer personal data on. That switch governs the reviewer block only: a name the owner quotes inside their own reply (as above) is the business's published text and stays.
Every row has a type. The free coverage row says what was asked for and what arrived; the free summary row reports what the run spent.
What it costs
| You pay for | Price |
|---|---|
| Each review delivered | $0.30 per 1,000 reviews |
The built-in example (one place, 100 reviews) costs $0.0300 — 100 × $0.30/1,000. There is no start fee — every delivered record bills, and failures are free. Free, always: an id that does not resolve, a place Google will not serve, a filtered-out review, a duplicate, the coverage row and the run summary.
Set Maximum cost (USD) to stop any run before it crosses a number you choose; the free summary row reports what it actually spent.
Call it as a live endpoint (Standby)
The Actor also answers plain HTTP GETs from a warm run, so a lookup costs no container start:
$curl "https://vonsensey--google-maps-reviews-scraper-api.apify.actor/?placeId=ChIJHXHcEvGAhYARQPuHNN78s78&sort=newest&max=50" -H "Authorization: Bearer $APIFY_TOKEN"
Give the place as placeId, fid, url or id; other parameters: sort (newest | relevant | highest | lowest), max (1–200, default 100), since (ISO date, newest only), hl, gl. The reply is JSON with ok and charged; you pay for each review returned, and an id that does not resolve is ok: false and free. Personal data is always off on this endpoint.
Limits, stated plainly
We return what Google Maps' public pages carry and say plainly what they do not: photo galleries beyond the first few (~4) images, popular times, questions & answers, menus, order-online links, "people also search", owner updates, and any emails, phone lists or social profiles. Those need endpoints Google does not serve without a session, or a website crawl — not this Actor.
reviewsCount and the rating breakdown are best-effort: Google serves them on roughly 55–90% of lookups and null the rest, marked with partial: true. The exact total review count is not always present.
sort: relevant returns Google's curated order and may not reach every review; use newest to page the full set.
Unofficial — not affiliated with, endorsed by, or sponsored by Google. "Google Maps" is a trademark of Google LLC.
Use it from n8n, MCP, the API or a schedule
Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/google-maps-reviews-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.
n8n
Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/google-maps-reviews-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.
MCP (Claude, Cursor, VS Code, any MCP client)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vonsensey/google-maps-reviews-scraper-api","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Your agent then calls vonsensey/google-maps-reviews-scraper-api as a tool with the same input the form takes and reads the dataset back.
REST API (one call, rows in the response)
curl -X POST "https://api.apify.com/v2/acts/vonsensey~google-maps-reviews-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d '{}'
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vonsensey/google-maps-reviews-scraper-api").call(run_input={})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vonsensey/google-maps-reviews-scraper-api').call({});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Make, Zapier, LangChain, CrewAI
The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/google-maps-reviews-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.
Run it without configuring anything — Newest 100 reviews of a Google Maps place by Place ID, a ready-made example you can start as-is or copy.
Use cases
- Reputation and CX analytics. Every review of your locations or a competitor's, one row each, with stars, the exact posted date, the full text, review photos and the owner's reply — straight into a warehouse or an LLM.
- Review monitoring pipelines. Put your places on a schedule and receive only the reviews posted since the last run, billed only for those; the monitor adds a row the day a rating, phone, website or hours changes.
- CRM and lead enrichment. Feed the Place IDs or Maps URLs you already hold and get back phone, website, category, rating, hours and coordinates at the base price — no search step, no per-id surcharge.
- Local SEO and listing audits. Check a portfolio of locations for name, address, category, hours and rating drift, with an honest
partial: trueflag when Google serves the sparse variant of a place. - Star and topic breakdowns. Filter to 1–2 star or text-only reviews to find what a place is criticised for; a review your filter removes is free.
- Pipelines from n8n, Make or a CSV. Send
recordsand every extra field rides along aspassthrough, or call the reviews and place-details listings as a warm HTTP endpoint (Standby) that answers from a 128 MB container.
Run it on a schedule
A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per record delivered, and a scheduled run that finds nothing new bills nothing on the reviews scraper with since last run on, one $0.001 check per place on the monitor (a quiet re-run over 2 places is $0.002, measured), and a normal lookup per place on place details, which has no change-only mode.
FAQ
Do I need a Google API key, a login or a proxy?
No. Every listing reads the pages Google Maps shows to anyone without an account, from Apify's own exit — no API key, no login, no cookies, nothing to configure and nothing to buy on top. One exception, stated plainly: if Google blocks a review page, that one page is retried once through Apify residential proxy on your account (about $0.0004 of proxy transfer per retried page at list price; measured 0 blocks in 57 of 57 requests from that exit). Place lookups are never proxied, and a plan without residential proxy simply skips the retry — the place comes back as a free unavailable row.
Where do I find a Place ID?
In the Google Places API, in most CRM and map exports, or by pasting the place URL from the Google Maps address bar — every listing also takes a feature id (0x…:0x…), a full Google Maps place URL or a CID, and all four resolve to the same place. Share links (maps.app.goo.gl) are not followed; paste the full URL instead.
Can I get all reviews of a place?
Yes. Reviews are paged to exhaustion, one row each, up to the per-place limit you set — measured on a place claiming 10,645 reviews, which came back as 10,649 distinct rows. sort: relevant returns Google's own curated order and can stop short of the full set; use newest for completeness.
What do I pay for a run that finds nothing?
On the reviews scraper with Only reviews new since the last run on: nothing — no new reviews, no charge. On the monitor: one place check ($1.00 per 1,000) per place per run, and a place whose rating, phone, website, review count and hours have not moved comes back as a free unchanged row, so a quiet morning over 2 places bills $0.002 (measured on two consecutive runs). The place-details scraper has no change-only mode: every place it delivers is billed on every run. An id that does not resolve is always free, on every listing.
Does it work outside the US?
Yes — any place on Google Maps, anywhere. language and country set Google's hl / gl codes (default en / us), so review text, translations and the place record come back in the language and region you choose.
Is this an official Google product?
No. Unofficial — not affiliated with, endorsed by, or sponsored by Google; "Google Maps" is a trademark of Google LLC. It reads only public pages that Google's robots.txt allows, never signs in, and reviewer names, profile URLs and photos are dropped unless you switch Include reviewer personal data on.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.