# Google Maps Reviews Scraper API (`poidata/google-maps-reviews-scraper-api`) Actor

Get all Google Maps reviews - fast and at scale. Scrape millions of reviews with text, ratings, dates, reviewer profiles, owner replies, photos & business data. Powerful Google Maps Reviews Scraper & API with bulk scraping and structured exports.

- **URL**: https://apify.com/poidata/google-maps-reviews-scraper-api.md
- **Developed by:** [Poidata](https://apify.com/poidata) (community)
- **Categories:** Travel, AI, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 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.
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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Google Maps Reviews Scraper & API

Extract **Google Maps reviews at scale** and get clean, structured data ready for analysis, databases, applications, or AI.

Enter one or thousands of **Google Maps URLs or Place IDs** and collect up to **1 million reviews per place**, including review text, star ratings, exact publication dates, reviewer profiles, owner replies, photos, business details, addresses, coordinates, and more.

Run the **Google Maps Reviews Scraper** directly from Apify, or integrate it into your application as a **Google Maps Reviews API / Google Maps Reviews Scraper API**.

| What you can do | Supported |
|---|---|
| 🗺️ Scrape one or thousands of places | ✅ |
| 🗂️ Collect all available reviews | ✅ |
| 🔍 Filter reviews by date or keyword | ✅ |
| 🌐 Translate reviews | ✅ | Original text plus a translation into your chosen language (English by default) |
| ↕️ Sort reviews | Newest, relevant, highest or lowest rated |
| 📅 Get exact review dates | ✅ |
| 💬 Collect owner responses | ✅ |
| 📸 Collect review photos | ✅ |
| 👤 Collect reviewer profiles | Optional |
| ⚡ Process places in parallel | ✅ |
| 📦 Fixed structured output | 55 fields |
| 📤 Export | JSON, CSV, Excel, XML, HTML |
| 🔌 API access | ✅ |
| ⏰ Schedules, webhooks & MCP | ✅ |

### 📦 What data can you scrape?

Each result combines **review, reviewer, business, address, and input data** in one structured record.

| Data | Included fields |
|---|---|
| **Reviews** | Text, translated text, 1–5 star rating, exact and relative dates, review ID, review URL, likes, photos, owner response, source, visit date, language, detailed ratings |
| **Reviewer** | Name, ID, Google Maps profile URL, review count, profile photo, Local Guide status |
| **Business** | Name, Place ID, address, coordinates, categories, rating, review count, Maps URL, price level, CID, image, hotel stars, closed status |
| **Address** | Neighborhood, street, city, state/region, ZIP/postal code, country |
| **Trace data** | Input URL, input Place ID, search URL, search string, language, rank, Knowledge Graph ID, scraping timestamp |

Reviewer personal data can be disabled when it is not needed.

***

## 🚀 How to scrape Google Maps reviews

### 1. Add Google Maps places

Provide one or multiple:

- **Place IDs** — recommended
- Google Maps place URLs
- Google Maps search URLs
- Google Maps `?cid=` URLs

Example Place ID:

```text
ChIJB4cC_1RYwokRu6mRBD_lqO8
```

### 2. Configure the scraper

| Option | What it does |
|---|---|
| **Number of reviews** | Maximum reviews to fetch per place, up to 1 million |
| **Collect all reviews** | Collect every available review |
| **Sort reviews by** | Newest, most relevant, highest rated, or lowest rated |
| **Only reviews newer than…** | Exact date such as `2024-01-01` or relative period such as `3 months` |
| **Filter by keywords** | Keep reviews containing specified words |
| **Skip reviews without text** | Enabled by default |
| **Language** | Translate reviews into this language. Each review comes back with its original text plus a translation into the chosen language (e.g. a Chinese review plus its English translation). Defaults to English; choose **All languages** to keep the API default |
| **Reviews origin** | Google only or all supported sources |
| **Personal data** | Include reviewer names, IDs, profile URLs, and photos |

> **Note:** Date filtering requires reviews to be sorted by **newest**.

### 3. Run and export

Run the Actor from the **Apify Console** or through the **Apify API**.

Results are stored in an Apify dataset and can be exported as:

**JSON · CSV · Excel · XML · HTML**

![Google Maps Reviews Scraper — input form](https://api.apify.com/v2/key-value-stores/0UDqYUl1vaAAGZKM5/records/google-maps-reviews-scraper-api-input-form.png)

***

## 🔌 Google Maps Reviews API

Need Google Maps reviews programmatically?

This Actor also works as a **Google Maps Reviews API** and **Google Maps Reviews Scraper API**. Send Google Maps places from your application, start the scraper automatically, and retrieve structured review data from the resulting Apify dataset.

### cURL example

```bash
curl -X POST "https://api.apify.com/v2/acts/your-actor/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "fids": ["ChIJB4cC_1RYwokRu6mRBD_lqO8"],
    "maxReviews": 100
  }'
```

### Python example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("your-actor").call(run_input={
    "fids": ["ChIJB4cC_1RYwokRu6mRBD_lqO8"],
    "maxReviews": 100,
})

items = client.dataset(
    run["defaultDatasetId"]
).list_items().items
```

The example requests up to **100 Google Maps reviews** and returns them as structured dataset records.

***

## Example Google Maps review output

The dataset opens with an overview table, and each record can be expanded to see all available fields.

![Google Maps Reviews Scraper — output overview](https://api.apify.com/v2/key-value-stores/0UDqYUl1vaAAGZKM5/records/google-maps-reviews-scraper-api-output-result.png)

![Google Maps Reviews Scraper — output record with all fields](https://api.apify.com/v2/key-value-stores/0UDqYUl1vaAAGZKM5/records/google-maps-reviews-scraper-api-output-result-all-fields.png)

Example record:

```json
{
  "text": "今晚的表演太精彩了，全家人都很喜歡！",
  "textTranslated": "Tonight's show was amazing — the whole family loved it!",
  "publishAt": "a month ago",
  "publishedAtDate": "2026-07-14T18:32:07.120Z",
  "likesCount": 3,
  "reviewId": "Ci9GQUtF...",
  "reviewUrl": "https://www.google.com/maps/reviews/...",
  "stars": 5,
  "rating": null,
  "responseFromOwnerDate": null,
  "responseFromOwnerText": null,
  "reviewImageUrls": [
    "https://lh3.googleusercontent.com/gps-cs-s/EXAMPLE_REVIEW_PHOTO=k-no"
  ],
  "reviewContext": {},
  "reviewDetailedRating": {},
  "reviewOrigin": "Google",
  "visitedIn": null,
  "originalLanguage": "zh-Hant",
  "translatedLanguage": "en",
  "name": "Jordan Lee",
  "reviewerId": "1001001001001001001",
  "reviewerUrl": "https://www.google.com/maps/contrib/1001001001001001001?hl=en",
  "reviewerNumberOfReviews": 127,
  "reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/EXAMPLE_REVIEWER_PHOTO",
  "isLocalGuide": true,
  "title": "The Grand Pavilion Theatre",
  "placeId": "ChIJBo5bxCGffToRtUct8MOp6FE",
  "address": "18 Riverside Ave, Springfield, IL 62704",
  "location": {
    "lat": 39.7817,
    "lng": -89.6501
  },
  "categories": [
    "Performing arts theater"
  ],
  "isAdvertisement": false,
  "categoryName": "Performing arts theater",
  "totalScore": 4.7,
  "permanentlyClosed": false,
  "temporarilyClosed": false,
  "reviewsCount": 5123,
  "url": "https://www.google.com/maps/...",
  "price": null,
  "cid": "5902153970682251189",
  "fid": "0x3a7d9f21c45b8e06:0x51e8a9c3f02d47b5",
  "imageUrl": "https://lh3.googleusercontent.com/...",
  "hotelStars": null,
  "scrapedAt": "2026-08-11T15:04:24.683Z",
  "searchPageUrl": null,
  "searchString": "FID: 0x3a7d9f21c45b8e06:0x51e8a9c3f02d47b5",
  "inputPlaceId": null,
  "inputStartUrl": null,
  "language": "en",
  "rank": null,
  "kgmid": "/m/0z9x7w5",
  "neighborhood": "Downtown",
  "street": "18 Riverside Ave",
  "city": "Springfield",
  "countryCode": "US",
  "postalCode": "62704",
  "state": "Illinois"
}
```

***

## Google Maps Reviews Scraper output schema

Every result follows a predictable **55-field schema**.

**45 fields are always present.** If Google Maps does not provide a value, the field contains `null`. Another **10 fields are emitted when relevant**.

This consistent structure makes the output easy to use with APIs, databases, ETL pipelines, dashboards, analytics systems, and AI applications.

### Review fields

| Field | Type | Description |
|---|---|---|
| `text` | string / null | Review text |
| `textTranslated` | string / null | Translated review text |
| `publishAt` | string / null | Relative publication time |
| `publishedAtDate` | string / null | Exact ISO 8601 publication date |
| `likesCount` | number | Number of likes *(optional)* |
| `reviewId` | string | Unique review identifier |
| `reviewUrl` | string / null | Direct review URL |
| `stars` | number | Star rating from 1–5 |
| `rating` | number / null | Rating from another platform when present |
| `responseFromOwnerDate` | string / null | Owner response date |
| `responseFromOwnerText` | string / null | Owner response |
| `reviewImageUrls` | array / null | Review photos *(optional)* |
| `reviewContext` | object | Context supplied by Google *(optional)* |
| `reviewDetailedRating` | object | Per-aspect ratings *(optional)* |
| `reviewOrigin` | string | Review source, such as `"Google"` |
| `visitedIn` | string / null | Visit date |
| `originalLanguage` | string / null | Original language |
| `translatedLanguage` | string / null | Translation language |

### Reviewer fields

| Field | Type | Description |
|---|---|---|
| `name` | string / null | Reviewer display name |
| `reviewerId` | string | Google profile ID |
| `reviewerUrl` | string / null | Google Maps profile URL |
| `reviewerNumberOfReviews` | number / null | Number of reviews written |
| `reviewerPhotoUrl` | string / null | Profile photo |
| `isLocalGuide` | boolean | Google Local Guide status *(optional)* |

### Google Maps place fields

| Field | Type | Description |
|---|---|---|
| `title` | string | Business name |
| `placeId` | string / null | Google Maps Place ID |
| `address` | string / null | Full address |
| `location` | object / null | `{ lat, lng }` |
| `categories` | array | Google Maps categories |
| `isAdvertisement` | boolean | Whether result is an advertisement |
| `categoryName` | string / null | Primary category |
| `totalScore` | number / null | Average rating |
| `permanentlyClosed` | boolean | Permanently closed status |
| `temporarilyClosed` | boolean | Temporarily closed status |
| `reviewsCount` | number / null | Total business reviews |
| `url` | string / null | Google Maps business URL |
| `price` | string / null | Price level |
| `cid` | string / null | Google Maps customer ID |
| `fid` | string / null | Google Maps place ID |
| `imageUrl` | string / null | Main business image |
| `hotelStars` | string / null | Hotel star rating |
| `scrapedAt` | string | ISO 8601 scraping timestamp |

### Address & input fields

| Field | Type | Description |
|---|---|---|
| `neighborhood` | string / null | Neighborhood |
| `street` | string / null | Street |
| `city` | string / null | City |
| `state` | string / null | State or region |
| `postalCode` | string / null | ZIP / postal code |
| `countryCode` | string / null | Two-letter country code |
| `searchPageUrl` | string / null | Associated search page *(optional)* |
| `searchString` | string / null | Place ID or search string *(optional)* |
| `inputPlaceId` | string / null | Supplied Place ID *(optional)* |
| `inputStartUrl` | string / null | Supplied Google Maps URL *(optional)* |
| `language` | string / null | Requested translation language (empty for "All languages") |
| `rank` | number / null | Result position *(optional)* |
| `kgmid` | string / null | Google Knowledge Graph ID |

***

## ⚡ Built for bulk Google Maps review scraping

Submit large lists of locations in a single run instead of processing each business individually.

Multiple Google Maps places are processed in parallel. If a timeout or slow response interrupts processing, the Actor retries and continues from where it stopped, helping prevent duplicate or lost reviews during long-running jobs.

### Parallel processing by Apify plan

| Apify plan | Places in parallel |
|---|---:|
| Free | 3 |
| Bronze | 12 |
| Silver | 32 |
| Gold and higher | 64 |

Parallelism is automatic—no additional setup or input is required.

Higher plans process more places simultaneously, allowing large Google Maps review datasets to finish faster.

If the caller's plan cannot be determined, a safe default is used. The Actor owner can also configure a fixed value.

***

## 💡 What can Google Maps review data be used for?

| Use case | What you can do |
|---|---|
| **Reputation monitoring** | Track new reviews, ratings, and customer feedback |
| **Competitor research** | Analyze competitors' strengths, complaints, and customer preferences |
| **Voice-of-customer analysis** | Find recurring praise, complaints, preferences, and feature requests |
| **Local SEO analysis** | Monitor ratings, review counts, dates, and newly published reviews |
| **AI & ML datasets** | Export structured reviews for sentiment analysis, classification, research, and other data-processing workflows |

***

## Integrations

Use the Google Maps Reviews Scraper manually or connect it to automated workflows.

| Integration | What you can do |
|---|---|
| **Apify API** | Run scraping programmatically |
| **Schedules** | Automatically run the scraper at specified intervals |
| **Webhooks** | Trigger another system when a run finishes |
| **Zapier** | Send review data into automated workflows |
| **Make** | Connect review data with other applications |
| **n8n** | Build custom automation pipelines |
| **MCP** | Let compatible AI agents run the Actor |
| **Your backend** | Integrate directly through the API |

### Schedules

Use Apify schedules to run the scraper automatically, such as a nightly job for reputation monitoring.

Each run creates a fresh dataset that you can query or export.

### Webhooks

Use Apify webhooks to notify another service when a run finishes.

Webhooks can connect to Zapier, Make, n8n, Slack, or your own backend.

Example:

```json
{
  "eventType": "ACTOR.RUN.SUCCEEDED",
  "actorId": "your-actor",
  "runId": "RUN_ID",
  "resource": {
    "status": "SUCCEEDED",
    "defaultDatasetId": "DATASET_ID",
    "stats": {
      "itemCount": 1234
    },
    "startedAt": "2026-08-11T15:00:00.000Z",
    "finishedAt": "2026-08-11T15:03:00.000Z"
  }
}
```

Use `defaultDatasetId` to retrieve the records through the Apify API.

For a machine-readable run summary without parsing logs, read the `run-summary` key from the run's key-value store or use the single-line `{"event":"run-complete", ...}` JSON log entry.

### Zapier, Make, n8n and other no-code tools

The input schema maps directly to no-code workflow forms.

Provide Google Maps URLs or Place IDs, configure review limits and filters, then send the output dataset to your next step.

```json
{
  "startUrls": [
    "https://www.google.com/maps/place/..."
  ],
  "fids": [
    "ChIJ..."
  ]
}
```

Results can be exported as JSON, CSV, Excel, XML, or HTML.

### MCP and AI agents

Use the Actor from compatible AI assistants such as **Claude Desktop, Cursor, or ChatGPT** through Apify's official MCP server.

Example configuration:

```json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ],
      "env": {
        "APIFY_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}
```

An AI agent can then:

1. Accept Google Maps URLs or Place IDs
2. Configure `maxReviews`, sorting, and filters
3. Run the Actor
4. Read the resulting dataset

This allows users to request Google Maps reviews in plain language and receive structured data.

***

## 🔒 Personal data and GDPR

Reviewer names, IDs, profile URLs, and photos can constitute personal data.

Only collect and process this information when you have an appropriate legitimate reason. If reviewer information is unnecessary for your use case, disable **Personal data**.

`reviewId` is always included.

***

## 💰 Google Maps Reviews Scraper pricing

The Actor uses **pay-per-event pricing**.

| Event | When you are charged |
|---|---|
| **Dataset result** | Once for every review successfully written to the dataset |
| **Actor start** | Once when a run starts |

Reviews removed by filters or not successfully collected are **not charged**.

Current prices are shown on the Actor's **Pricing** tab.

***

## ❓ Frequently asked questions

### What is a Google Maps Reviews Scraper?

A **Google Maps Reviews Scraper** automatically extracts customer reviews from Google Maps and converts them into structured data.

This Actor can collect review text, ratings, exact dates, review URLs, reviewer information, owner replies, photos, and business details.

### Is there a Google Maps Reviews API?

Yes. This Actor works as a **Google Maps Reviews API** through the Apify API.

Applications can submit Google Maps locations, start scraping runs, and retrieve structured review datasets programmatically.

### What is a Google Maps Reviews Scraper API?

A **Google Maps Reviews Scraper API** provides programmatic access to Google Maps review extraction.

Instead of manually running the scraper, your application can submit places through the API and retrieve the resulting review data automatically.

### Can I scrape all reviews for a business?

Yes. Set a specific limit or enable **Collect all reviews**. The configured maximum supports up to **1 million reviews per place**.

### Can I scrape multiple Google Maps places?

Yes. Submit multiple Place IDs, Google Maps URLs, or both in one run. Places are processed in parallel.

### Can I filter reviews by date?

Yes. Use **Only reviews newer than…** with an exact date or relative period.

Date filtering requires reviews to be sorted by **newest**.

### Can I filter reviews by keyword?

Yes. Use the keyword filter to return reviews containing specified words.

### Can I sort Google Maps reviews?

Yes. Reviews can be sorted by:

- Newest
- Most relevant
- Highest rated
- Lowest rated

The default is **newest**.

### Can I get exact review dates?

Yes. `publishedAtDate` returns the exact ISO 8601 publication date when available, while `publishAt` contains Google's relative date, such as `"a month ago"`.

### Does the scraper collect owner responses?

Yes. When available, results include the owner's response text and response date.

### Does it collect review photos?

Yes. Review photos are included when available.

### Does it collect reviewer profiles?

Yes, when **Personal data** is enabled.

Results can include reviewer names, IDs, profile URLs, photos, review counts, and Google Local Guide status.

### What fields does the Google Maps Reviews API return?

Each review follows a consistent **55-field schema** covering:

- Review data
- Reviewer data
- Business details
- Address data
- Input and trace information

### What formats can I export?

Results can be exported as **JSON, CSV, Excel, XML, or HTML**.

They can also be retrieved programmatically through the Apify API.

### Can I use it for bulk Google Maps review scraping?

Yes. Submit multiple locations in a single run and process them in parallel.

### Can I use Google Maps reviews for sentiment analysis?

Yes. Export review text and ratings to your sentiment-analysis, classification, AI, or text-processing workflow.

The Actor collects the data; downstream systems perform the analysis.

### Can I use reviews for competitor research?

Yes. Collect competitor reviews and analyze ratings, recurring complaints, customer feedback, and commonly mentioned strengths.

### Can I use the data for local SEO analysis?

Yes. Review count, average rating, review dates, review text, and newly published reviews can be used for local SEO monitoring and analysis.

### Can I use Zapier, Make, or n8n?

Yes. Provide URLs or Place IDs, configure the review count and filters, and send the resulting dataset to a spreadsheet, database, notification system, or another workflow step.

### Can AI agents use the scraper through MCP?

Yes. Expose the Actor through Apify's official MCP server so compatible AI assistants can configure the input, start the Actor, and read the resulting dataset.

# Actor input Schema

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

List of Google Maps URLs to scrape reviews from. Accepts place URLs (/maps/place/...), search URLs (/maps/search/...), review URLs (/maps/reviews/...), and links with a cid= parameter (e.g. google.com/maps?cid=\*\*\*). Paste one URL per line; use Bulk edit to add many at once.

## `fids` (type: `array`):

List of Google Maps place IDs (e.g. ChIJB4cC\_1RYwokRu6mRBD\_lqO8). Paste one ID per line or use Bulk edit.

## `maxReviews` (type: `integer`):

Maximum number of reviews to collect per place. The actor keeps fetching until it has collected this many reviews that pass your filters, or until there are no more reviews. To scrape a place's full review history, enable 'Collect all reviews' below. Ignored when Collect all reviews is enabled.

## `collectAllReviews` (type: `boolean`):

Scrape every review for each place, ignoring the number-of-reviews limit. ⚠️ Warning: collecting all reviews can produce a very large number of results and incur significant usage charges — only enable this when you truly need the full review history.

## `reviewsSort` (type: `string`):

Order in which reviews are returned: Newest, Most relevant, Highest rating, or Lowest rating. Note: 'Newest' is required when a date filter (Only scrape reviews newer than \[date]) is set.

## `reviewsStartDate` (type: `string`):

Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative  (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. <br><br> ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The actor skips reviews older than the specified date and stops scraping when an entire page of reviews is older than it.

## `reviewsFilterString` (type: `string`):

Only keep reviews whose text contains these keywords (case-insensitive; all words must appear). Leave it blank to scrape all reviews.

## `skipReviewsWithoutText` (type: `boolean`):

Enabled by default: photo-only reviews (no review text) are filtered out and only reviews with text are scraped. Uncheck to keep them. The actor keeps fetching until it has collected the requested number of reviews (maxReviews) that pass this filter.

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

Language for review translations. The API returns each review with its original text plus a translation into this language. Choose "All languages" to keep the API's default translation.

## `reviewsOrigin` (type: `string`):

Which review sources to include: All reviews (Google and other platforms) or Google only.

## `personalData` (type: `boolean`):

This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting.

Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.google.com/maps/place/Yellowstone+National+Park/@44.5857951,-110.5140571,9z/data=!3m1!4b1!4m5!3m4!1s0x5351e55555555555:0xaca8f930348fe1bb!8m2!3d44.427963!4d-110.588455?hl=en-GB"
  ],
  "fids": [
    "ChIJB4cC_1RYwokRu6mRBD_lqO8"
  ],
  "maxReviews": 10,
  "collectAllReviews": false,
  "reviewsSort": "newest",
  "reviewsStartDate": "2024-01-01",
  "reviewsFilterString": "friendly staff",
  "skipReviewsWithoutText": true,
  "language": "en",
  "reviewsOrigin": "all",
  "personalData": true
}
```

# Actor output Schema

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

Dataset containing all scraped reviews

# 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 = {
    "fids": [
        "ChIJB4cC_1RYwokRu6mRBD_lqO8"
    ],
    "maxReviews": 10,
    "collectAllReviews": false,
    "reviewsSort": "newest",
    "reviewsFilterString": "",
    "skipReviewsWithoutText": true,
    "language": "en",
    "reviewsOrigin": "all",
    "personalData": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("poidata/google-maps-reviews-scraper-api").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 = {
    "fids": ["ChIJB4cC_1RYwokRu6mRBD_lqO8"],
    "maxReviews": 10,
    "collectAllReviews": False,
    "reviewsSort": "newest",
    "reviewsFilterString": "",
    "skipReviewsWithoutText": True,
    "language": "en",
    "reviewsOrigin": "all",
    "personalData": True,
}

# Run the Actor and wait for it to finish
run = client.actor("poidata/google-maps-reviews-scraper-api").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 '{
  "fids": [
    "ChIJB4cC_1RYwokRu6mRBD_lqO8"
  ],
  "maxReviews": 10,
  "collectAllReviews": false,
  "reviewsSort": "newest",
  "reviewsFilterString": "",
  "skipReviewsWithoutText": true,
  "language": "en",
  "reviewsOrigin": "all",
  "personalData": true
}' |
apify call poidata/google-maps-reviews-scraper-api --silent --output-dataset

```

## MCP server setup

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

```

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/2fxMaLI6pmllX0Iud/builds/mDJWoC7nAmbovcts7/openapi.json
