Google Reviews Monitor — Multi-Location Alerts & Reports
Track Google Maps reviews across all your locations. Get only-new deltas, negative-review and rating-drop alerts to Slack, plus AI summaries and reply drafts.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
locations,maxReviewsPerRun,onlyNewSinceLastRun(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.015 per location checked = $15 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Location checked | User checked a location | $0.015 |
| Report generated | A report was generated | $0.05 |
| AI summary generated | AI summary generated | $0.01 |
| Review processed | A review was processed | $0.001 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.005 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-09, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
locations | One entry per Google Business location. clientName is your label (e.g. the client/branch name); googleMapsUrl is the public Google Maps URL of the business. Tip: open the place on Google Maps and copy the URL from the address bar. | array |
maxReviewsPerRun | How many of the newest reviews to load per location each run. Higher = more thorough but slower and more expensive (each extra page of reviews is another scroll over the proxy). 10 is plenty for a scheduled monitor that only needs the latest deltas; raise it for a first-run backfill. | integer |
onlyNewSinceLastRun | Core monitor behavior: each scheduled run emits only NEW or CHANGED reviews (deltas), not a full re-dump. Persisted between runs via the Key-Value Store. | boolean |
alertOnNewReviews | Include locations with any new review in the notification/report signal. | boolean |
alertOnNegativeReviews | Flag new reviews at or below the negative rating threshold. | boolean |
negativeRatingThreshold | Reviews with a star rating at or below this value are treated as negative. | integer |
trackOwnerReplies | Detect when the business owner replies to a review (review changes from unanswered to answered). | boolean |
detectRatingDrops | Compare each location's overall star rating against the previous run and flag drops. | boolean |
generateAiSummary | Produce a short, action-ready briefing per location from the NEW reviews (e.g. '2 urgent reviews need replies; main complaint: wait times'). Uses an LLM if a key is configured, otherwise a free rule-based summary. | boolean |
generateReplyDrafts | Draft a professional public reply for each urgent (negative + unanswered) review. Capped per run to control cost. | boolean |
aiModel | Model used for AI summaries/reply drafts (only when an API key is configured). GPT models need an OpenAI key; Claude models need an Anthropic key. | string |
anthropicApiKey | Optional. Bring your own Anthropic key to enable AI summaries/reply drafts with Claude. If left blank, the actor uses the ANTHROPIC_API_KEY environment secret (if the owner set one), then OpenAI, then a free rule-based summary. | string |
openaiApiKey | Optional. Bring your own OpenAI key to use GPT models instead of Claude. Used only if no Anthropic key is configured. | string |
weeklyReport | Render a single multi-location HTML report to the Key-Value Store and link it from each dataset record. | boolean |
webhookUrl | Optional. Receive a compact summary when there are changes. Auto-formats for Slack and Discord incoming webhooks; otherwise sends a generic JSON payload (works with Zapier/Make/n8n and email-via-webhook). | string |
What you get
A structured dataset — each result includes fields like:
clientNameoverallRatingcountsratingChangeagencySummaryreportUrlsyncStatusExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
4 ready-to-run use cases
Daily Google Review Monitor for a Restaurant
Every morning, this checks one restaurant's Google Maps page and surfaces only the reviews posted since yesterday, with rating, text, and date.
Negative Google Review Alerts for Agency Clients
Agencies get a nightly sweep across every client's Google profile that pings you only when a fresh 1-2 star review lands, plus a weekly recap.
AI Reply Drafts for Negative Google Reviews
Need a fast response to a bad review? Each new low-star Google review returns a ready-to-paste reply draft, skipping ones the owner already answered.
Export Recent Google Reviews for a Business
Grab the latest 200 Google reviews for one place in a single run and export the full dataset, ideal for a reputation audit or a starting baseline.
Related tools in Maps & Local Lead Generation
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
2GIS Places Scraper
Scrape 2GIS places at $0.50 per 1,000: name, category, address, coordinates, phone, website, rating and reviews. Russia and CIS coverage. No API key.
2GIS Reviews Scraper
Extract 2GIS reviews by place URL or city search: star rating, review text, author, date, photos, owner replies and aggregate rating. No 2GIS API key.
Yelp Scraper
Scrape Yelp businesses and reviews via Yelp's official Fusion API: rating, review count, price, phone, address, GPS and review text.
Google Maps Reviews Scraper
Scrape Google Maps reviews at $0.27 per 1,000. Rating, full text, exact date, reviewer and review count, owner reply and photos.
Google Maps Reviews Scraper
Scrape Google Maps reviews by place URL, place ID or search: rating, full text, date, reviewer, owner reply, photo count.
Yandex Maps Scraper
Extract Yandex Maps business listings: name, address, GPS coordinates, category, rating, review count, phone, website and opening hours.
Where this tool sits
- Categories
- Maps & Local Lead Generation Monitors & Alerts Reviews & Reputation Data
- Platforms
Google Reviews Monitor — Multi-Location Alerts & Reports
Monitor Google Maps reviews across all your business locations on a schedule, and get only the new and changed reviews — with negative-review, rating-drop, and unanswered-review alerts pushed to Slack or any webhook.
Instead of opening every Google Business Profile by hand, you point this actor at your locations, run it on a schedule, and it returns just the reviews that are new or changed since the last run. It flags low-star reviews, detects rating drops, surfaces unanswered reviews, and (optionally) drafts replies with an AI model so your team can respond fast.
Why it wins
- Only-new deltas, not full re-dumps. With
onlyNewSinceLastRunon, each scheduled run emits only the reviews that appeared or changed since the previous run. State is persisted in the Key-Value Store between runs. - Multi-location by design. Pass a labeled list of locations (
clientName+googleMapsUrl) and every storefront is checked per run — built for franchises, chains, and agencies. - Alerts on what matters. New-review, negative-review (below a star threshold you set), rating-drop, and owner-reply (answered/unanswered) detection — pushed to Slack, Discord, or any webhook.
- AI runs only on new reviews. Summaries and reply drafts are generated only on NEW/changed reviews (never the whole history) to control cost. Bring your own Anthropic or OpenAI key.
- Drops into your stack. Plain JSON dataset output, optional rolled-up HTML report, and webhook delivery that auto-formats for Slack/Discord and works with Zapier/Make/n8n.
Capabilities
| Capability | Details |
|---|---|
| Locations per run | Many — one entry per Google Business location |
| Delta detection | New/changed reviews only, persisted across runs |
| Negative alerts | Flag reviews at/below a star threshold you choose |
| Rating-drop detection | Compares each location's overall rating vs. previous run |
| Owner replies | Detects unanswered → answered transitions |
| AI summaries / reply drafts | Optional, on new reviews only (BYO key) |
| Delivery | Slack/Discord/generic webhook + optional HTML report |
| Output | JSON dataset records |
> A note on reliability. This actor scrapes Google Maps, which actively fights automated access. It's best-effort: most locations check cleanly, but a run can slow down or time out on heavy location lists or during anti-bot throttling. Start small, use RESIDENTIAL proxy, and schedule with headroom.
Input
| Field | Type | Description |
|---|---|---|
locations *(required)* | array | One entry per location: clientName (your label) + googleMapsUrl (public Maps URL). |
maxReviewsPerRun | integer | Newest reviews to load per location each run (default 50, 1–1000). |
onlyNewSinceLastRun | boolean | Emit only new/changed reviews since the last run (default true). |
alertOnNewReviews | boolean | Signal locations with any new review (default true). |
alertOnNegativeReviews | boolean | Flag new reviews at/below the negative threshold (default true). |
negativeRatingThreshold | integer | Stars at/below which a review is negative (default 3). |
trackOwnerReplies | boolean | Detect owner-reply (unanswered → answered) (default true). |
detectRatingDrops | boolean | Flag overall rating drops vs. previous run (default true). |
generateAiSummary | boolean | Per-location AI briefing of new reviews (default true). |
generateReplyDrafts | boolean | Draft public replies for urgent reviews (default false). |
aiModel | string | gpt-4o-mini (default), gpt-4.1-mini, gpt-4o, claude-haiku-4-5, claude-sonnet-4-6. |
anthropicApiKey | string (secret) | Optional BYO Anthropic key for Claude models. |
openaiApiKey | string (secret) | Optional BYO OpenAI key for GPT models. |
weeklyReport | boolean | Render a rolled-up multi-location HTML report (default true). |
webhookUrl | string | Optional Slack/Discord/generic webhook for change alerts. |
proxyConfiguration | object | Apify Proxy settings — RESIDENTIAL strongly recommended. |
Minimal input
{
"locations": [
{
"clientName": "Acme Coffee — Downtown",
"googleMapsUrl": "https://www.google.com/maps/place/..."
}
],
"maxReviewsPerRun": 50,
"onlyNewSinceLastRun": true,
"alertOnNegativeReviews": true,
"negativeRatingThreshold": 3,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
Output
Each result is a review object in the run's dataset. A row looks roughly like:
{
"clientName": "Acme Coffee — Downtown",
"googleMapsUrl": "https://www.google.com/maps/place/...",
"reviewId": "Ci9DQ...",
"rating": 2,
"text": "Waited 25 minutes for a cold latte.",
"reviewerName": "Jamie R.",
"publishedAt": "2026-06-21T14:03:00Z",
"isNew": true,
"isNegative": true,
"ownerReplied": false,
"ratingDropDetected": false,
"aiSummary": "Recent reviews cite slow service at the downtown location.",
"replyDraft": "Hi Jamie, we're sorry about the wait..."
}
Fields like aiSummary and replyDraft only appear when you enable the AI options. Alerts contain the same data, formatted for Slack/webhook delivery.
Connect it to Claude, Cursor, or ChatGPT (MCP)
This actor is available through the Apify MCP server, so an AI assistant can run it and read the results:
https://mcp.apify.com/?actors=dami_studio/google-reviews-monitor
Add it as a remote MCP server in your client, authorize with your Apify token (or OAuth), then ask *"check my Google reviews for new negative ones since yesterday"*.
Pricing
$0.015 per location checked — plus $0.005 per run start, $0.001 per review processed, $0.01 per AI summary and $0.05 per report generated.
| Event | Price | When it fires |
|---|---|---|
| Run start | $0.005 | once per run |
| Location checked | $0.015 | once per location, after its snapshot is durably saved |
| Review processed | $0.001 | once per new or changed review — never for history you already received |
| AI summary | $0.01 | only when the model actually runs (a summary or a reply draft) |
| Report generated | $0.05 | once per run, only when weeklyReport renders a report |
You pay for checks and for changes that actually happen, nothing else. A quiet week is genuinely cheap: five locations with no new reviews and weeklyReport off costs $0.08 for the whole run. A busy run over the same five locations with 12 new reviews, an AI briefing per location and the rolled-up report costs $0.192.
Charging happens after each location's snapshot is persisted, so a location that fails to save is not billed and is simply re-detected next run — you are never double-charged for the same review. Apify Proxy and compute are covered by these event prices; there is no separate platform bill on top. AI features use your own Anthropic/OpenAI key, and those tokens are billed by that provider directly.
FAQ
How do I get only new reviews instead of the whole history? Turn on onlyNewSinceLastRun. After a baseline first run, you'll receive only reviews new or changed since the previous run.
Can it alert me on Slack when a bad review comes in? Yes. Set alertOnNegativeReviews, choose negativeRatingThreshold, and put a Slack incoming-webhook URL in webhookUrl. Discord and generic webhooks work too.
Do I need an API key for AI replies and summaries? Only if you enable them. generateAiSummary and generateReplyDrafts use your own Anthropic or OpenAI key. Core monitoring and alerts work without any AI key.
How reliable is it? Best-effort. Google Maps actively blocks scrapers, so large location lists can slow down or time out. Use RESIDENTIAL proxy, keep maxReviewsPerRun sensible, and schedule with headroom.