# Google Maps Review Summary Scraper (`rainminer/google-maps-review-summary-scraper`) Actor

Fetch AI-powered Google Maps review summaries for restaurants, hotels, shops, and points of interest. Returns summary text and links to place reviews—ideal for location intelligence, travel apps, hospitality research, and competitive analysis pipelines.

- **URL**: https://apify.com/rainminer/google-maps-review-summary-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** AI, Automation, Lead generation
- **Stats:** 4 total users, 1 monthly users, 94.4% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 place summaries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

The **Google Maps Review Summary Generator** is an Apify Actor that returns **AI-powered review summaries** for places on Google Maps. Google synthesizes what visitors write into concise paragraphs—covering food, atmosphere, service, location, and more—so you can surface high-level place insights without reading hundreds of individual reviews.

Each result includes the summary text and a link to the place's reviews on Google Maps.

---

### Key Features

- **AI review summaries**: Short, sentiment-aware overviews synthesized from visitor reviews.
- **Two ways to run**: Look up specific places, or discover places with a keyword search.
- **Review links included**: Each row includes a URL to the place's reviews on Google Maps.
- **Batch processing**: Many places or searches in one run.
- **Structured dataset**: One row per place, ready for spreadsheets, databases, or pipelines.

---

### Why Use Google Maps Review Summaries?

Review summaries help users and teams understand what visitors consistently say about a place:

- **Travel and hospitality apps** showing quick place insights before booking.
- **Location intelligence** enriching point-of-interest data with reputation themes.
- **Market research** comparing how guests describe competitors in a category or area.
- **Sales and partnerships** qualifying venues by reputation at scale.

> Review summaries are not available for every place or in every language and region.

---

### Who Is It For?

- **Developers** building location-aware products.
- **Data teams** enriching place datasets with review insights.
- **Travel, real estate, and retail analysts** monitoring reputation themes.
- **Product managers** prototyping location features without manual review reading.

---

### Input Schema

```json
{
  "places": ["ChIJD2l2k7ZL0YkRC80d-3MV1lM"],
  "searchQueries": ["coffee shop in Seattle"],
  "maxItems": 5
}
````

**Provide at least one place or search query.**

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `places` | Array of strings | — | Google Place IDs (`ChIJ…`) or Google Maps place URLs |
| `searchQueries` | Array of strings | — | Keyword searches, e.g. `"pizza in Brooklyn"` |
| `maxItems` | Integer | `5` | Max places per search query (up to **20**; not used for direct place lookups) |

***

### Output Schema

Each dataset item is one place with its review summary when available:

```json
{
  "placeId": "ChIJD2l2k7ZL0YkRC80d-3MV1lM",
  "displayName": "Dumpling House",
  "source": "placeDetails",
  "sourceLabel": "ChIJD2l2k7ZL0YkRC80d-3MV1lM",
  "reviewSummaryText": "People say this restaurant serves delicious dumplings, noodles, and pork belly buns...",
  "reviewSummaryLanguageCode": "en-US",
  "reviewsUri": "https://www.google.com/maps/place/...",
  "flagContentUri": "https://www.google.com/local/review/rap/report?...",
  "hasReviewSummary": true,
  "scrapedAt": "2026-06-01T12:00:00.000Z"
}
```

| Field | Description |
| --- | --- |
| `placeId` | Google Place ID |
| `displayName` | Place name |
| `source` | `placeDetails` or `textSearch` |
| `sourceLabel` | The Place ID, URL, or search query for this row |
| `reviewSummaryText` | AI-generated summary, or empty if none is available |
| `reviewSummaryLanguageCode` | Language of the summary |
| `reviewsUri` | Link to the place's reviews on Google Maps |
| `flagContentUri` | Link to report inappropriate summary content |
| `hasReviewSummary` | Whether a summary was returned |
| `scrapedAt` | When this row was created (ISO 8601) |

#### Displaying summaries

When you show summaries to end users, follow [Google's policies for AI-powered summaries](https://developers.google.com/maps/documentation/places/web-service/policies#ai-powered_summaries), including linking to the place's reviews where required.

***

### Notes and Limitations

- **Availability**: Summaries are not guaranteed for every place.
- **No pagination**: Each search query returns at most **20 places** in a single request (limited by `maxItems`). Run again with different queries for more coverage.

#### Supported languages and regions

Review summaries are supported for points of interest only in the following languages and regions:

| Language | Region |
| --- | --- |
| English | Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, Guatemala, India, Japan, Mexico, Paraguay, Peru, United Kingdom, United States, Uruguay, Venezuela |
| Japanese | Japan |
| Portuguese | Brazil |
| Spanish | Argentina, Bolivia, Chile, Colombia, Costa Rica, Dominican Republic, Ecuador, Guatemala, Mexico, Paraguay, Peru, United States, Uruguay, Venezuela |

Places outside these markets may return no summary even when reviews exist on Google Maps.

# Actor input Schema

## `places` (type: `array`):

Google Place IDs (ChIJ…) or Google Maps place URLs — one summary per entry.

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

Keyword searches, e.g. "coffee shop" or "hotels in Seattle".

## `maxItems` (type: `integer`):

How many places to return for each search query (up to 20; no pagination). Not used for direct place lookups.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. Not required for this Actor.

## Actor input object example

```json
{
  "places": [
    "ChIJD2l2k7ZL0YkRC80d-3MV1lM"
  ],
  "searchQueries": [],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "places": [
        "ChIJD2l2k7ZL0YkRC80d-3MV1lM"
    ],
    "searchQueries": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/google-maps-review-summary-scraper").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 = {
    "places": ["ChIJD2l2k7ZL0YkRC80d-3MV1lM"],
    "searchQueries": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/google-maps-review-summary-scraper").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 '{
  "places": [
    "ChIJD2l2k7ZL0YkRC80d-3MV1lM"
  ],
  "searchQueries": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/google-maps-review-summary-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rainminer/google-maps-review-summary-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Review Summary Scraper",
        "description": "Fetch AI-powered Google Maps review summaries for restaurants, hotels, shops, and points of interest. Returns summary text and links to place reviews—ideal for location intelligence, travel apps, hospitality research, and competitive analysis pipelines.",
        "version": "1.0",
        "x-build-id": "TNARg26hra0d5kFY9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rainminer~google-maps-review-summary-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rainminer-google-maps-review-summary-scraper",
                "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/rainminer~google-maps-review-summary-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rainminer-google-maps-review-summary-scraper",
                "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/rainminer~google-maps-review-summary-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rainminer-google-maps-review-summary-scraper",
                "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": {
                    "places": {
                        "title": "Places",
                        "type": "array",
                        "description": "Google Place IDs (ChIJ…) or Google Maps place URLs — one summary per entry.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Keyword searches, e.g. \"coffee shop\" or \"hotels in Seattle\".",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items per search query",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many places to return for each search query (up to 20; no pagination). Not used for direct place lookups.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Not required for this Actor."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
