# Google Maps Review Scraper & AI Sentiment Analyzer (`jurassic_jove/google-maps-review-sentiment`) Actor

Scrape up to 5,000 Google Maps reviews per business and get an AI reputation report: sentiment score, trend direction, top complaints, top praises, and executive summary. Pay per business — fully managed AI, no setup.

- **URL**: https://apify.com/jurassic\_jove/google-maps-review-sentiment.md
- **Developed by:** [Data Runner](https://apify.com/jurassic_jove) (community)
- **Categories:** AI, Lead generation
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $150.00 / 1,000 business analyzeds

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 Review Scraper & AI Sentiment Analyzer 🤖⭐

**Scrape up to 5,000 Google Maps reviews per business and turn them into a structured reputation report.** Get sentiment scores, trend direction, top complaints, top praises, a reputation-risk index, and a 2-3 sentence executive summary — for any business, in any country, in any language.

The fastest way to turn raw Google reviews into business intelligence you can act on.

### Why this scraper?

Most Google reviews scrapers give you raw data — you still have to read 500 reviews and figure out the patterns yourself. **This Actor reads them for you** and delivers a clear, ready-to-use reputation report in a single click.

- ✅ **Bulk Google Maps reviews scraping** — up to 5,000 per business
- ✅ **AI-powered sentiment analysis** — fully managed, no setup or API keys to configure
- ✅ **Reputation risk score** — quantify your brand exposure
- ✅ **Trend detection** — is your reputation improving or declining?
- ✅ **Top praises & complaints** — what customers actually care about
- ✅ **Owner response rate score** — measure your engagement
- ✅ **Executive summary** — a 2-3 sentence brief for decision makers
- ✅ **Multi-language** — works with reviews in any language
- ✅ **Pay only per business** — no monthly fees, no minimums

> ℹ️ The AI report is built from up to **300 reviews** per business (the most relevant); every scraped review is still returned in the output, and the `reviewsAnalyzed` field shows how many fed the analysis.

### How it works

1. **Enter** a business name (e.g., `"Florida Cracker Kitchen Brooksville"`) or paste direct Google Maps place URLs
2. **Filter** by date range (last 30/90/365 days, or all-time)
3. **Run** — every review is collected and analyzed automatically
4. **Export** the report as JSON, CSV, or Excel; integrate with Zapier, Make, n8n, or your CRM

### Use cases

- 🏢 **Reputation management agencies** — monitor a client portfolio with weekly automated runs and surface declining sentiment before ratings drop
- 📊 **Competitor analysis** — compare sentiment scores, common complaints, and response rates across your top competitors
- 🍽️ **Restaurant & hotel chains** — audit every location at once and rank branches by reputation risk
- 🎯 **Lead generation** — find businesses with declining sentiment as prospects for marketing, PR, or operations services
- 📰 **Market research** — analyze sentiment trends across an entire industry segment or city
- 🔍 **M\&A due diligence** — quantify the customer reputation of an acquisition target in minutes

### Input example

```json
{
    "businessName": "Florida Cracker Kitchen Brooksville",
    "maxReviews": 200,
    "dateRange": "365days"
}
```

#### Multi-business batch

```json
{
    "googleMapsUrls": [
        "https://www.google.com/maps/place/Carbone+Miami/...",
        "https://www.google.com/maps/place/Joe%27s+Stone+Crab/..."
    ],
    "maxReviews": 500,
    "dateRange": "all"
}
```

#### Input fields

| Field | Type | Description |
|---|---|---|
| `businessName` | string | Business to search on Google Maps. Used to build the search URL when no direct URLs are provided. |
| `googleMapsUrls` | string\[] | Direct Google Maps place URLs. Overrides `businessName` if both are set. |
| `maxReviews` | integer (1-5000) | Max reviews to collect per business. Default `100`. |
| `dateRange` | enum | `"30days"`, `"90days"`, `"365days"`, or `"all"`. Default `"all"`. |

### Output example

Each analyzed business produces one dataset item:

```json
{
    "business": "Florida Cracker Kitchen Brooksville",
    "url": "https://www.google.com/maps/place/...",
    "totalReviewsScraped": 200,
    "scrapedAt": "2026-04-26T14:23:11.482Z",
    "dateRange": "365days",
    "reviews": [
        {
            "rating": 5,
            "date": "2 weeks ago",
            "reviewText": "Best fried green tomatoes in the state. Friendly staff, quick service.",
            "likesCount": 3,
            "authorReviewCount": 12,
            "ownerResponse": "Thanks! See you soon."
        }
    ],
    "sentiment": {
        "sentimentScore": 8,
        "topPraises": [
            "Outstanding fried green tomatoes",
            "Friendly staff and quick service",
            "Authentic Southern atmosphere"
        ],
        "topComplaints": [
            "Long wait times on weekends",
            "Limited parking"
        ],
        "trendDirection": "improving",
        "reputationRisk": 3,
        "responseRateScore": 8,
        "ratingTrend": "rising",
        "executiveSummary": "Florida Cracker Kitchen has a strong and improving reputation with 8/10 sentiment. Customers consistently praise the food, staff, and atmosphere. Main friction point is wait times during peak hours.",
        "reviewsAnalyzed": 200,
        "totalReviewsScraped": 200
    }
}
```

#### Sentiment fields explained

| Field | Range | Meaning |
|---|---|---|
| `sentimentScore` | 1-10 | Overall positivity (10 = most positive) |
| `reputationRisk` | 1-10 | Brand exposure to reputational damage (10 = highest risk) |
| `responseRateScore` | 1-10 | How actively the owner replies to reviews |
| `trendDirection` | `improving` / `declining` / `stable` | Sentiment momentum over time |
| `ratingTrend` | `rising` / `falling` / `flat` | Star-rating direction over time |
| `topPraises` | string\[] | Up to 5 recurring praise themes |
| `topComplaints` | string\[] | Up to 5 recurring complaint themes |
| `executiveSummary` | string | 2-3 sentence brief for stakeholders |

### Pricing

Pay-per-result. No subscription. No minimum commitment.

- **$0.15 per business analyzed** (everything included)
- **$0.00005 Actor start fee**
- 10 businesses ≈ **$1.50**
- 100 businesses ≈ **$15.00**
- 1,000 businesses ≈ **$150.00**

You only pay when the Actor returns a sentiment report. If a business has zero reviews, nothing is charged for that result.

### Tips for best results

- Use **specific business names** (`"McDonald's Brooksville FL"` instead of `"McDonald's"`) to avoid generic search results
- For chains and franchises, paste **direct place URLs** for each location
- Set `maxReviews: 200-500` for reliable sentiment at low cost; raise to 1,000+ only for full audits
- Use `dateRange: "365days"` for the most actionable analysis — older reviews dilute trend signals
- Schedule weekly runs for ongoing reputation monitoring
- Run on competitors *and* yourself to benchmark sentiment

### Integrations

Your results work with every popular tool out of the box:

- **Spreadsheets** — Google Sheets, Excel, CSV
- **Automation** — Zapier, Make (Integromat), n8n
- **CRMs** — HubSpot, Salesforce, Pipedrive (via API or webhook)
- **Databases** — PostgreSQL, MongoDB
- **BI tools** — Looker, Metabase, Tableau

### FAQ

**Q: How is this different from a generic Google Maps scraper?**
Generic scrapers return raw review JSON — you still have to read 500 reviews and summarize them yourself. This Actor returns a structured reputation report (sentiment score, top themes, trend direction, executive summary) so you can decide in seconds.

**Q: Do I need any technical knowledge to use it?**
No. Type a business name, click run, and download the report. No setup, no keys, no code.

**Q: How accurate is the sentiment analysis?**
The analysis applies a consistent rubric to every business, so scores are repeatable run-to-run and comparable across businesses. Treat them as an automated estimate to guide decisions — not a definitive or official measurement of a business.

**Q: Does it work for businesses outside the United States?**
Yes. It works worldwide and supports reviews in any language — Spanish, Portuguese, French, German, Italian, Japanese, and more.

**Q: Can I run it on multiple businesses at once?**
Yes. Pass a list of Google Maps URLs and each business is collected, analyzed, and pushed as a separate result.

**Q: Can I schedule recurring runs?**
Yes. Set up weekly or daily runs to track reputation over time — perfect for ongoing monitoring.

**Q: What happens if a business has no reviews?**
The Actor skips that business and pushes nothing — you don't pay for empty results.

**Q: Can I export the data to Excel or Google Sheets?**
Yes. Every result can be downloaded as JSON, CSV, or Excel, or pushed to Google Sheets via Zapier or Make.

### Legal & Compliance

This is an **unofficial** tool and is **not affiliated with, endorsed by, or sponsored by Google LLC**. Google, Google Maps, and related marks are trademarks of Google LLC.

- The Actor accesses only **publicly visible** Google Maps data. Use may be subject to **Google's Terms of Service** — you are responsible for your own use.
- Reviewer names are **personal data** under GDPR / UK GDPR. They are **excluded by default**; enable *"Include reviewer names"* only if you have a lawful basis to process them. You are the data controller for any data you collect.
- The sentiment and reputation-risk scores are **automated estimates / opinion**, not statements of fact about a business.
- This is **not legal advice** — check your obligations for your jurisdiction and use case.

### Related Actors

- [Trustpilot Sentiment Scraper](https://apify.com/jurassic_jove/trustpilot-sentiment-scraper) — AI-analyzed Trustpilot reviews (sibling sentiment tool)
- [Hotel Review Sentiment Scraper](https://apify.com/jurassic_jove/hotel-review-sentiment-scraper) — Hotel reviews from Booking.com and TripAdvisor with AI analysis
- [Google Maps Lead Generator](https://apify.com/jurassic_jove/google-maps-lead-generator) — Extract emails and contact info from Google Maps businesses
- [Google Maps Lead Generator Pro](https://apify.com/jurassic_jove/google-maps-lead-generator-pro) — Advanced leads with website enrichment
- [TripAdvisor Email Scraper](https://apify.com/jurassic_jove/tripadvisor-email-scraper) — Restaurant, hotel and attraction leads from TripAdvisor
- [Website Email Extractor](https://apify.com/jurassic_jove/website-email-extractor) — Pull emails from any website
- [YouTube Email Scraper](https://apify.com/jurassic_jove/youtube-email-scraper) — Find YouTube creator contact emails

# Actor input Schema

## `businessName` (type: `string`):

The business to search on Google Maps (e.g. "McDonald's Tampa"). Used to build a search URL if no direct URLs are provided.

## `googleMapsUrls` (type: `array`):

Direct Google Maps place URLs. Overrides businessName if both are provided.

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

Maximum number of reviews to scrape per business.

## `dateRange` (type: `string`):

Only include reviews from this time window.

## `includeReviewerNames` (type: `boolean`):

Reviewer names are personal data (GDPR). Off by default: the output returns ratings, review text, dates, and the AI report without reviewer names. Turn on only if you have a lawful basis to process reviewer identities.

## Actor input object example

```json
{
  "googleMapsUrls": [],
  "maxReviews": 100,
  "dateRange": "all",
  "includeReviewerNames": 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 = {
    "businessName": "",
    "googleMapsUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("jurassic_jove/google-maps-review-sentiment").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 = {
    "businessName": "",
    "googleMapsUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("jurassic_jove/google-maps-review-sentiment").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 '{
  "businessName": "",
  "googleMapsUrls": []
}' |
apify call jurassic_jove/google-maps-review-sentiment --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jurassic_jove/google-maps-review-sentiment",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6352G6srXnDaLgCHx/builds/9Gjv5xdMJa0Pwa4W4/openapi.json
