# Fast Google Maps Reviews Scraper API | Extract Ratings & Text (`theagents/google-maps-reviews`) Actor

Extract valuable business reviews from Google Maps at high speed. Our cost-effective scraper delivers comprehensive review data, ratings, and customer sentiments to fuel your business intelligence. Monitor brand reputation, analyze competitors, make data-driven decisions with unmatched reliability.

- **URL**: https://apify.com/theagents/google-maps-reviews.md
- **Developed by:** [Agents](https://apify.com/theagents) (community)
- **Categories:** Travel, Social media, Lead generation
- **Stats:** 334 total users, 12 monthly users, 99.3% runs succeeded, 12 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

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

## ⭐ Fast Google Maps Reviews Scraper API: Extract Review Text, Ratings & Reviewer Profiles at Scale

The **Google Maps Reviews Scraper** is an Apify Actor that extracts full review text, star ratings, reviewer profiles, review photos, and location metadata from any Google Maps business listing—without requiring a Google Places API key. This **google maps review scraper api** collects 25+ data fields per review including review context, GPS coordinates, business categories, and neighborhood data.

**Why scrapers instead of the Google Places API?** The Google Places API charges $17 per 1,000 reviews and limits you to 5 reviews per request. This scraper delivers complete review data at a fraction of that cost—$0.40 per 1,000 reviews with no per-request limits. **No API key required**—extract review text, ratings, and reviewer profiles at scale. First 40 reviews FREE with every query.

Use this **google maps review data extractor** for sentiment analysis, reputation monitoring, local SEO auditing, or competitive intelligence. **Download Google Maps reviews** to JSON, CSV, or Excel for customer feedback analysis, voice of customer (VoC) research, and brand monitoring.

**💰 Event-Based Pricing:** $0.016/query (first ~40 reviews FREE) | $0.0004/review | **🔓 No Google API key required**

***

### 📋 Table of Contents

1. [What Does the Google Maps Reviews Scraper Do?](#-what-does-the-google-maps-reviews-scraper-do)
2. [Features & Capabilities](#-features--capabilities)
3. [Pricing](#-pricing)
4. [Input Parameters](#-input-parameters)
5. [Review Sort Strategy](#-review-sort-strategy)
6. [Output Format & Data Fields](#-output-format--data-fields)
7. [Custom Map Function](#-custom-map-function)
8. [Related Scrapers](#-related-scrapers)
9. [Demo Mode & Free Testing](#-demo-mode--free-testing)
10. [Automated Monitoring & Scheduling](#-automated-monitoring--scheduling)
11. [Quick Start Guide](#-quick-start-guide)
12. [Use Cases & Industries](#-use-cases--industries)
13. [Troubleshooting](#-troubleshooting)
14. [Frequently Asked Questions](#-frequently-asked-questions)
15. [Contact](#-contact)

***

### 🔍 What Does the Google Maps Reviews Scraper Do?

**Google Maps review extraction** is the automated process of collecting reviews, star ratings, reviewer profiles, and location metadata from Google Maps business listings. Google Maps is the world's largest local review platform, with over 300 million businesses listed and billions of reviews—making it the single most important source for local business intelligence.

The **Agents Google Maps Reviews Scraper** is a high-performance data extraction tool built to scrape Google Maps reviews from any business listing at scale. Extract comprehensive review data quickly and reliably—without needing the Google Places API, OAuth tokens, or complex setup.

This **google reviews scraper** serves as a cost-effective alternative to the official Google Places API for bulk review collection. The Places API charges $17/1,000 reviews and returns only 5 reviews per request—this Actor delivers the same data at **$0.40/1,000 reviews** with no per-request limits.

#### What You Get From Every Review

When you extract Google Maps reviews, you receive:

**⭐ Review-Level Data**

- Full review text (complete, not truncated)
- Star rating (1–5)
- Publication date and last edited date
- Review photos (full URLs)
- Likes count
- Review context (visit type, wait time, reservation status)
- Unique review ID and direct review URL

**👤 Reviewer-Level Data**

- Reviewer name and profile URL
- Total number of reviews by this reviewer
- Reviewer profile photo URL

**📍 Business & Location Data**

- Business name, address, neighborhood, city, postal code
- GPS coordinates (latitude, longitude)
- Business categories (e.g., "Restaurant", "Tourist attraction")
- Overall business rating (totalScore)
- Place ID, CID, and FID identifiers
- Google Maps URL

### ⚡ Features & Capabilities

#### Input Flexibility

| Input Type     | Example                                             | Best For                            |
| -------------- | --------------------------------------------------- | ----------------------------------- |
| **Direct URL** | `https://www.google.com/maps/place/Restaurant+Name` | Single business review extraction   |
| **Place FID**  | `0x89c258f97bdb102b:0xea9f8fc0b3ffff55`             | Batch review extraction by place ID |

#### Core Features

- **🚀 High-Speed Extraction** — Extract hundreds of reviews efficiently
- **🆓 Free Tier** — First ~40 reviews FREE with every query
- **🔓 No API Key** — No Google Places API key or OAuth required
- **⭐ Full Review Text** — Complete review body, not truncated excerpts
- **👤 Reviewer Profiles** — Reviewer name, review count, profile photo
- **📸 Review Photos** — Full image URLs from reviewer-uploaded photos
- **🗺️ Location Data** — GPS coordinates, address, neighborhood, categories
- **📊 Review Context** — Visit type, wait time, reservation info
- **🔄 Sort Options** — Sort by newest, relevant, highest, or lowest rating
- **🌐 Language Filter** — Extract reviews in specific languages
- **📁 Multiple Export Formats** — JSON, CSV, Excel direct download
- **⚙️ Custom Transformations** — Shape output with custom map functions
- **🔗 API Integration** — RESTful API for Python, Node.js, or any HTTP client
- **⏰ Scheduled Runs** — Automate recurring extraction for **reputation monitoring**

#### Agents Review Intelligence Suite

This **google maps reviews scraper** is part of the [Agents](https://apify.com/theagents?fpr=yhdrb) cross-platform review intelligence suite on Apify—built by ex-Big Tech engineers and data specialists for precision at scale:

| Tool                                                                                        | What It Extracts                                   | Best For                                       |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------- |
| ⭐ **Google Maps Reviews Scraper**                                                           | Reviews, ratings, reviewer profiles, location data | Local business intelligence **(You are here)** |
| ⭐ **[Trustpilot Reviews Scraper](https://apify.com/theagents/trustpilot-reviews?fpr=yhdrb)**   | Reviews, TrustScores, company replies              | SaaS/B2B analysis                              |
| ⭐ **[Yelp Reviews Scraper](https://apify.com/theagents/yelp-reviews?fpr=yhdrb)**               | Reviews, ratings, reviewer profiles                | Restaurant/hospitality                         |
| 🏪 **[Yelp Business Scraper](https://apify.com/theagents/yelp-business?fpr=yhdrb)**             | Business profiles, ratings, contact                | Lead generation                                |
| ⭐ **[TripAdvisor Reviews Scraper](https://apify.com/theagents/tripadvisor-reviews?fpr=yhdrb)** | Hotel/restaurant reviews, ratings                  | Hospitality intelligence                       |

***

### 💰 Pricing

#### Event-Based Cost Structure

Pay only for what you scrape—no subscriptions, no hidden fees. This **google maps review scraper api** uses transparent pay-per-event pricing:

| Event Type       | Price          | What's Included        |
| ---------------- | -------------- | ---------------------- |
| **Query**        | $0.016/query   | First ~40 reviews FREE |
| **Dataset Item** | $0.0004/review | Each review in results |

#### Cost Comparison: This Scraper vs. Google Places API

| Feature                    | This Scraper               | Google Places API   |
| -------------------------- | -------------------------- | ------------------- |
| **Cost per 1,000 reviews** | ~$0.40                     | $17.00              |
| **Reviews per request**    | Unlimited (use `maxItems`) | 5 max               |
| **API key required**       | ❌ No                       | ✅ Yes               |
| **Free tier**              | ~40 reviews FREE/query     | $200 monthly credit |
| **Rate limits**            | No hard limits             | Strict quotas       |
| **Review photos**          | ✅ Full URLs                | ❌ Not included      |
| **Reviewer profiles**      | ✅ Full                     | ⚠️ Limited           |
| **Review context**         | ✅ Yes                      | ❌ No                |

> **Example:** Extracting 10,000 reviews costs approximately **$4.02** with this scraper vs. **$170.00** with the Google Places API—a **97.6% cost reduction**.

***

### 📥 Input Parameters

| Field               | Type   | Description                                                                              | Default  |
| ------------------- | ------ | ---------------------------------------------------------------------------------------- | -------- |
| `startUrls`         | array  | Direct Google Maps URLs from which to extract reviews                                    | `[]`     |
| `placeFIDs`         | array  | Google Maps place FIDs of businesses to scrape (alternative to URLs)                     | `[]`     |
| `sort`              | string | Review sort order: `newest`, `relevant`, `highest`, `lowest`                             | `newest` |
| `language`          | string | Language code for reviews (e.g., `en`, `es`, `de`, `fr`, `ja`)                           | `en`     |
| `maxItems`          | number | Maximum number of reviews to extract                                                     | `10`     |
| `customMapFunction` | string | JavaScript function to transform each review object (transformation only, not filtering) | `null`   |

#### Input Examples

**Single Business — Direct URL:**

```json
{
    "startUrls": ["https://www.google.com/maps/place/The+Museum+of+Modern+Art"],
    "sort": "newest",
    "language": "en",
    "maxItems": 500
}
```

**Multiple Businesses — Place FIDs:**

```json
{
    "placeFIDs": [
        "0x89c258f97bdb102b:0xea9f8fc0b3ffff55",
        "0x89c25090129c363d:0x40c6a5770d25022b"
    ],
    "sort": "relevant",
    "maxItems": 200
}
```

***

### 🔄 Review Sort Strategy

Choosing the right sort order is critical for your analysis. Each option serves different use cases:

| Sort Option | What It Returns                  | Best For                                           |
| ----------- | -------------------------------- | -------------------------------------------------- |
| `newest`    | Most recent reviews first        | Trend monitoring, new feedback tracking            |
| `relevant`  | Google's default relevance order | General analysis, quality reviews                  |
| `highest`   | 5-star reviews first             | Positive sentiment extraction                      |
| `lowest`    | 1-star reviews first             | **Negative review tracking**, pain point discovery |

#### When to Use Each Sort

- **Reputation monitoring** → `newest` to catch new feedback in real time
- **Sentiment analysis** → `relevant` for a balanced sample of reviews
- **Competitive benchmarking** → `lowest` to identify competitor weaknesses
- **Marketing testimonials** → `highest` to extract positive customer quotes

***

### 📦 Output Format & Data Fields

Each extracted review is a structured JSON object containing 25+ fields. Here is a trimmed sample (review photos array shortened for readability):

```json
{
    "type": "review",
    "reviewerId": "116899875829771058991",
    "reviewerUrl": "https://www.google.com/maps/contrib/116899875829771058991?hl=en-US",
    "reviewerName": "Andrew Lim",
    "reviewerNumberOfReviews": 177,
    "reviewerPhotoUrl": "https://lh3.googleusercontent.com/a-/ALV-UjWk8Ao...",
    "text": "Located in Midtown Manhattan, the Museum of Modern Art (MoMA) is one of the most influential modern and contemporary art museums in the world...",
    "reviewImageUrls": [
        "https://lh3.googleusercontent.com/geougc-cs/AIHozJIMNafLI8b...",
        "https://lh3.googleusercontent.com/geougc-cs/AIHozJKXsOjqKje..."
    ],
    "publishedAtDate": "2025-03-21T03:31:29Z",
    "lastEditedAtDate": "2025-03-21T03:31:29Z",
    "likesCount": null,
    "reviewId": "ChZDSUhNMG9nS0VJQ0FnTUN3OF9Dd1VREAE",
    "reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7...",
    "stars": 5,
    "reviewContext": {
        "Visited on": "Weekday",
        "Wait time": "No wait",
        "Reservation recommended": "Yes"
    },
    "placeId": "ChIJKxDbe_lYwokRVf__s8CPn-o",
    "location": {
        "lat": 40.76151392902717,
        "lng": -73.98047011349875
    },
    "address": "The Museum of Modern Art, 11 W 53rd St, New York, NY 10019",
    "neighborhood": "Manhattan",
    "street": "11 W 53rd St",
    "city": "New York",
    "postalCode": "10019",
    "categories": ["Modern art museum", "Art gallery", "Art museum", "Museum", "Tourist attraction"],
    "title": "The Museum of Modern Art",
    "totalScore": 4.6,
    "url": "https://www.google.com/maps/preview/place/The+Museum+of+Modern+Art...",
    "price": null,
    "cid": "-1540354489721028779",
    "fid": "0x89c258f97bdb102b:0xea9f8fc0b3ffff55",
    "scrapedAt": "2025-04-04T12:03:59.811Z"
}
```

#### Complete Field Reference

| Field                     | Type   | Description                                         |
| ------------------------- | ------ | --------------------------------------------------- |
| `type`                    | string | Always `"review"`                                   |
| `reviewerId`              | string | Unique Google reviewer ID                           |
| `reviewerUrl`             | string | Direct link to reviewer's Google Maps profile       |
| `reviewerName`            | string | Reviewer's display name                             |
| `reviewerNumberOfReviews` | number | Total reviews written by this reviewer              |
| `reviewerPhotoUrl`        | string | Reviewer's profile photo URL                        |
| `text`                    | string | Full review text (complete, not truncated)          |
| `reviewImageUrls`         | array  | URLs of photos uploaded with the review             |
| `publishedAtDate`         | string | ISO 8601 publication timestamp                      |
| `lastEditedAtDate`        | string | ISO 8601 last edit timestamp                        |
| `likesCount`              | number | Number of "helpful" votes on the review             |
| `reviewId`                | string | Unique review identifier                            |
| `reviewUrl`               | string | Direct link to the review                           |
| `stars`                   | number | Star rating (1–5)                                   |
| `reviewContext`           | object | Contextual info (visit day, wait time, reservation) |
| `placeId`                 | string | Google Maps Place ID                                |
| `location`                | object | GPS coordinates (`lat`, `lng`)                      |
| `address`                 | string | Full business address                               |
| `neighborhood`            | string | Neighborhood name                                   |
| `street`                  | string | Street address                                      |
| `city`                    | string | City name                                           |
| `postalCode`              | string | Postal/ZIP code                                     |
| `categories`              | array  | Business category tags                              |
| `title`                   | string | Business name                                       |
| `totalScore`              | number | Overall business rating (1.0–5.0)                   |
| `url`                     | string | Google Maps business URL                            |
| `price`                   | string | Price level (if available)                          |
| `cid`                     | string | Google CID identifier                               |
| `fid`                     | string | Google FID identifier                               |
| `scrapedAt`               | string | ISO 8601 timestamp of extraction                    |

#### Data Fields by Use Case

| Use Case                     | Key Fields                                                           |
| ---------------------------- | -------------------------------------------------------------------- |
| **Sentiment Analysis**       | `text`, `stars`, `publishedAtDate`, `reviewContext`                  |
| **Reputation Monitoring**    | `stars`, `text`, `publishedAtDate`, `reviewerName`                   |
| **Local SEO Auditing**       | `totalScore`, `categories`, `city`, `neighborhood`, `address`        |
| **Competitive Intelligence** | `stars`, `text`, `title`, `totalScore`, `categories`                 |
| **NLP Training Data**        | `text`, `stars` (as label), `language`                               |
| **Geographic Analysis**      | `location.lat`, `location.lng`, `city`, `postalCode`, `neighborhood` |

***

### ⚙️ Custom Map Function

Transform each review before it's saved to the dataset. The `customMapFunction` parameter accepts a JavaScript function that reshapes every review object. Use this to extract specific fields, rename properties, or calculate derived values.

**Important:** The custom map function is for **transformation only**, not filtering. Every review will still be saved—you're changing its shape, not deciding whether to include it.

#### Example: Flatten for Sentiment Analysis

```javascript
(review) => ({
    business: review.title,
    rating: review.stars,
    text: review.text,
    date: review.publishedAtDate,
    city: review.city,
    visitContext: review.reviewContext?.["Visited on"] || null,
    reviewerReviewCount: review.reviewerNumberOfReviews
})
```

#### Example: Extract Location Intelligence

```javascript
(review) => ({
    businessName: review.title,
    latitude: review.location?.lat,
    longitude: review.location?.lng,
    neighborhood: review.neighborhood,
    city: review.city,
    postalCode: review.postalCode,
    categories: review.categories?.join(", "),
    overallRating: review.totalScore,
    reviewRating: review.stars
})
```

***

### 🌴 Related Scrapers

#### 📦 Agents Review Intelligence Suite

All tools below are built and maintained by [Agents](https://apify.com/theagents?fpr=yhdrb)—a team of ex-Big Tech engineers, former ad agency strategists, and data specialists delivering intelligence, precision, and impact at scale.

| Tool                                                                                        | What It Extracts                                   | Best For                                       |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------- |
| ⭐ **Google Maps Reviews Scraper**                                                           | Reviews, ratings, reviewer profiles, location data | Local business intelligence **(You are here)** |
| ⭐ **[Trustpilot Reviews Scraper](https://apify.com/theagents/trustpilot-reviews?fpr=yhdrb)**   | Reviews, TrustScores, company replies              | SaaS/B2B analysis                              |
| ⭐ **[Yelp Reviews Scraper](https://apify.com/theagents/yelp-reviews?fpr=yhdrb)**               | Reviews, ratings, reviewer profiles                | Restaurant/hospitality                         |
| 🏪 **[Yelp Business Scraper](https://apify.com/theagents/yelp-business?fpr=yhdrb)**             | Business profiles, ratings, contact                | Lead generation                                |
| ⭐ **[TripAdvisor Reviews Scraper](https://apify.com/theagents/tripadvisor-reviews?fpr=yhdrb)** | Hotel/restaurant reviews, ratings                  | Hospitality intelligence                       |

***

### 🆓 Demo Mode & Free Testing

If you run on Apify's Free plan, you can still use this **google maps reviews scraper** with limited results. For unrestricted usage and to unlock the full power of this **google maps review scraper api** at scale, subscribe to a paid Apify plan.

**Free Plan Benefits:**

- ✅ First ~40 reviews FREE with every query
- ✅ Test the API before committing to larger runs
- ✅ Perfect for validating output format and data quality
- ✅ No credit card required to start

**Upgrade for Full Access:**

- 🚀 No review limits per query
- 🔗 Full API access for integration with your systems
- ⏰ Scheduled runs for automated monitoring
- 📊 Webhook notifications for pipeline automation

***

### ⏰ Automated Monitoring & Scheduling

New Google Maps reviews appear daily. For **reputation management** and **brand monitoring**, set up automated recurring runs to capture new reviews as they're posted.

#### Why Schedule Review Extraction?

- **Reputation monitoring** — Catch negative reviews early for rapid response
- **Rating trend tracking** — Monitor score changes over time
- **Competitive intelligence** — Track competitor review trends weekly
- **Local SEO monitoring** — Detect ranking signal changes early
- **Agency reporting** — Automated data for **client reputation dashboards**

#### How to Set Up Scheduled Runs

1. Open the Actor in Apify Console
2. Configure your input parameters
3. Click **Schedule** and set frequency (hourly, daily, weekly)
4. Optionally add a **webhook** to push new data to your pipeline

#### Webhook Integration

Combine scheduled runs with webhooks to build fully automated review monitoring:

```
Scheduled Run → New Reviews Extracted → Webhook fires → Your system receives data
```

Use webhooks to trigger:

- Slack/email alerts for negative reviews (1-2 stars)
- Database updates with new review data
- Dashboard refreshes with latest sentiment metrics
- CRM updates for customer feedback tracking

***

### 🚀 Quick Start Guide

#### For Non-Technical Users (Apify Console)

1. Go to **[Google Maps Reviews Scraper](https://apify.com/theagents/google-maps-reviews?fpr=yhdrb)** on Apify
2. Click **Try for free**
3. Paste your Google Maps business URL into `startUrls`
4. Set `maxItems` to your desired review count
5. Click **Start** and wait for results
6. **Export Google Maps reviews to CSV** from the Storage tab

#### For Developers (API → JSON)

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("agents/google-maps-reviews").call(run_input={
    "startUrls": ["https://www.google.com/maps/place/The+Museum+of+Modern+Art"],
    "sort": "newest",
    "maxItems": 500
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

#### For Marketing Teams (Reputation Monitoring)

```json
{
    "startUrls": ["https://www.google.com/maps/place/Your+Business+Name"],
    "sort": "newest",
    "language": "en",
    "maxItems": 100
}
```

→ Schedule weekly, export to Google Sheets, and track review sentiment over time.

#### For Researchers (Multi-Location Analysis)

```json
{
    "placeFIDs": [
        "0x89c258f97bdb102b:0xea9f8fc0b3ffff55",
        "0x89c25090129c363d:0x40c6a5770d25022b",
        "0x89c259a9aeb1c6b5:0x35b1cfbc380f720"
    ],
    "sort": "relevant",
    "language": "en",
    "maxItems": 1000
}
```

→ Compare reviews across multiple locations for geographic sentiment analysis.

***

### 🎯 Use Cases & Industries

#### Sentiment Analysis & NLP

Extract thousands of Google reviews with full text and star ratings for training sentiment classifiers, topic modeling, or aspect-based sentiment analysis. Each review includes structured metadata (date, rating, reviewer history) that enriches NLP pipelines.

**Fields to use:** `text`, `stars`, `publishedAtDate`, `reviewContext`, `categories`

#### Reputation Monitoring & Brand Management

Track how customers talk about your business in real time. Schedule recurring extractions sorted by `newest` to catch negative reviews within hours of posting. Compare your rating trends against competitors.

**Fields to use:** `stars`, `text`, `publishedAtDate`, `title`, `totalScore`

#### Local SEO & GBP Optimization

Audit your Google Business Profile performance by analyzing review volume, rating distribution, and keyword mentions across locations. Identify which locations need attention and what topics customers mention most.

**Fields to use:** `totalScore`, `stars`, `text`, `city`, `neighborhood`, `categories`

#### Competitive Intelligence

Monitor competitor review trends to identify their strengths and weaknesses. Extract reviews sorted by `lowest` to discover pain points you can exploit, or by `highest` to understand what customers value most.

**Fields to use:** `stars`, `text`, `title`, `totalScore`, `categories`, `reviewContext`

#### Hospitality & Restaurant Analytics

Analyze guest feedback across multiple properties. Track seasonal patterns, identify service issues, and benchmark against competitors. The `reviewContext` field reveals visit patterns (weekday vs. weekend, wait times, reservation habits).

**Fields to use:** `text`, `stars`, `reviewContext`, `publishedAtDate`, `location`

#### Academic Research

Build large-scale review datasets for consumer behavior studies, tourism research, or urban analytics. GPS coordinates and neighborhood data enable geographic analysis of sentiment patterns.

**Fields to use:** `text`, `stars`, `location`, `city`, `neighborhood`, `postalCode`, `categories`

***

### 🛠 Troubleshooting

#### Common Issues and Solutions

| Issue                           | Cause                       | Solution                                                           |
| ------------------------------- | --------------------------- | ------------------------------------------------------------------ |
| **Fewer reviews than expected** | Language filter too narrow  | Try removing the `language` parameter or set to the local language |
| **Empty results**               | Invalid URL or place FID    | Verify the Google Maps URL opens correctly in a browser            |
| **High costs**                  | `maxItems` set too high     | Start with smaller batches (100-500) and scale up                  |
| **Slow extraction**             | Very popular locations      | Normal for businesses with 10,000+ reviews—allow more time         |
| **Missing review text**         | Reviewer left only a rating | Some Google reviews have stars but no text—this is expected        |

#### Performance Tips

- **Start small:** Use the free tier (~40 reviews) to validate your setup before scaling
- **Language matters:** Set `language` to the dominant language of the business's location for maximum coverage
- **Sort strategically:** Use `newest` for monitoring, `relevant` for balanced analysis
- **Batch efficiently:** Group multiple businesses in a single run using `placeFIDs` for cost efficiency
- **Monitor costs:** Check the Apify Console billing section to track per-run costs

***

### ❓ Frequently Asked Questions

#### What Google Maps review data can I extract?

Extract **full review text**, **star ratings (1–5)**, **review dates**, **review photos**, **likes count**, **review context** (visit type, wait time, reservation status), **reviewer names**, **reviewer review counts**, **reviewer profile URLs**, **GPS coordinates**, **business categories**, **neighborhood data**, and **business ratings**—all in structured JSON or CSV format.

#### Can I export Google Maps reviews to CSV?

Yes. **Download Google Maps reviews** directly from Apify Console in JSON, CSV, or Excel format. Perfect for **export Google Maps reviews to CSV** workflows and spreadsheet analysis.

#### How is this different from the Google Places API?

The Google Places API charges **$17 per 1,000 reviews**, returns only **5 reviews per request**, and requires an API key with billing enabled. This scraper delivers the same data at **$0.40 per 1,000 reviews** with no per-request limits and no API key. It also extracts review photos, review context, and full reviewer profiles—data the Places API doesn't provide.

#### Can I use Python to scrape Google Maps reviews?

Yes! Full Python support via the Apify Client library. See the [Quick Start Guide](#-quick-start-guide) above for **google maps reviews scraper** Python integration.

#### Can I scrape reviews in multiple languages?

Yes. Set the `language` parameter to any ISO language code (e.g., `en`, `es`, `de`, `fr`, `ja`, `ko`). To get all reviews regardless of language, omit the language parameter.

#### Can I extract reviews from multiple businesses at once?

Yes. Provide multiple URLs in `startUrls` or multiple place identifiers in `placeFIDs`. Each business is processed sequentially within a single Actor run.

#### How many reviews can I extract per business?

There is no hard limit from the scraper side. Use the `maxItems` parameter to control how many reviews to extract. Google Maps businesses can have anywhere from a few reviews to hundreds of thousands.

#### What is the `reviewContext` field?

The `reviewContext` object contains contextual information the reviewer provided about their visit—such as the day of the week they visited, wait time, and whether a reservation is recommended. Not all reviews include this data.

#### Can I filter reviews by date?

The scraper doesn't have a built-in date filter, but you can use the `sort: "newest"` option combined with `maxItems` to get the most recent reviews. For more precise date filtering, use the `customMapFunction` to check the `publishedAtDate` field.

#### Is this legal to use?

This tool extracts publicly available data from Google Maps. Always ensure your use case complies with Google's Terms of Service and applicable data protection regulations.

#### This Scraper vs. Google Places API

| Feature                | This Scraper     | Google Places API   |
| ---------------------- | ---------------- | ------------------- |
| API Key Required       | ❌ No             | ✅ Yes               |
| Cost per 1,000 reviews | ~$0.40           | $17.00              |
| Reviews per request    | Unlimited        | 5 max               |
| Free Tier              | ~40 reviews FREE | $200 monthly credit |
| Review Photos          | ✅ Full URLs      | ❌ Not included      |
| Review Context         | ✅ Yes            | ❌ No                |
| Reviewer Profiles      | ✅ Full           | ⚠️ Limited           |

***

### 📞 Contact

**Built by [Agents](https://apify.com/theagents?fpr=yhdrb)** — Where others search, we uncover. Our team of ex-Big Tech engineers, growth hackers, and data specialists builds high-performance scraping tools engineered for speed, precision, and reliability.

For questions or further assistance:

- **Email:** Reach out at **whoaretheagents@gmail.com**
- **Discord:** Join our community to connect with our support team

***

**Ready to start extracting Google Maps review data?** With transparent event-based pricing, first ~40 reviews FREE, and no API key required, this **Google Maps Reviews Scraper API** by [Agents](https://apify.com/theagents?fpr=yhdrb) is the ultimate tool for **sentiment analysis**, **reputation monitoring**, **local SEO auditing**, and **competitive intelligence**. Start scraping today! ⭐

# Actor input Schema

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

URLs to start with. It should be place URL

## `placeFIDs` (type: `array`):

Place FIDs to start with. `fid` attribute of the place must be used

## `reviewIds` (type: `array`):

Review IDs to start with. `id` attribute of the review must be used

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

Sorts reviews by the given option.

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

Restricts reviews to the given language, given by an ISO 639-1 code.

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

Maximum number of items that you want as output.

## `customMapFunction` (type: `string`):

Function that takes each of the objects as argument and returns data that will be mapped by the function itself.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.google.com/maps/place/Top+of+The+Rock/@40.7614367,-73.9802019,744m/data=!3m2!1e3!5s0x89c258fecf0c6825:0xb825fcec483ad5d5!4m14!1m7!3m6!1s0x89c258f97bdb102b:0xea9f8fc0b3ffff55!2sThe+Museum+of+Modern+Art!8m2!3d40.7614327!4d-73.9776216!16zL20vMGhoams!3m5!1s0x89c258ff31cabb7b:0xda17e23e0f1fc620!8m2!3d40.7593495!4d-73.9794087!16s%2Fg%2F11cmgnblyq?hl=en-US&entry=ttu&g_ep=EgoyMDI1MDMyNS4xIKXMDSoASAFQAw%3D%3D"
  ],
  "sort": "newest",
  "language": "en",
  "maxItems": 10,
  "customMapFunction": "(object) => { return {...object} }"
}
```

# 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 = {
    "startUrls": [
        "https://www.google.com/maps/place/Top+of+The+Rock/@40.7614367,-73.9802019,744m/data=!3m2!1e3!5s0x89c258fecf0c6825:0xb825fcec483ad5d5!4m14!1m7!3m6!1s0x89c258f97bdb102b:0xea9f8fc0b3ffff55!2sThe+Museum+of+Modern+Art!8m2!3d40.7614327!4d-73.9776216!16zL20vMGhoams!3m5!1s0x89c258ff31cabb7b:0xda17e23e0f1fc620!8m2!3d40.7593495!4d-73.9794087!16s%2Fg%2F11cmgnblyq?hl=en-US&entry=ttu&g_ep=EgoyMDI1MDMyNS4xIKXMDSoASAFQAw%3D%3D"
    ],
    "sort": "newest",
    "language": "en",
    "maxItems": 10,
    "customMapFunction": (object) => { return {...object} }
};

// Run the Actor and wait for it to finish
const run = await client.actor("theagents/google-maps-reviews").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/Top+of+The+Rock/@40.7614367,-73.9802019,744m/data=!3m2!1e3!5s0x89c258fecf0c6825:0xb825fcec483ad5d5!4m14!1m7!3m6!1s0x89c258f97bdb102b:0xea9f8fc0b3ffff55!2sThe+Museum+of+Modern+Art!8m2!3d40.7614327!4d-73.9776216!16zL20vMGhoams!3m5!1s0x89c258ff31cabb7b:0xda17e23e0f1fc620!8m2!3d40.7593495!4d-73.9794087!16s%2Fg%2F11cmgnblyq?hl=en-US&entry=ttu&g_ep=EgoyMDI1MDMyNS4xIKXMDSoASAFQAw%3D%3D"],
    "sort": "newest",
    "language": "en",
    "maxItems": 10,
    "customMapFunction": "(object) => { return {...object} }",
}

# Run the Actor and wait for it to finish
run = client.actor("theagents/google-maps-reviews").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/Top+of+The+Rock/@40.7614367,-73.9802019,744m/data=!3m2!1e3!5s0x89c258fecf0c6825:0xb825fcec483ad5d5!4m14!1m7!3m6!1s0x89c258f97bdb102b:0xea9f8fc0b3ffff55!2sThe+Museum+of+Modern+Art!8m2!3d40.7614327!4d-73.9776216!16zL20vMGhoams!3m5!1s0x89c258ff31cabb7b:0xda17e23e0f1fc620!8m2!3d40.7593495!4d-73.9794087!16s%2Fg%2F11cmgnblyq?hl=en-US&entry=ttu&g_ep=EgoyMDI1MDMyNS4xIKXMDSoASAFQAw%3D%3D"
  ],
  "sort": "newest",
  "language": "en",
  "maxItems": 10,
  "customMapFunction": "(object) => { return {...object} }"
}' |
apify call theagents/google-maps-reviews --silent --output-dataset

```

## MCP server setup

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

```

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/Wq48bq4hFH2ctmxbR/builds/y3ldm9uY4vSW6wSEp/openapi.json
