# Place Details > Source: https://scrape.do/documentation/google-scraper-api/maps/place/ Fetch enriched place details from Google Maps as structured JSON The Place endpoint returns enriched details for a single Google Maps place: menu, popular times, user reviews, images, plus code, opening hours, service options, and more. It's designed to follow up a Search call: take a `place_id` or `data_cid` from `local_results[]` and get the full record back. --- ## Endpoint ``` GET https://api.scrape.do/plugin/google/maps/place ``` --- ## Request Parameters ### Required One of `place_id` or `data_cid` must be provided. | Parameter | Type | Description | |-----------|------|-------------| | `token` | string | Your Scrape.do API authentication token | | `place_id` | string | Place ID in `ChIJ...` format. Returned in `local_results[].place_id` from the Search endpoint | | `data_cid` | string | Numeric CID. Returned in `local_results[].data_cid` from the Search endpoint | > [!WARNING] > The Place endpoint **does not** accept `data_id` (the `0xHEX:0xHEX` format). Use `place_id` or `data_cid` instead. The Reviews API takes `data_id` and `place_id`; each endpoint's identifier support differs. ### Localization | Parameter | Type | Default | Description | |-----------|------|---------|-------------| | `hl` | string | `en` | Host language for UI strings and localized fields (hours, reviews, descriptions) | | `gl` | string | `us` | Country perspective | | `google_domain` | string | `google.com` | Google domain to query | --- ## Example Usage ### Step 1: Get an Identifier from Search Call the [Search endpoint](/documentation/google-scraper-api/maps/search) first and pick a result: ```bash curl "https://api.scrape.do/plugin/google/maps/search?q=new+york+pizza&token=YOUR_TOKEN" ``` Extract `place_id` or `data_cid` from any `local_results[]` item. ### Step 2: Fetch Place Details **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/maps/place?token=&place_id=ChIJqU-tg8KHToYRuCE5EsEyHZA' ``` **Python (API mode)** ```python import requests import json token = "" placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA" url = f"https://api.scrape.do/plugin/google/maps/place?token={token}&place_id={placeId}" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA"; const url = `https://api.scrape.do/plugin/google/maps/place?token=${token}&place_id=${placeId}`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* ### Step 3: Receive Structured Details ```json { "search_metadata": { "google_maps_url": "https://www.google.com/maps/place/?cid=6324466594394968992&hl=en&gl=us" }, "search_parameters": { "engine": "google_maps", "type": "place", "data_cid": "6324466594394968992", "google_domain": "google.com", "hl": "en", "gl": "us" }, "place_results": { "title": "New York Pizza Pasta & Subs", "place_id": "ChIJFTdlBPAoTIYRoJO88NsExVc", "data_id": "0x864c28f004653715:0x57c504dbf0bc93a0", "data_cid": "6324466594394968992", "provider_id": "/g/1tfddwc4", "gps_coordinates": { "latitude": 32.9416, "longitude": -96.9862 }, "rating": 4.6, "reviews": 1031, "rating_summary": [ { "stars": 5, "amount": 805 }, { "stars": 4, "amount": 123 }, { "stars": 3, "amount": 50 }, { "stars": 2, "amount": 15 }, { "stars": 1, "amount": 38 } ], "price": "$10–20", "extracted_price": 10, "type": ["Italian restaurant", "Bar", "Pizza delivery", "Pizza restaurant"], "type_ids": ["italian_restaurant", "bar", "pizza_delivery_service", "pizza_restaurant"], "address": "10009 N MacArthur Blvd # 121, Irving, TX 75063", "plus_code": "W2RW+PV Irving, Texas", "phone": "(972) 555-0100", "website": "https://nypizzapasta.com", "description": "Casual New York–style pizza, subs and pasta...", "summary": "Casual pizzeria serving New York–style pies, subs and Italian entrees in a no-frills setting.", "hours": "Open · Closes 10 PM", "open_state": "Open · Closes 10 PM", "service_options": { "dine_in": true, "takeout": true, "delivery": true }, "popular_times": { "monday": [{ "hour": 11, "busyness": 30 }, { "hour": 12, "busyness": 65 }], "tuesday": [{ "hour": 11, "busyness": 28 }, { "hour": 12, "busyness": 60 }] }, "images": [ { "title": "All", "thumbnail": "https://lh5.googleusercontent.com/..." }, { "title": "Food & drink", "thumbnail": "https://lh5.googleusercontent.com/..." } ], "menu": { "link": "https://nypizzapasta.com/menu", "source": "nypizzapasta.com" }, "user_reviews": [ { "summary": "\"Best New York–style pizza outside of NYC.\"", "link": "https://www.google.com/maps/reviews/..." } ], "thumbnail": "https://lh5.googleusercontent.com/..." } } ``` --- ## Response Structure ### Top-Level Fields | Field | Type | Description | |-------|------|-------------| | `search_metadata` | object | Canonical Google Maps URL for the place | | `search_parameters` | object | Echo of request parameters | | `place_results` | object | The enriched place record | ### `place_results` Fields All the fields from a Search result are preserved, plus a number of Place-only enrichments. | Field | Type | Description | |-------|------|-------------| | `title` | string | Place name | | `place_id` | string | Google Place ID (`ChIJ...`) | | `data_id` | string | Internal data ID (`0xHEX:0xHEX`). Useful for the Reviews API | | `data_cid` | string | Numeric CID | | `provider_id` | string | Provider ID | | `gps_coordinates` | object | `{ latitude, longitude }` | | `rating` | float | Average rating (1.0–5.0) | | `reviews` | int | Total review count | | `rating_summary` | array | Per-star breakdown: `[{ stars: 5, amount: 805 }, ...]` | | `price` | string | Price level or range | | `extracted_price` | int/null | First numeric price extracted | | `type` | string[] | All place types (array; the Search endpoint returns a single string in `type`) | | `type_ids` | string[] | All type IDs | | `address` | string | Full address | | `plus_code` | string | Open Location Code (plus code) | | `phone` | string | Phone number | | `website` | string | Website URL | | `description` | string | Short place description | | `summary` | string | Longer editorial summary (when available) | | `hours` | string | Current open/closed status | | `open_state` | string | Same as `hours` | | `operating_hours` | object | Weekly hours keyed by day | | `service_options` | object | Service options (`dine_in`, `takeout`, `delivery`, etc.) | | `popular_times` | object | Per-day busyness by hour: `{ monday: [{ hour, busyness }, ...], ... }` | | `images` | array | Categorized image list: `[{ title, thumbnail }, ...]` | | `menu` | object | `{ link, source }` pointing to the restaurant's menu (when available) | | `user_reviews` | array | Featured snippets with `summary` and `link` | | `extensions` | array | Categorized extension attributes | | `unsupported_extensions` | array | Extensions marked unavailable by Google | | `thumbnail` | string | Primary thumbnail URL | > [!NOTE] > **Schema note:** `type` is a **string** in Search's `local_results[]` but an **array of strings** in `place_results`. Check the array shape before indexing. The same is true for `type_ids`, always an array on both endpoints. --- ## Error Responses | Status | Error | Description | |--------|-------|-------------| | `400` | `token is required` | Missing API token | | `400` | `place_id or data_cid is required` | Neither identifier provided. Also returned when `data_id` is sent (not accepted on this endpoint) | | `500` | `failed to parse place results` | Parser error on the Google response. Retry once before investigating | | `502` | `request failed` | Transient upstream failure. Safe to retry | | `502` | `failed to extract place data URL` | Upstream shell did not contain the expected data URL. Retry | --- ## Full Workflow Example ```bash TOKEN="YOUR_TOKEN" # 1. Search for a place curl -s "https://api.scrape.do/plugin/google/maps/search?q=best+pizza+nyc&token=$TOKEN" \ | jq '.local_results[0] | {title, place_id, data_cid}' # 2. Fetch enriched details for the top result PLACE_ID="ChIJFTdlBPAoTIYRoJO88NsExVc" curl -s "https://api.scrape.do/plugin/google/maps/place?place_id=$PLACE_ID&token=$TOKEN" \ | jq '{title: .place_results.title, summary: .place_results.summary, menu: .place_results.menu, popular_times_monday: .place_results.popular_times.monday}' # 3. Get paginated reviews DATA_ID=$(curl -s "https://api.scrape.do/plugin/google/maps/place?place_id=$PLACE_ID&token=$TOKEN" | jq -r '.place_results.data_id') curl -s "https://api.scrape.do/plugin/google/maps/reviews?data_id=$DATA_ID&token=$TOKEN" \ | jq '{place: .place_info.title, topics: [.topics[].keyword], first_review: .reviews[0].snippet}' ``` ---