# Google Maps Business Search & Place Details (`prodigious_penthouse/google-maps-place-details`) Actor

Search Google Maps by keyword and location or enrich place links. Export names, addresses, phones, websites, categories and coordinates.

- **URL**: https://apify.com/prodigious_penthouse/google-maps-place-details.md
- **Developed by:** [havord L](https://apify.com/prodigious_penthouse) (community)
- **Categories:** Lead generation
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 36.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 business records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Maps Business Search & Place Details

Find local businesses and turn public Google Maps place details into a list you can use for research or prospecting.

**Input:** Search keywords and an optional location, individual Google Maps place links, or both.\
**Output:** Business names, addresses, phone numbers, websites, ratings, categories and coordinates, when available. Export your results as JSON or CSV.

**Apify Free plan:** Up to 10 unique places per run. Paid Apify plans can set a higher limit, up to 5,000; actual search results may be fewer. Event charges and platform usage still apply as shown on the Pricing tab.

<img src="https://api.apify.com/v2/key-value-stores/bqaD39Y7i8QmMm0bd/records/google-maps-hero.png" alt="Illustration of local businesses on a map becoming an organized results table" width="360" />

### See it in action

The screenshots below are from an actual cloud test on October 30, 2026. The input included the search **coffee shops** in **San Francisco, CA**, plus two direct links to the same London landmark. The run saved four unique places: three coffee shops and one landmark.

**1. Enter your search.** Add a keyword and location in the input form. Individual place links are optional.

[![Actual test input showing coffee shops and San Francisco in the Actor form](https://api.apify.com/v2/key-value-stores/bqaD39Y7i8QmMm0bd/records/store-input.jpg)](https://api.apify.com/v2/key-value-stores/bqaD39Y7i8QmMm0bd/records/store-input.jpg)

**2. Explore your results.** The screenshot shows three of the four saved records, including the direct-link landmark and two coffee shops.

[![Actual test output table with business names, addresses, phones, websites, ratings and missing values](https://api.apify.com/v2/key-value-stores/bqaD39Y7i8QmMm0bd/records/store-output.jpg)](https://api.apify.com/v2/key-value-stores/bqaD39Y7i8QmMm0bd/records/store-output.jpg)

Select either screenshot to open it at full size.

In this test, one displayed business had no phone number and all review counts were missing. Missing fields appear as `null`; coverage varies by place and by Google's response.

### What data can you collect?

| Business detail | Output field |
| --- | --- |
| 🏪 Business or place name | `name` |
| 📍 Address | `address` |
| ☎️ Phone number | `phone` |
| 🌐 Website | `website` |
| ⭐ Rating and review count | `rating`, `reviewCount` |
| 🏷️ Business categories | `category`, `categories` |
| 🗺️ Coordinates and Plus Code | `latitude`, `longitude`, `plusCode` |
| 🕒 Current opening status | `currentHours` |
| 🔗 Place identifiers and link | `googlePlaceId`, `featureId`, `placeId`, `mapsUrl` |
| 📋 Collection details | `limitedView`, `scrapedAt` |

Saved records contain a name, but other fields depend on availability. Unavailable values are `null` in JSON and blank in CSV. Review counts may be missing; current opening status is not a full weekly schedule. `limitedView` flags a restricted page when detected.

### Get started

1. Enter a search keyword such as `coffee shops` and a location such as `San Francisco, CA`.
2. Set the maximum number of places to export.
3. Press **Start** and open **Output** after the run.
4. Review the collection summary, then download the dataset or the JSON/CSV output.

#### Example: Find coffee shops in San Francisco

Enter `coffee shops` as the keyword and `San Francisco, CA` as the location. Set a small result limit for your first run to check coverage and cost.

```json
{
  "searchQueries": ["coffee shops"],
  "location": "San Francisco, CA",
  "maxPlaces": 10,
  "maxSearchResultsPerQuery": 10
}
```

#### Example: Organize a list of place links

If you already have individual Google Maps place links, paste them into **Google Maps place links**. Leave the search fields empty, or combine links and keyword searches in one run. Repeated place IDs are exported once.

### Frequently asked questions

#### Why are some phone numbers or review counts missing?

Google may not display a field for a place, or may show a limited view. This Actor records what it can access and leaves unavailable values empty instead of guessing. A run may succeed even when some fields are missing.

#### Can I fill missing review counts?

Enable **Optional: enrich review counts** to call Compass Google Maps Scraper in your own Apify account. This is off by default and costs extra, separately from this Actor's business-record charge and platform usage. At the provider's Free-plan rates, direct-place lookups cost approximately $6 per 1,000 places plus a small start charge; provider rates depend on your plan and can change. Check [provider pricing](https://apify.com/compass/crawler-google-places/pricing) before running.

Set both **Review lookup limit** and **Provider budget (USD)**. The latter applies to the one provider run, not to the total cost of this Actor. The first group of unique places is held until the lookup finishes; any later places are exported normally without enrichment. A failed or partial provider run may still charge you. Review counts are matched by place identifiers, may remain empty, and do not include review text. Check the run summary for lookup status and the provider run ID.

#### Does this collect email addresses?

No. This Actor does not visit business websites to extract email addresses and does not collect review text.

#### How much does it cost?

The current event price is **$1.50 per 1,000 business records** saved to the default dataset. Apify platform usage is charged separately. Failed or duplicate inputs do not produce a billable dataset record. See the **Pricing** tab for the current rate, and use Apify's maximum cost setting to limit event charges.

#### How many places can I export on the Apify Free plan?

Up to 10 unique places per run across searches and place links. If you request more, the Actor applies the 10-place limit, logs a warning and reports it in the collection summary. Paid Apify plans can set the overall limit up to 5,000; Google may return fewer. This is a per-run limit, not a monthly quota, and it does not waive event charges or platform usage.

#### Can I get 5,000 places from one search?

The Actor accepts up to **5,000 individual place links** and lets you set the overall export limit up to **5,000 places**. Each keyword search can consider up to **1,000 results**, but Google may return fewer or stop loading results. These settings do not guarantee the number of results or exhaustive coverage of an area.

#### What happens if some places fail or the search is incomplete?

Temporary timeouts and network errors are retried up to the configured limit; verification blocks are reported. Check **Collection summary and failures** for each search's status, found count and stop reason, plus per-place errors. A successful run can contain partial results. Location is a search hint, not a strict geographic boundary.

This independent tool reads public pages without signing in and is not affiliated with Google.

# Actor input Schema

## `searchQueries` (type: `array`):

Enter up to 10 searches, such as coffee shops or dentists. Use this or provide place links below.

## `location` (type: `string`):

Location added to each keyword, for example San Francisco, CA. Google may return nearby results.

## `startUrls` (type: `array`):

Optional individual place links, up to 5,000. Search result links and remote URL-list files are unsupported.

## `maxPlaces` (type: `integer`):

Maximum unique business records across all links and searches. Apify Free-plan accounts can export at most 10 per run; paid plans can set up to 5,000. Google can return fewer results.

## `maxSearchResultsPerQuery` (type: `integer`):

Limit search result links considered for each keyword. Google may restrict or truncate the list.

## `includeReviewCounts` (type: `boolean`):

Off by default. When enabled, this Actor calls Compass Google Maps Scraper in your Apify account to fill missing review counts. The provider charges separately in addition to this Actor and platform usage. At Free-plan rates, direct-place lookups cost about $6 per 1,000 places plus a small start event; prices vary by plan. Counts are not guaranteed. The provider has a separate maximum cost, set below; this Actor's run limit does not cap the provider run.

## `reviewLookupLimit` (type: `integer`):

Only the first N unique saved places are considered for this optional lookup; places with an existing count are skipped. The first group is held until the provider finishes. Later places are exported without this enrichment.

## `reviewBudgetUsd` (type: `number`):

Maximum charge for the single external provider run, separate from this Actor's cost limit. Minimum $0.50. Provider charges can occur even if results are incomplete, the parent run fails, or no counts are returned. Platform usage for this Actor remains separate.

## `placeTimeoutSecs` (type: `integer`):

Maximum time allowed to load each place before it is reported as failed.

## `maxRetries` (type: `integer`):

Retry temporary timeouts and server/network errors. Verification blocks are reported without retries.

## Actor input object example

```json
{
  "maxPlaces": 1000,
  "maxSearchResultsPerQuery": 100,
  "includeReviewCounts": false,
  "reviewLookupLimit": 25,
  "reviewBudgetUsd": 0.5,
  "placeTimeoutSecs": 90,
  "maxRetries": 1
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `json` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("prodigious_penthouse/google-maps-place-details").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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call prodigious_penthouse/google-maps-place-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,prodigious_penthouse/google-maps-place-details"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OJWOg52OIedB24M4e/builds/U6o9TLMLgHw2W2k5T/openapi.json
