logo

Place Details

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.

ParameterTypeDescription
tokenstringYour Scrape.do API authentication token
place_idstringPlace ID in ChIJ... format. Returned in local_results[].place_id from the Search endpoint
data_cidstringNumeric CID. Returned in local_results[].data_cid from the Search endpoint

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

ParameterTypeDefaultDescription
hlstringenHost language for UI strings and localized fields (hours, reviews, descriptions)
glstringusCountry perspective
google_domainstringgoogle.comGoogle domain to query

Example Usage

Call the Search endpoint first and pick a result:

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 --location --request GET 'https://api.scrape.do/plugin/google/maps/place?token=<SDO-token>&place_id=ChIJqU-tg8KHToYRuCE5EsEyHZA'
import requests
import json

token = "<SDO-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))
const axios = require('axios');

const token = "<SDO-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);
  });
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	token := "<SDO-token>"
	placeId := "ChIJqU-tg8KHToYRuCE5EsEyHZA"

	url := fmt.Sprintf(
		"https://api.scrape.do/plugin/google/maps/place?token=%s&place_id=%s",
		token, placeId,
	)

	resp, err := http.Get(url)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require 'net/http'
require 'json'

token = "<SDO-token>"
placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA"

url = URI("https://api.scrape.do/plugin/google/maps/place?token=#{token}&place_id=#{placeId}")

response = Net::HTTP.get(url)

puts JSON.pretty_generate(JSON.parse(response))
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class GoogleMapsPlace {
    public static void main(String[] args) throws Exception {
        String token = "<SDO-token>";
        String placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA";

        String url = String.format(
            "https://api.scrape.do/plugin/google/maps/place?token=%s&place_id=%s",
            token, placeId
        );

        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestMethod("GET");

        BufferedReader reader = new BufferedReader(
            new InputStreamReader(conn.getInputStream())
        );
        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        System.out.println(response.toString());
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string token = "<SDO-token>";
        string placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA";

        string url = $"https://api.scrape.do/plugin/google/maps/place?token={token}&place_id={placeId}";

        using HttpClient client = new HttpClient();
        string response = await client.GetStringAsync(url);

        Console.WriteLine(response);
    }
}
<?php
$token = "<SDO-token>";
$placeId = "ChIJqU-tg8KHToYRuCE5EsEyHZA";

$url = "https://api.scrape.do/plugin/google/maps/place?token={$token}&place_id={$placeId}";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
?>

Step 3: Receive Structured Details

{
  "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

FieldTypeDescription
search_metadataobjectCanonical Google Maps URL for the place
search_parametersobjectEcho of request parameters
place_resultsobjectThe enriched place record

place_results Fields

All the fields from a Search result are preserved, plus a number of Place-only enrichments.

FieldTypeDescription
titlestringPlace name
place_idstringGoogle Place ID (ChIJ...)
data_idstringInternal data ID (0xHEX:0xHEX). Useful for the Reviews API
data_cidstringNumeric CID
provider_idstringProvider ID
gps_coordinatesobject{ latitude, longitude }
ratingfloatAverage rating (1.0–5.0)
reviewsintTotal review count
rating_summaryarrayPer-star breakdown: [{ stars: 5, amount: 805 }, ...]
pricestringPrice level or range
extracted_priceint/nullFirst numeric price extracted
typestring[]All place types (array; the Search endpoint returns a single string in type)
type_idsstring[]All type IDs
addressstringFull address
plus_codestringOpen Location Code (plus code)
phonestringPhone number
websitestringWebsite URL
descriptionstringShort place description
summarystringLonger editorial summary (when available)
hoursstringCurrent open/closed status
open_statestringSame as hours
operating_hoursobjectWeekly hours keyed by day
service_optionsobjectService options (dine_in, takeout, delivery, etc.)
popular_timesobjectPer-day busyness by hour: { monday: [{ hour, busyness }, ...], ... }
imagesarrayCategorized image list: [{ title, thumbnail }, ...]
menuobject{ link, source } pointing to the restaurant's menu (when available)
user_reviewsarrayFeatured snippets with summary and link
extensionsarrayCategorized extension attributes
unsupported_extensionsarrayExtensions marked unavailable by Google
thumbnailstringPrimary thumbnail URL

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

StatusErrorDescription
400token is requiredMissing API token
400place_id or data_cid is requiredNeither identifier provided. Also returned when data_id is sent (not accepted on this endpoint)
500failed to parse place resultsParser error on the Google response. Retry once before investigating
502request failedTransient upstream failure. Safe to retry
502failed to extract place data URLUpstream shell did not contain the expected data URL. Retry

Full Workflow Example

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}'

On this page