# MapLead Reviews - Google Maps Reviews & Ratings Scraper (`automation_studio/maplead-reviews-scraper`) Actor

Extract detailed customer reviews, star ratings, reviewer profiles, owner responses, and cleaned review text from Google Maps places. Export to CSV, JSON, & Excel.

- **URL**: https://apify.com/automation\_studio/maplead-reviews-scraper.md
- **Developed by:** [Asad Naeem](https://apify.com/automation_studio) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 scraped google maps reviews

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/actors/running/actors-in-store.md#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

## ⭐ MapLead Reviews - Google Maps Reviews & Ratings Scraper

**Extract detailed customer reviews, star ratings, reviewer profiles, owner responses, and cleaned review text from Google Maps places.**

Accurate, high-performance Google Maps reviews scraper equipped with intelligent DOM artifact removal, star rating filters, sentiment tagging, and Local Guide detection.

***

### 🌟 Key Features

- ⭐ **Star Ratings & Sentiment Tagging**: Scrapes 1-5 star ratings and automatically tags reviews (`POSITIVE`, `NEUTRAL`, `NEGATIVE`).
- 🧼 **Intelligent Review Text Cleaner**: Automatically removes trailing 'Like', 'Like1', 'Share', 'More' DOM artifacts left by browser renderers.
- 💬 **Owner Response Extraction**: Captures official replies and responses from business managers/owners.
- 🏅 **Local Guide Badge Detection**: Identifies whether the review was posted by a verified Google Local Guide.
- 📶 **Dynamic Sorting & Filtering**: Sort by **Newest First**, **Highest Rating**, **Lowest Rating**, or **Most Relevant**, and filter by star ratings (e.g. 5-star only, 1-star only, negative only).
- 💰 **Pay-Per-Event (PPE) Pricing**: Pay only **$0.002 per review** and **$0.002 per run start**.
- ⚡ **Built-in Proxy Support**: Pre-configured with Apify Proxy for seamless, uninterrupted extraction.

***

### 📥 Input Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchStrings` | Array of Strings | `["restaurants in Miami"]` | Search queries or locations to find places on Google Maps. |
| `startUrls` | Array of Objects | `[]` | Direct Google Maps place or search URLs. |
| `placeIds` | Array of Strings | `[]` | Specific Google Place IDs or `0x...` hex IDs. |
| `maxReviews` | Integer | `5` | Maximum total reviews to harvest across the entire run. |
| `maxReviewsPerPlace` | Integer | `5` | Maximum reviews to extract per place listing. |
| `reviewsSort` | String (Select) | `newest` | Sort order: `newest`, `highest_rating`, `lowest_rating`, `most_relevant`. |
| `starFilter` | String (Select) | `ALL` | Star filter: `ALL`, `FIVE_STAR`, `ONE_STAR`, `POSITIVE_ONLY`, `NEGATIVE_ONLY`. |
| `cleanReviewText` | Boolean | `true` | Clean trailing 'Like', 'Share', 'More' button artifacts from review body. |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true }` | Apify Proxy configuration for anti-blocking. |

***

### 📤 Output Format

Each extracted review is pushed directly to the default dataset:

```json
{
  "reviewId": "rev_0x89c25990263f338d:0x87d468eb37f7d750_1",
  "placeTitle": "Joe's Pizza NYC",
  "placeId": "0x89c25990263f338d:0x87d468eb37f7d750",
  "authorName": "David Miller",
  "reviewerDetails": "David Miller · Local Guide · 48 reviews",
  "isLocalGuide": true,
  "stars": 5.0,
  "sentiment": "POSITIVE",
  "text": "Best slice in the city! Crust is perfectly crisp and the tomato sauce has incredible balance.",
  "originalText": "Best slice in the city! Crust is perfectly crisp and the tomato sauce has incredible balance. Like",
  "publishedAtRelative": "2 weeks ago",
  "publishedAtDate": "2026-09-07",
  "ownerResponse": "Thank you so much David! We look forward to seeing you again soon.",
  "likesCount": 0,
  "scrapedAt": "2026-09-07T10:30:00.000Z"
}
```

***

### 💡 Common Use Cases

- **Brand Reputation & Review Monitoring**: Track customer feedback and monitor satisfaction across all business branches.
- **Competitor Intelligence**: Extract competitor reviews to identify recurring customer complaints, pricing feedback, and service gaps.
- **NLP & Sentiment Analysis**: Fine-tune custom AI models and sentiment classification pipelines on real customer reviews.
- **Lead Generation & CRM Enrichment**: Identify influential reviewers and Local Guides for outreach campaigns.

***

### 🚀 Exporting Data

Easily export your data from the Apify Console or API in multiple formats:

- **JSON**
- **CSV**
- **Excel (XLSX)**
- **XML**
- **HTML Table**

# Actor input Schema

## `searchStrings` (type: `array`):

Enter search terms or location queries (e.g. 'restaurants in Miami', 'hotels in New York').

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

Direct Google Maps place URLs to extract reviews from.

## `placeIds` (type: `array`):

Specific Google Maps Place IDs (e.g. 'ChIJN1t\_tDeuEmsRUsoyG83frY4').

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

Sort order for extracted Google Maps reviews.

## `starFilter` (type: `string`):

Filter reviews by star rating score.

## `maxReviewsPerPlace` (type: `integer`):

Number of reviews to extract per individual place (1 to 100). Default is 5 reviews.

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

Maximum total reviews to extract across all places (1 to 50000). Default is 5 reviews.

## `cleanReviewText` (type: `boolean`):

Automatically clean review text by stripping control characters, emojis, weird unicode surrogates, and trailing UI buttons.

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

Optional Apify Proxy settings. Google Maps loads directly by default; enable only if you have custom proxies.

## Actor input object example

```json
{
  "searchStrings": [
    "restaurants in Miami"
  ],
  "startUrls": [],
  "placeIds": [],
  "reviewsSort": "newest",
  "starFilter": "ALL",
  "maxReviewsPerPlace": 5,
  "maxReviews": 5,
  "cleanReviewText": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset containing all extracted Google Maps customer reviews, star ratings, reviewer details, and owner responses

# 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 = {
    "searchStrings": [
        "restaurants in Miami"
    ],
    "startUrls": [],
    "placeIds": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation_studio/maplead-reviews-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 = {
    "searchStrings": ["restaurants in Miami"],
    "startUrls": [],
    "placeIds": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("automation_studio/maplead-reviews-scraper").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 '{
  "searchStrings": [
    "restaurants in Miami"
  ],
  "startUrls": [],
  "placeIds": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call automation_studio/maplead-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/rIdWuOUx0iYgsWD37/builds/GtlU507sHGcsRChiG/openapi.json
