# Google Maps Reviews Scraper $0.25/1k 📝 (`waseem9/google-maps-reviews-scraper`) Actor

Scrape all reviews of Google Maps places: review text, ratings, reviewer details, dates, photos, and owner responses. Export as JSON/CSV or use via API.

- **URL**: https://apify.com/waseem9/google-maps-reviews-scraper.md
- **Developed by:** [Waseem Ahmed](https://apify.com/waseem9) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.32 / 1,000 reviews

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/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 Reviews Scraper $0.40/1k

**Google Maps reviews scraper** that extracts every review of any place on Google Maps - review text, star ratings, reviewer names and profiles, dates, and owner responses. One of the cheapest ways to get Google reviews at scale: **$0.40 per 1,000 reviews**.

Use it for reputation management, competitor review analysis, sentiment datasets, or feeding reviews into AI and RAG pipelines. Just paste a Google Maps place URL (or the place name) and get clean, structured review data.

### What data can this Google Maps reviews scraper extract?

| Field | Description |
|---|---|
| placeTitle / placeUrl / placeId | Which business the review belongs to |
| reviewId | Unique review identifier (safe for deduplication) |
| reviewerName / reviewerUrl | Reviewer name and Google Maps profile link |
| reviewerReviewsCount | How many reviews that reviewer has written |
| reviewRating | Star rating (1-5) |
| reviewText | Full review text (truncated reviews are auto-expanded) |
| reviewDate | Relative publish date (e.g. 3 months ago) |
| ownerResponseText | The owner reply, if any |

### How to scrape Google reviews

1. Paste one or more Google Maps place URLs (or just the place name - both work)
2. Set maxReviewsPerPlace (default 100, up to 5000)
3. Optionally enable onlyWithComments to skip rating-only reviews
4. Run - export to JSON, CSV or Excel, or pull via the API

**Tip:** you can feed this actor directly from our **Google Maps Lead Generator**: its placeId output is accepted here as-is.

### Use cases

- **Reputation management** - monitor new reviews and owner responses for your clients
- **Competitor review analysis** - compare ratings, themes and response rates across places
- **Sentiment analysis and AI datasets** - build labelled review corpora for NLP and LLM fine-tuning
- **Local SEO audits** - find recurring complaints and strengths across a market
- **Hospitality, clinics and retail** - track review velocity per location

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| startUrls | array | required | Google Maps place URLs or place names |
| maxReviewsPerPlace | integer | 100 | Max reviews per place (1-5000) |
| onlyWithComments | boolean | false | Skip rating-only reviews |
| language | string | en | Google Maps language |
| maxRequestsPerCrawl | integer | 1000 | Safety cap |
| proxyConfiguration | object | - | Residential proxies strongly recommended |

### Example output

```json
{
    "placeTitle": "Relax and Smile Dental Care",
    "placeUrl": "https://www.google.com/maps/place/Relax+and+Smile+Dental+Care",
    "reviewId": "ChdDSUhNMG9nS0VJQ0FnSUR...",
    "reviewerName": "Naseem Beyah-Bryant",
    "reviewerUrl": "https://www.google.com/maps/contrib/11781962880637...",
    "reviewerReviewsCount": 3,
    "reviewRating": 5,
    "reviewText": "Today was my first visit with Relax and Smile and the whole team made me feel welcome...",
    "reviewDate": "2 months ago",
    "ownerResponseText": "We are so glad your first visit went well, Naseem.",
    "scrapedAt": "2026-09-22T05:00:00.000Z"
}
```

### Pricing

Pay-per-event - **$0.40 per 1,000 reviews** (free-tier trial pricing available). You pay only for reviews that are successfully scraped, and runs respect your maximum charge limit.

### FAQ

**How do I scrape Google reviews?**
Paste a Google Maps place URL (or the place name) into the input and run the actor. It opens the reviews feed, expands truncated reviews and returns one structured row per review.

**Do I need a proxy?**
Yes for complete data. Google serves a truncated 3-review preview to datacenter IPs; residential or proxy IPs receive the full review feed. The actor also retries automatically when a feed looks truncated.

**Can I scrape reviews in bulk?**
Yes - pass many place URLs in one run (one row per review, deduplicated by review ID).

**Can I export Google reviews to CSV or Excel?**
Yes - download CSV, Excel, JSON, XML or HTML from the Output tab, or fetch via the API.

**Is scraping Google reviews legal?**
This actor collects only publicly available review data. You are responsible for complying with local laws and platform terms when using it.

### Companion actors

- **Google Maps Lead Generator + Contact Email Extractor** (https://apify.com/waseem9/google-maps-lead-generator) - get the businesses and their contact emails first, then run this actor on the same places for full coverage.

### Support

Questions or a broken selector? Open an issue on the actor Issues tab - issues are monitored and selectors are updated promptly.

# Actor input Schema

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

One or more Google Maps place URLs (e.g. <code>https://www.google.com/maps/place/...</code>) or place names. Get them from Google Maps, or use the <code>placeId</code> output of a Google Maps lead scraper.

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

Maximum number of reviews to scrape per place.

## `onlyWithComments` (type: `boolean`):

Skip rating-only reviews that have no review text.

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

Google Maps UI language (<code>hl</code> parameter).

## `maxRequestsPerCrawl` (type: `integer`):

Safety cap on the total number of browser requests per run.

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

Residential proxies are <strong>strongly recommended</strong>: Google serves a truncated 3-review preview to datacenter IPs, while residential/proxy IPs receive the full review feed.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.google.com/maps/place/Relax+and+Smile+Dental+Care"
  ],
  "maxReviewsPerPlace": 100,
  "onlyWithComments": false,
  "language": "en",
  "maxRequestsPerCrawl": 1000
}
```

# Actor output Schema

## `reviews` (type: `string`):

All scraped reviews. Each item contains place info, reviewer name, rating, review text, published date, and owner response.

# 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 = {
    "startUrls": [
        "https://www.google.com/maps/place/Relax+and+Smile+Dental+Care"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("waseem9/google-maps-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 = { "startUrls": ["https://www.google.com/maps/place/Relax+and+Smile+Dental+Care"] }

# Run the Actor and wait for it to finish
run = client.actor("waseem9/google-maps-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 '{
  "startUrls": [
    "https://www.google.com/maps/place/Relax+and+Smile+Dental+Care"
  ]
}' |
apify call waseem9/google-maps-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,waseem9/google-maps-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/TqTbJJn4z0WYqrvMW/builds/8WAaeZ54Hirm8hUQT/openapi.json
