# Google Maps Reviews Scraper Premium (`focused_vanguard/google-maps-reviews-scraper-premium`) Actor

Extract Google Maps reviews with AI sentiment analysis. Get complete business data including phone, website, hours, and categories. Filter by rating range, keywords, dates, or images. The only Google Maps scraper with built-in Claude AI insights.

- **URL**: https://apify.com/focused\_vanguard/google-maps-reviews-scraper-premium.md
- **Developed by:** [Focused Vanguard](https://apify.com/focused_vanguard) (community)
- **Categories:** E-commerce, Lead generation, Travel
- **Stats:** 17 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.05 / 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/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

## 🏆 Google Maps Reviews Scraper - Premium Edition

**The only Google Maps scraper with built-in AI sentiment analysis.** Extract reviews, complete business data, and get instant insights with our premium-quality scraper.

### Why Choose This Scraper?

| Feature | Compass (#1) | **This Scraper** |
|---------|---------------|------------------|
| **Price** | $0.50/1K | $1.50/1K (+$0.50 for AI) |
| **AI Sentiment Analysis** | ❌ Not available | ✅ Per-review sentiment scores |
| **Business Description** | ❌ Missing | ✅ Full descriptions |
| **FAQs** | ❌ Not scraped | ✅ Complete Q\&A pairs |
| **Attributes** | ⚠️ Partial | ✅ All accessibility, amenities |
| **Filter by Rating Range** | ❌ Only single value | ✅ Min-Max range (e.g., 1-3 stars) |
| **Filter by Keywords** | ❌ Not available | ✅ Find reviews mentioning "parking" |
| **Filter by Images** | ❌ Not available | ✅ Only reviews with photos |
| **Excel-Ready Export** | ⚠️ Nested JSON issues | ✅ Flat structure option |
| **Keyword Extraction** | ❌ Not available | ✅ AI-powered |
| **Aspect Detection** | ❌ Not available | ✅ Food, service, ambiance, etc. |

### What Data Can You Extract?

#### 📝 Review Data

- **Review text** (original + translated)
- **Star rating** (1-5)
- **Publication date** (exact timestamp)
- **Reviewer details**: name, profile URL, photo, total reviews, Local Guide status
- **Owner response** text and date
- **Review images** (all attached photos)
- **Detailed ratings** (food, service, atmosphere - when available)
- **Visit context** (dine-in, takeout, delivery)

#### 🏢 Business Data (Our Exclusive Features!)

- **Business description** - The "About" text from Google
- **FAQs** - Questions and answers shown on the listing
- **All attributes** - Accessibility, amenities, parking, Wi-Fi, etc.
- **Contact info** - Phone, website, social links
- **Opening hours** - Full weekly schedule
- **Popular times** - Traffic patterns by hour
- **Price level** - $ to $$$$
- **Menu/Reservation URLs**

#### 🤖 AI Enrichment (Unique to This Scraper!)

- **Sentiment score** (-1 to +1 scale)
- **Sentiment label** (positive / neutral / negative)
- **Extracted keywords** - Key terms from each review
- **Aspect detection** - Which aspects are mentioned (food, service, etc.)
- **Aspect sentiment** - Sentiment per aspect

### How to Use

#### Basic Usage

1. **Add place URLs** - Paste Google Maps URLs
2. **Set max reviews** - Default is 100 per place
3. **Click Start** - That's it!

#### Advanced Usage

##### Filter by Rating

Only get negative reviews (for improvement analysis):

- Set **Minimum Rating**: 1
- Set **Maximum Rating**: 3

##### Find Specific Topics

Only get reviews mentioning parking issues:

- Set **Filter by Keywords**: `parking, lot, space`

##### Get Visual Reviews

Only reviews with photos:

- Enable **Only Reviews with Images**

##### Recent Reviews Only

Last 90 days:

- Set **Reviews Newer Than (Days)**: `90`

### Input Examples

#### Basic Input

```json
{
    "placeUrls": [
        "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551,17z"
    ],
    "maxReviews": 100,
    "enableSentiment": true
}
```

#### Advanced Input with Filters

```json
{
    "placeUrls": [
        "https://www.google.com/maps/place/Yellowstone+National+Park/@44.5857951,-110.5140571,9z"
    ],
    "maxReviews": 500,
    "sortBy": "newest",
    "language": "en",
    "minRating": 1,
    "maxRating": 3,
    "reviewKeywords": "crowded, parking, wait",
    "lookbackDays": 180,
    "enableSentiment": true,
    "includePlaceData": true,
    "flattenOutput": true
}
```

#### Using Place IDs

```json
{
    "placeIds": [
        "ChIJVVVVVVXlUVMRu-GPNDD5qKw",
        "ChIJ5SZrPj0WkFQRbk8K8eYNWzY"
    ],
    "maxReviews": 200
}
```

### Output Example

```json
{
    "searchString": "Direct Detail URL: https://www.google.com/maps/place/...",
    "reviewerId": "110758759962531004425",
    "reviewerUrl": "https://www.google.com/maps/contrib/110758759962531004425",
    "name": "John Smith",
    "reviewerNumberOfReviews": 42,
    "isLocalGuide": true,
    "reviewerPhotoUrl": "https://lh3.googleusercontent.com/...",
    
    "text": "Amazing experience! The food was incredible and service was fast.",
    "publishedAtDate": "2025-12-15T14:30:00.000Z",
    "stars": 5,
    
    "responseFromOwnerText": "Thank you for your kind words!",
    "responseFromOwnerDate": "2025-12-16T09:00:00.000Z",
    
    "reviewImageUrls": ["https://lh3.googleusercontent.com/..."],
    "reviewDetailedRating": {"food": 5, "service": 5, "atmosphere": 4},
    
    "placeId": "ChIJ...",
    "title": "Best Restaurant in Town",
    "address": "123 Main St, New York, NY 10001",
    "totalScore": 4.7,
    "reviewsCount": 1250,
    
    "businessDescription": "Family-owned Italian restaurant since 1985...",
    "faqs": [
        {"question": "Do you take reservations?", "answer": "Yes, call ahead or book online."}
    ],
    "attributes": {
        "wheelchairAccessible": true,
        "hasParking": true,
        "hasWifi": true
    },
    "phone": "+1-555-123-4567",
    "website": "https://example.com/",
    "openingHours": {
        "Monday": "11:00 AM - 10:00 PM",
        "Tuesday": "11:00 AM - 10:00 PM"
    },
    
    "sentimentScore": 0.92,
    "sentimentLabel": "positive",
    "extractedKeywords": ["amazing", "incredible", "fast"],
    "detectedAspects": ["food", "service"],
    "aspectSentiments": {"food": "positive", "service": "positive"}
}
```

### Pricing

| Tier | Price | What You Get |
|------|-------|--------------|
| **Free Trial** | $0 | 25 free reviews |
| **Standard** | $1.50 / 1,000 reviews | Full extraction + business data |
| **With AI Sentiment** | $2.00 / 1,000 reviews | Everything + AI analysis |

#### Cost Calculator

- 100 reviews → $0.15 - $0.20
- 1,000 reviews → $1.50 - $2.00
- 10,000 reviews → $15 - $20
- 100,000 reviews → $150 - $200

#### Why Pay More?

You get features no other scraper offers:

- ✅ **AI Sentiment Analysis** - Automatic sentiment scoring with Claude AI
- ✅ **Complete Business Data** - Phone, website, hours, categories, description
- ✅ **Advanced Filtering** - Rating range, keywords, images, date range
- ✅ **Excel-Ready Exports** - Flat structure option for spreadsheets
- ✅ **Reliable Extraction** - Hybrid architecture handles Google's anti-bot measures

### Use Cases

#### 🎯 Reputation Management

Monitor your business reviews, track sentiment trends, and identify issues before they escalate.

#### 📊 Competitive Analysis

Compare your reviews with competitors. Use keyword filtering to find mentions of specific features.

#### 📈 Market Research

Analyze customer preferences across locations. Extract insights from thousands of reviews automatically.

#### 🔍 Lead Generation

Find businesses with low ratings that need your services. Filter by industry and location.

#### 💡 Product Improvement

Use AI sentiment analysis to identify what customers love and hate about products/services.

### Integration

Works with all Apify integrations:

- **Zapier** - Automate workflows
- **Make (Integromat)** - Connect to 1000+ apps
- **Google Sheets** - Direct export
- **Webhooks** - Real-time data delivery
- **API** - Full programmatic access

### Frequently Asked Questions

#### How many reviews can I scrape?

Up to 10,000 reviews per place. For larger volumes, contact us for enterprise solutions.

#### Do you support multiple languages?

Yes! We support 14 languages including English, Spanish, French, German, Japanese, Korean, Chinese, and more.

#### Is the AI sentiment analysis accurate?

Our AI uses Claude 3 Haiku for analysis, achieving ~90% accuracy on sentiment classification. It's fast, cost-effective, and provides sentiment scores, labels, and keyword extraction. Raw review text is also included so you can run your own analysis.

#### Can I filter by date range?

Yes! Use either an absolute date (YYYY-MM-DD) or relative days (e.g., last 90 days).

#### What if a place has no reviews?

The scraper will return the business data (name, address, attributes) even if there are no reviews.

#### Is web scraping Google Maps legal?

Scraping publicly available data is generally legal, but you should review Google's Terms of Service and your local laws. This tool extracts only publicly visible data.

### ⚙️ Required Setup (Environment Variables)

**IMPORTANT:** You must configure these environment variables for the actor to work.

Go to **Actor Settings → Source → Environment variables** and add:

| Variable | Required | Description |
|----------|----------|-------------|
| `BRIGHTDATA_BROWSER_WS` | **Yes** | BrightData Scraping Browser WebSocket URL |
| `SERPER_API_KEY` | Recommended | Serper.dev API key for fast place lookups |
| `ANTHROPIC_API_KEY` | For AI | Anthropic API key for sentiment analysis |

#### How to get these:

- **BrightData**: Sign up at brightdata.com → Create a "Scraping Browser" zone → Copy the WebSocket URL
- **Serper**: Sign up at serper.dev → Copy your API key
- **Anthropic**: Sign up at anthropic.com → Create an API key

### Support

Having issues? We're here to help!

- Check the **Issues** tab for known problems
- Leave a **review** to share your experience
- Contact us through Apify support

### Changelog

#### v1.0.0 (January 2026)

- Initial release
- AI sentiment analysis
- Advanced filtering
- Complete business data extraction
- 14 language support

***

**Built with ❤️ for data professionals who demand the best.**

# Actor input Schema

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

List of Google Maps place URLs to scrape reviews from. Supports standard place URLs, search result URLs, and @coordinates URLs.

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

Alternative to URLs - provide Google Place IDs directly. Format: ChIJ... or 0x...:0x...

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

Maximum number of reviews to scrape per place. Set to 0 for unlimited (may take longer and cost more).

## `sortBy` (type: `string`):

How to sort reviews before scraping.

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

Language for reviews and interface. Uses ISO 639-1 codes.

## `minRating` (type: `integer`):

Only scrape reviews with this rating or higher (1-5 stars).

## `maxRating` (type: `integer`):

Only scrape reviews with this rating or lower (1-5 stars).

## `reviewKeywords` (type: `string`):

Only include reviews containing these keywords (comma-separated). Example: 'parking, service, wifi'

## `hasImagesOnly` (type: `boolean`):

Only scrape reviews that have attached photos.

## `dateFrom` (type: `string`):

Only scrape reviews published after this date. Format: YYYY-MM-DD

## `lookbackDays` (type: `integer`):

Alternative to date - only scrape reviews from the last N days.

## `enableSentiment` (type: `boolean`):

Analyze review sentiment using AI (Claude 3 Haiku or GPT-3.5). Adds sentimentScore (-1 to 1) and sentimentLabel to each review. Requires ANTHROPIC\_API\_KEY or OPENAI\_API\_KEY in environment variables.

## `includePlaceData` (type: `boolean`):

Include full business information with each review (address, phone, website, FAQs, attributes, etc.).

## `flattenOutput` (type: `boolean`):

Convert nested fields to flat structure for better Excel/CSV compatibility. Recommended if you'll export to spreadsheets.

## Actor input object example

```json
{
  "placeUrls": [
    "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551,17z"
  ],
  "placeIds": [
    "ChIJVVVVVVXlUVMRu-GPNDD5qKw"
  ],
  "maxReviews": 100,
  "sortBy": "newest",
  "language": "en",
  "minRating": 1,
  "maxRating": 5,
  "reviewKeywords": "parking, service, food",
  "hasImagesOnly": false,
  "dateFrom": "2024-01-01",
  "enableSentiment": true,
  "includePlaceData": true,
  "flattenOutput": false
}
```

# 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/Yellowstone+National+Park/@44.5857951,-110.5140571,9z"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("focused_vanguard/google-maps-reviews-scraper-premium").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/Yellowstone+National+Park/@44.5857951,-110.5140571,9z"] }

# Run the Actor and wait for it to finish
run = client.actor("focused_vanguard/google-maps-reviews-scraper-premium").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 '{
  "placeUrls": [
    "https://www.google.com/maps/place/Yellowstone+National+Park/@44.5857951,-110.5140571,9z"
  ]
}' |
apify call focused_vanguard/google-maps-reviews-scraper-premium --silent --output-dataset

```

## MCP server setup

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

```

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/OKTAuWhLF0dQyLmNj/builds/9368s4B6gaGTneaiq/openapi.json
