# Google Maps Place Details & Identity Resolver (`scrapecraft/google-maps-place-details-identity-resolver`) Actor

A high-precision data engine to resolve, normalize, and extract complete Google Maps place profiles. Match and enrich business data using URLs, Place IDs, CIDs, or search queries with absolute accuracy.

- **URL**: https://apify.com/scrapecraft/google-maps-place-details-identity-resolver.md
- **Developed by:** [ScrapeCraft](https://apify.com/scrapecraft) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 88.9% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.03 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🗺️ Precise Google Maps Profile Extractor

This tool lets you target and extract complete business profiles from Google Maps with 100% accuracy using URLs, CIDs, Place IDs, or business names. 

Instead of guessing or getting stuck with Google's strict search limits, it maps your inputs directly to the exact business profile. It is built specifically for data teams, directories, and platforms that need clean, structured location data—without the extra cost or weight of unrelated email and contact crawlers.

---

### ✅ What You Get

| Data | Details |
|------|---------|
| 📛 Name & Category | Business name, primary and full category list |
| 📞 Contact | Phone number (formatted + raw), website URL |
| 📍 Address | Full address + parsed street, city, state, ZIP, country |
| ⭐ Ratings | Average score, total reviews, star-by-star breakdown |
| 🕐 Hours | Opening hours for each day |
| 📸 Photos | Image URLs (optional — enable `includeImages`; omit `maxImages` for all, or set a cap) |
| 🌐 Web Results | Related web links from the Maps panel (with `includeImages`) |
| ℹ️ About | Description and attribute sections when available (API or `includeImages`) |
| 🔑 IDs | CID, Feature ID, Place ID, Knowledge Graph ID |

> **Note:** Individual review text is **not** collected — only the star distribution summary.

---

### 🚀 Quick Start

You need **at least one** of these to run the actor:

- A Google Maps URL
- A business name (search query)
- A Google Maps CID
- A Google Place ID

---

### ⚙️ Input Options

#### 🔍 Option 1 — Search by Business Name *(most common)*

```json
{
  "strategy": "search",
  "searchQuery": "Blue Bottle Coffee San Francisco",
  "website": "https://bluebottlecoffee.com/",
  "language": "en"
}
````

> 💡 **Tip:** Always add `website` when searching by name — it helps match the correct listing.

***

#### 🔗 Option 2 — Google Maps URL

Paste the URL directly from your browser:

```json
{
  "strategy": "url",
  "url": "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
}
```

***

#### 🆔 Option 3 — CID or Place ID

```json
{
  "strategy": "cid",
  "cid": "15430805186958748717"
}
```

```json
{
  "strategy": "placeId",
  "placeId": "ChIJZQi5xUUPyokRKnfZHK7gBnc"
}
```

### Output

The actor writes one object to the default dataset. Some fields can be `null` or empty arrays if Google Maps does not expose the data.

#### Input fields

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `strategy` | string | `auto` | How to find the place: `auto`, `url`, `cid`, `placeId`, or `search` |
| `url` | string | — | Google Maps place URL |
| `cid` | string | — | Google Maps CID |
| `placeId` | string | — | Google Place ID |
| `searchQuery` | string | — | Business name to search |
| `website` | string | — | Company website — helps verify the right result when searching |
| `language` | string | `en` | Maps UI language (e.g. `en`, `es`, `fr`, `de`) |
| `blockAssets` | boolean | `true` | Block images/fonts during scrape to save bandwidth |
| `includeImages` | boolean | `false` | When `true`, collects photos, web results, and About from the Maps UI (slower). When `false`, details come from the preview API with DOM fallback only if needed |
| `maxImages` | integer | — | Optional cap when `includeImages` is `true`; omit to collect all photos found |
| `proxyConfig` | object | Residential | Apify proxy config — residential proxies recommended |

***

### 📦 Output Example

```json
{
  "title": "Blue Bottle Coffee",
  "categoryName": "Coffee shop",
  "phone": "+1 510-653-3394",
  "website": "https://bluebottlecoffee.com/",
  "address": "300 Webster St, Oakland, CA 94607, United States",
  "city": "Oakland",
  "state": "California",
  "countryCode": "United States",
  "totalScore": 4.5,
  "reviewsCount": 812,
  "reviewsDistribution": {
    "oneStar": 20,
    "twoStar": 15,
    "threeStar": 60,
    "fourStar": 180,
    "fiveStar": 537
  },
  "openingHours": [
    { "day": "Monday", "hours": "8 AM–6 PM" }
  ],
  "location": { "lat": 37.8044, "lng": -122.2712 },
  "imageUrl": "https://lh5.googleusercontent.com/...",
  "permanentlyClosed": false,
  "scrapedAt": "2026-05-25T08:40:00.000Z"
}
```

One object per run is saved to the **Apify dataset**.

***

### ❓ FAQ

**Why is some data missing or null?**
Google Maps doesn't always show every field. Fields the actor can't find are returned as `null` or empty arrays.

**Should I include `website` with my search query?**
Yes — it greatly improves accuracy by confirming the right business was found.

**What does `includeImages` do?**
When `false` (default), the actor skips the slow Photos/About DOM pass. Contact, ratings, address, and hours still come from the Maps preview API. Set `includeImages` to `true` when you need photo URLs, extra web results, or About details from the live page.

**What proxy should I use?**
Residential proxies (the default) are recommended for reliable results on Apify Cloud.

**My run failed with a Chrome error. What do I do?**
Set the environment variable `DEBUG_BROWSER=1` and re-run to see detailed browser logs.

***

# Actor input Schema

## `strategy` (type: `string`):

Controls how the actor resolves the target company. Auto uses this priority: URL, CID, Place ID, then search query.

## `url` (type: `string`):

Full URL of the Google Maps place. Optional if searchQuery, placeId, or cid is provided.

## `placeId` (type: `string`):

Unique Google Place ID of the establishment. Navigates directly and avoids any text-search ambiguity.

## `cid` (type: `string`):

Google Maps Customer ID (CID). Navigates directly to the place without search. Accepts a decimal CID string, a maps URL with ?cid= or ludocid=, cid:12345 / ludocid=12345 text, or a place URL containing a hex CID pair (0x...:0x...). Keep large CIDs as strings — do not convert to JSON numbers.

## `searchQuery` (type: `string`):

Company name to search for on Google Maps. Used if URL is not provided.

## `website` (type: `string`):

The company's website to match against the search results to guarantee accuracy.

## `proxyConfig` (type: `object`):

Proxy settings. Residential proxies are strongly recommended for cloud runs.

## `blockAssets` (type: `boolean`):

Block image/font/media requests to speed up scraping and reduce bandwidth.

## `includeImages` (type: `boolean`):

When enabled, collects photo URLs plus web results and About from the Maps UI (slower). When disabled, those fields come from the preview API only and image fields are empty.

## `maxImages` (type: `integer`):

When includeImages is true: leave empty to collect all photos found in the gallery; set a positive number to keep only that many URLs.

## `language` (type: `string`):

Language code for the Google Maps interface (e.g. 'en', 'es', 'fr', 'de'). Defaults to English ('en').

## Actor input object example

```json
{
  "strategy": "auto",
  "url": "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z",
  "placeId": "ChIJZQi5xUUPyokRKnfZHK7gBnc",
  "cid": "15430805186958748717",
  "searchQuery": "Eiffel Tower",
  "website": "starbucks.com",
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "blockAssets": true,
  "includeImages": false,
  "language": "es"
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset items. Each run produces one company/place contact record.

## `metadata` (type: `string`):

Run metadata containing the resolved place output, source URL, and scrape timestamp.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "Shopify NY"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapecraft/google-maps-place-details-identity-resolver").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQuery": "Shopify NY" }

# Run the Actor and wait for it to finish
run = client.actor("scrapecraft/google-maps-place-details-identity-resolver").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "Shopify NY"
}' |
apify call scrapecraft/google-maps-place-details-identity-resolver --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapecraft/google-maps-place-details-identity-resolver",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Place Details & Identity Resolver",
        "description": "A high-precision data engine to resolve, normalize, and extract complete Google Maps place profiles. Match and enrich business data using URLs, Place IDs, CIDs, or search queries with absolute accuracy.",
        "version": "0.0",
        "x-build-id": "rkKHfDdyNdewCDduw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapecraft~google-maps-place-details-identity-resolver/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapecraft-google-maps-place-details-identity-resolver",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapecraft~google-maps-place-details-identity-resolver/runs": {
            "post": {
                "operationId": "runs-sync-scrapecraft-google-maps-place-details-identity-resolver",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapecraft~google-maps-place-details-identity-resolver/run-sync": {
            "post": {
                "operationId": "run-sync-scrapecraft-google-maps-place-details-identity-resolver",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "strategy": {
                        "title": "Resolution Strategy",
                        "enum": [
                            "auto",
                            "url",
                            "cid",
                            "placeId",
                            "search"
                        ],
                        "type": "string",
                        "description": "Controls how the actor resolves the target company. Auto uses this priority: URL, CID, Place ID, then search query.",
                        "default": "auto"
                    },
                    "url": {
                        "title": "Google Maps Place URL",
                        "pattern": "https?://.*google\\.com/maps/.*",
                        "type": "string",
                        "description": "Full URL of the Google Maps place. Optional if searchQuery, placeId, or cid is provided."
                    },
                    "placeId": {
                        "title": "Google Place ID (Optional)",
                        "type": "string",
                        "description": "Unique Google Place ID of the establishment. Navigates directly and avoids any text-search ambiguity."
                    },
                    "cid": {
                        "title": "Google Maps CID (Optional)",
                        "type": "string",
                        "description": "Google Maps Customer ID (CID). Navigates directly to the place without search. Accepts a decimal CID string, a maps URL with ?cid= or ludocid=, cid:12345 / ludocid=12345 text, or a place URL containing a hex CID pair (0x...:0x...). Keep large CIDs as strings — do not convert to JSON numbers."
                    },
                    "searchQuery": {
                        "title": "Search Query (Company Name)",
                        "type": "string",
                        "description": "Company name to search for on Google Maps. Used if URL is not provided."
                    },
                    "website": {
                        "title": "Company Website (Optional)",
                        "type": "string",
                        "description": "The company's website to match against the search results to guarantee accuracy."
                    },
                    "proxyConfig": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are strongly recommended for cloud runs.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "blockAssets": {
                        "title": "Block Images / Fonts",
                        "type": "boolean",
                        "description": "Block image/font/media requests to speed up scraping and reduce bandwidth.",
                        "default": true
                    },
                    "includeImages": {
                        "title": "Include place photos",
                        "type": "boolean",
                        "description": "When enabled, collects photo URLs plus web results and About from the Maps UI (slower). When disabled, those fields come from the preview API only and image fields are empty.",
                        "default": false
                    },
                    "maxImages": {
                        "title": "Max photos (optional)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "When includeImages is true: leave empty to collect all photos found in the gallery; set a positive number to keep only that many URLs."
                    },
                    "language": {
                        "title": "Language (Optional)",
                        "type": "string",
                        "description": "Language code for the Google Maps interface (e.g. 'en', 'es', 'fr', 'de'). Defaults to English ('en').",
                        "default": "en"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
