# Google Maps Reviews Scraper (`rastriq/gmaps-reviews-tracker`) Actor

Scrape reviews from any Google Maps place — restaurants, hotels, shops, landmarks. Get review text, star rating, author, date and language. Sort by newest, relevant, highest or lowest. Filter by date for daily monitoring. 50+ reviews/second, from $0.20 per 1,000 reviews.

- **URL**: https://apify.com/rastriq/gmaps-reviews-tracker.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** Marketing, Lead generation, SEO tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.20 / 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.

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

Extract reviews from any Google Maps place — restaurants, hotels, shops, landmarks, or any business. **Google Maps Reviews Scraper** gives you the full review text, star rating, author name, date, language, and unique review ID, all via fast HTTP calls with no browser overhead.

### Why use Google Maps Reviews Scraper?

- **50+ reviews/second** — extract 1,000 reviews in under 30 seconds
- **$0.20 per 1,000 reviews** — one of the cheapest on the Apify Store
- **Lightweight** — runs on 256 MB, no heavy infrastructure
- **Reliable** — pure API calls, no flaky page rendering or captchas
- **Multiple input formats** — URLs, Place IDs, CIDs — mix and match

### What data does Google Maps Reviews Scraper extract?

Each review includes:

| Field | Description |
|-------|-------------|
| `review_id` | Unique Google review identifier |
| `rating` | Star rating (1–5) |
| `author` | Reviewer display name |
| `user_id` | Google contributor numeric ID |
| `text` | Full review text (null for rating-only reviews) |
| `timestamp` | Unix timestamp (seconds) |
| `date_iso` | ISO 8601 timestamp (UTC) |
| `date_relative` | Relative date ("2 weeks ago") |
| `language` | Detected language code (en, es, fr…) |
| `place_url` | Source Google Maps URL |

### How to use Google Maps Reviews Scraper

1. **Paste one or more place identifiers** — Google Maps URLs, Place IDs (`ChIJ...`), or CID URLs
2. **Set the number of reviews** — start with 10 for testing, then scale up
3. **Choose sort order** — newest, most relevant, highest, or lowest rating
4. **Click Start**

#### Supported input formats

- **Google Maps URL** — `https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z`
- **Place ID** — `ChIJLU7jZClu5kcR4PcOOO6p3I0` (from Google Maps API or Places search)
- **CID URL** — `https://maps.google.com/?cid=11223344556677889900`
- **Short URL** — `https://goo.gl/maps/...` (resolved automatically)

You can mix formats in the same run.

#### Filtering reviews by date

Set "Only reviews newer than" to a date and the scraper will stop collecting once it reaches reviews older than that date. Ideal for daily monitoring — run on a schedule and only collect new reviews since your last run.

#### Sorting options

All sorting is done **server-side by Google**, so you get the exact results you'd see in the Maps interface:

- **Newest first** — most recent reviews, ideal for monitoring
- **Most relevant** — Google's default ranking
- **Highest rating** — 5-star reviews first
- **Lowest rating** — 1-star reviews first, great for complaint analysis

### Input example

```json
{
  "placeUrls": [
    "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
  ],
  "maxReviewsPerPlace": 500,
  "sort": "newest"
}
```

### Output example

```json
{
  "review_id": "ChdDSUhNMGOgS0VoRTRsdXRzVG9XYjBfZ1EQ",
  "rating": 5,
  "author": "Maria Garcia",
  "user_id": "117234567890123456789",
  "text": "Amazing experience! The views from the top are breathtaking. Worth every minute of the wait.",
  "timestamp": 1718900000,
  "date_iso": "2025-06-20T15:30:00+00:00",
  "date_relative": "a month ago",
  "language": "en",
  "place_url": "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
}
```

### 💰 How much does it cost to scrape Google Maps reviews?

Google Maps Reviews Scraper uses pay-per-result pricing — **$0.20 per 1,000 reviews** ($0.0002 per review).

| Plan | Monthly credit | Approx. reviews |
|------|---------------|-----------------|
| Free trial | $5 (one-time) | ~25,000 reviews |
| Starter ($49/mo) | $49 | ~245,000 reviews |
| Scale ($149/mo) | $149 | ~745,000 reviews |

> 💡 **Tip**: Start with 10 reviews per place to validate costs before scaling up.

### Performance

Tested on real places with thousands of reviews:

| Reviews | Time | Speed | Memory |
|---------|------|-------|--------|
| 500 | 15s | 33 rev/s | 57 MB |
| 1,000 | 26s | 39 rev/s | 64 MB |

### Integrations

Export results in JSON, CSV, or Excel. Connect to Google Sheets, Slack, email, or any webhook via [Apify integrations](https://docs.apify.com/platform/integrations).

Schedule runs to monitor new reviews automatically — daily, hourly, or on any cron schedule.

### Limitations

- Reviews are extracted as Google returns them. Rating-only reviews (no text) will have `text: null`.
- The `language` field is Google's auto-detection and may be null for very short reviews.
- Google Maps URLs must include the place identifier. Short URLs (goo.gl) are resolved automatically.

### Related Actors

| Actor | Description |
|-------|-------------|
| [Google Maps Places Scraper](https://apify.com/rastriq/google-maps-places-scraper) | Find places by category or area — get names, addresses, ratings, phones, websites, and more |

### FAQ

#### Is scraping Google Maps reviews legal?

Google Maps reviews are publicly visible data. Extracting publicly available information for analysis, research, or business intelligence is generally permitted. Google Maps Reviews Scraper accesses the same data any visitor can see — no login or private data is involved.

#### Does Google Maps Reviews Scraper require an API key?

No. Google Maps Reviews Scraper works out of the box with no API keys, no Google Cloud account, and no authentication setup. Just paste your place URLs and click Start.

#### How many reviews can I extract?

There is no hard limit. Google Maps Reviews Scraper can extract all publicly visible reviews for any place — from a handful to 50,000+. Set `maxReviewsPerPlace` to `0` to collect every available review. For large volumes, start with a small test (10–50 reviews) to verify the output format meets your needs.

#### Can I monitor reviews daily?

Yes. Use Apify's built-in [scheduling](https://docs.apify.com/platform/schedules) to run Google Maps Reviews Scraper on any interval — daily, hourly, or custom cron. Combine with the "Only reviews newer than" date filter to collect only new reviews each run, avoiding duplicates and keeping costs low.

### 🇪🇸 Google Maps Reviews Scraper en español

**Google Maps Reviews Scraper** extrae reseñas de cualquier lugar en Google Maps: restaurantes, hoteles, tiendas, monumentos o cualquier negocio. Obtén el texto completo de la reseña, puntuación, autor, fecha e idioma.

**Precio**: $0.20 por cada 1,000 reseñas ($0.0002 por reseña). Con la prueba gratuita de $5 puedes extraer aproximadamente 25,000 reseñas.

**Cómo usar**: Pega una o más URLs de Google Maps, configura el número de reseñas y el orden (más recientes, más relevantes, mejor o peor puntuación) y haz clic en Iniciar.

### Need to find places first?

Use [Google Maps Places Scraper](https://apify.com/rastriq/google-maps-places-scraper) to discover businesses by search term and location. It returns names, addresses, phones, websites, ratings, review histograms, and more. Then feed the URLs into Google Maps Reviews Scraper to get the full review text for each place.

# Actor input Schema

## `placeUrls` (type: `array`):

Google Maps URLs of the places to scrape. Copy the full URL from your browser address bar.

## `placeIdentifiers` (type: `string`):

Alternative to URLs above. Paste Place IDs or CIDs, one per line.<br><br><b>Place ID</b>: <code>ChIJLU7jZClu5kcR4PcOOO6p3I0</code><br><b>CID</b>: <code>11223344556677889900</code><br><b>CID URL</b>: <code>https://maps.google.com/?cid=...</code><br><br>You can use this field together with Place URLs above — all will be merged.

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

Maximum number of reviews to extract from each place. Set to <code>0</code> to extract <b>all available reviews</b>.<br><br>Start with a low number (10–50) for testing. A typical place has 100–5,000 reviews; landmarks can have 50,000+.

## `sort` (type: `string`):

Server-side sort order applied before extraction.<br><br><b>Newest</b> — most recent reviews first (best for monitoring)<br><b>Most relevant</b> — Google's default ranking<br><b>Highest rating</b> — 5-star reviews first<br><b>Lowest rating</b> — 1-star reviews first (great for sentiment analysis)

## `reviewsNewerThan` (type: `string`):

Only extract reviews published after this date. Sort is automatically set to <b>Newest first</b> when a date filter is active.<br><br>Useful for monitoring: run daily and only collect new reviews since your last run.

## Actor input object example

```json
{
  "placeUrls": [
    "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
  ],
  "maxReviewsPerPlace": 10,
  "sort": "newest"
}
```

# Actor output Schema

## `reviews` (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 = {
    "placeUrls": [
        "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
    ],
    "maxReviewsPerPlace": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/gmaps-reviews-tracker").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 = {
    "placeUrls": ["https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"],
    "maxReviewsPerPlace": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/gmaps-reviews-tracker").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 '{
  "placeUrls": [
    "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z"
  ],
  "maxReviewsPerPlace": 10
}' |
apify call rastriq/gmaps-reviews-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rastriq/gmaps-reviews-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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