Google Maps Place Details Scraper API - By ID, No Login avatar

Google Maps Place Details Scraper API - By ID, No Login

Pricing

from $1.50 / 1,000 place delivereds

Go to Apify Store
Google Maps Place Details Scraper API - By ID, No Login

Google Maps Place Details Scraper API - By ID, No Login

Place details by Place ID, feature id, Maps URL or CID: name, address, phone, website, hours, rating, categories. No search step. No login. Failures free.

Pricing

from $1.50 / 1,000 place delivereds

Rating

0.0

(0)

Developer

Blackcube

Blackcube

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Google Maps Suite  •  3 Actors, one codebase, one record billed once
Google Maps Reviews Scraper API
By Place ID, No Login
Google Maps Place Details Scraper API
➤ You are here
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 each place in full — name, address and components, coordinates, plus code, phone, website, categories, rating, opening hours, description and images. No search step, so places you already have the id for cost the base price with no surcharge.

You pay per place we deliver; failures are free. A place is billed only when it comes back with a name, feature id and address; an id that does not resolve or a place Google blocks costs nothing. No login, no cookies, no proxy to configure.

Quick start

  1. Press Start — the defaults are a working run.
  2. Replace them with your own Place IDs, feature ids, Maps URLs or CIDs.
  3. Take the dataset as JSON, CSV or Excel, or via the API. Every row has a type.

What people use it for

  • CRM and lead enrichment. Feed the Place IDs or Maps URLs you already hold and get back phone, website, category, rating, hours and coordinates.
  • Local SEO and listing audits. Check a portfolio of locations for name, address, category, hours and rating drift.
  • Map and directory products. Resolve a Place ID or a Maps URL to a structured place record at the base price, no search needed.

Input

FieldWhat it does
placeIdsPlace IDs, feature ids, Maps URLs or CIDs, one per line.
fieldscore (the place record) or full (adds the inline reviews Google shows on the page).
retryPartialRe-fetch up to twice for the full variant when Google serves a sparse one (default on).
personalDataOff by default.
language / countryGoogle hl / gl codes (default en / us).
recordsObjects 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.
maxCostUsdOptional hard ceiling; the run stops before the charge that would cross it.

What the rows look like

{
"type": "place",
"placeId": "ChIJHXHcEvGAhYARQPuHNN78s78",
"fid": "0x808580f112dc711d:0xbfb3fcde3487fb40",
"cid": "13813662513369709376",
"name": "Tony's Pizza Napoletana",
"address": "Tony's Pizza Napoletana, 1570 Stockton St, San Francisco, CA 94133",
"city": "San Francisco", "postalCode": "94133", "state": "California", "countryCode": "US",
"lat": 37.8003815, "lng": -122.4090457,
"plusCode": "RH2R+59 North Beach, San Francisco, CA",
"phone": "(415) 835-9888", "phoneUnformatted": "+14158359888",
"website": "http://tonyspizzanapoletana.com/",
"categories": ["Pizza restaurant", "Italian restaurant"],
"rating": 4.5, "reviewsCount": 10645,
"reviewsDistribution": [462, 265, 566, 1658, 7694],
"hours": [{ "day": "Saturday", "ranges": ["12–11 PM"] }, "… 6 more"],
"timezone": "America/Los_Angeles",
"partial": false, "sparseFields": []
}

When Google serves the sparse variant, reviewsCount, reviewsDistribution and full hours ship null with partial: true and sparseFields naming exactly what is missing.

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 forPrice
Each place delivered (name + feature id + address)$1.50 per 1,000 places

The built-in example (3 places) costs $0.0045 — 3 × $1.50/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-place-details-scraper-api.apify.actor/?placeId=ChIJHXHcEvGAhYARQPuHNN78s78&fields=core" -H "Authorization: Bearer $APIFY_TOKEN"

Give the place as placeId, fid, url or id; other parameters: fields (core | full), hl, gl. The reply is JSON with ok and charged; you pay for the place 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.

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-place-details-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-place-details-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-place-details-scraper-api",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}

Your agent then calls vonsensey/google-maps-place-details-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-place-details-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d '{}'

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vonsensey/google-maps-place-details-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-place-details-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-place-details-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 anythingGoogle Maps place details by Place ID: phone, website, hours, 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: true flag 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 records and every extra field rides along as passthrough, 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.