Google Maps Place Detail Scraper
Pricing
from $0.90 / 1,000 place chargeds
Google Maps Place Detail Scraper
Get full place detail — hours, popular times, photos, amenities from Google Maps. Talks directly to Google Maps' internal mobile API, no login needed. Split from the mature, published google-maps-all-in-one-api for a focused, single-purpose workflow.
What does Google Maps Place Detail Scraper do?
Google Maps Place Detail Scraper fetches full place detail — opening hours, popular times, photos, menu items, amenities, description, phone/website — for one or more Google Maps place ids (featureId), pushing one dataset row per place.
It talks directly to the same private gRPC API the official Google Maps Android app uses (mobilemaps-pa-gz.googleapis.com/MobileMapsPlaceService/GetPlace), reverse-engineered and proven working in Google Maps Unofficial API — this is the place-detail slice of that all-in-one Actor, split out as its own focused batch-run Actor (/place/:featureId).
Why use Google Maps Place Detail Scraper?
- Real protobuf/gRPC data, not scraped HTML — decodes the same binary response the Android app renders
- Rich detail — hours by day, live/typical popular-times busyness, photo URLs, menu items, amenities, ordering links, description
- Batch-friendly — pass any number of place ids in one run, get one row per place
- No account, no API key needed — every read works anonymously
- Use cases: local business enrichment, competitor research, hours/menu monitoring, feeding a places database
Input
| Field | Type | Description |
|---|---|---|
places | array | Required, non-empty. Each item: { featureId, name?, placePath? }. |
places[].featureId | string | Required. From a google-maps-search-scraper or google-maps-geocode-scraper result, or a Google Maps URL — URL-decode the colon, e.g. 0x89b7b7bcdecbb1df:0x715969d86d0b76bf. |
places[].name | string | Optional context the real app sends alongside the id. Defaults to empty string. |
places[].placePath | string | Optional context the real app sends alongside the id. Defaults to empty string. |
Example:
{"places": [{ "featureId": "0x89b7b7bcdecbb1df:0x715969d86d0b76bf", "name": "White House" }]}
Output
One dataset row per place:
{"featureId": "0x89b7b7bcdecbb1df:0x715969d86d0b76bf","name": "White House","category": "Historical landmark","fullAddress": "1600 Pennsylvania Ave NW, Washington, DC 20500, United States","hours": { "Monday": "9:00 AM–5:00 PM", "Tuesday": "9:00 AM–5:00 PM" },"popularTimes": { "days": [{ "day": "Mon", "hours": [{ "hour": 9, "busyness": 42 }] }] },"photos": ["https://lh3.googleusercontent.com/..."],"menuItems": [],"amenities": ["Wheelchair accessible entrance"],"phone": "+1 202-456-1111","website": "https://www.whitehouse.gov"}
Full field shape depends on what Google returns for that place — most fields are optional and omitted when not present.
Known limitations
- Hours, amenities, menu, and description are extracted via heuristic byte-scanning of a mixed text/binary response section, not a fully mapped protobuf schema (no official schema exists for this API). Reliable in testing, but a very unusual business listing could occasionally miss a field.
- EV charging station connector/port data and promoted/sponsored pin ads are not exposed — both require session context this Actor's device-only auth doesn't have.
- Search, autocomplete, reviews, directions, and reference-data lookups are separate spin-off Actors — this one is place-detail-only. See google-maps-search-scraper and google-maps-reviews-scraper.
Pricing
Pay per event, via the place event — charged once per place detail pushed to the dataset, starting at $0.0015 (FREE tier). See the Actor's Pricing tab for current rates.