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.
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. 50 is plenty for a scheduled monitor that only needs the latest deltas. | 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 clean, structured dataset you can export as JSON, CSV or Excel, or pipe into 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.
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, and (optionally) drafts replies with an AI model so your team can respond fast.
What it does
- Watches many locations at once. Give it a list of Google Maps locations and it checks each one per run.
- Returns only-new deltas. With
onlyNewSinceLastRunon, you get the reviews that appeared or changed since the previous run — not the whole history every time. - Alerts on what matters. Fire alerts on any new review, on negative reviews below a rating threshold you set, and on detected rating drops. Track whether the owner has replied so you can surface unanswered reviews.
- Drafts replies (optional). Generate an AI summary of recent sentiment and per-review reply drafts using your own Anthropic or OpenAI key.
- Delivers where you work. Push results and alerts to Slack or any webhook URL, and optionally generate a weekly report.
Output is plain JSON in the run's dataset, so it drops straight into a sheet, a dashboard, Slack, or your own automation.
> A note on reliability. This actor scrapes Google Maps, which actively fights automated access. It's a best-effort tool: 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 proxies, and schedule with headroom rather than expecting instant results on hundreds of locations.
Who it's for
- Local businesses that want to know the moment a new or bad review lands — without checking the dashboard daily.
- Multi-location brands (franchises, chains, clinic groups) tracking review flow across every storefront in one place.
- Marketing and reputation agencies managing Google Business Profiles for clients, who need to catch negative reviews fast, prove they're watching, and reply on time.
If you live in a code editor, you'll like the JSON output and webhook hooks. If you live in spreadsheets and Slack, you'll like the alerts and reports. Both work.
Quick start
Run the monitor (Apify Console)
1. Open the actor and click Try for free. 2. Paste your locations and pick your alert options (see Input below). A minimal run:
{
"locations": [
"https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4"
],
"maxReviewsPerRun": 50,
"onlyNewSinceLastRun": true,
"alertOnNegativeReviews": true,
"negativeRatingThreshold": 3,
"proxyConfiguration": { "useApifyProxy": true }
}
3. Click Start. New reviews land in the dataset; alerts go to your webhook if set. 4. Open Schedules and add the actor (e.g. every morning) so it keeps watching.
Connect it to Claude, Cursor, or ChatGPT (MCP)
This actor is available through the Apify MCP server, so an AI assistant can run it for you and read the results. Use the verified streamable-HTTP endpoint:
https://mcp.apify.com/?actors=dami_studio/google-reviews-monitor
Add it as a remote MCP server in your client. Example config (Claude Desktop / Cursor mcp.json):
{
"mcpServers": {
"google-reviews-monitor": {
"url": "https://mcp.apify.com/?actors=dami_studio/google-reviews-monitor",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}
Replace <APIFY_TOKEN> with your token from Apify (Settings → API & Integrations). On first connect you can also authorize via OAuth in the browser instead of pasting a token. Once connected, ask your assistant something like *"check my Google reviews for new negative ones since yesterday"* and it will call the actor and summarize the result.
Input
locations— list of Google Maps places to watch (place URLs / place IDs).maxReviewsPerRun— cap on reviews pulled per run, to control cost and time.onlyNewSinceLastRun— return only reviews new/changed since the previous run.alertOnNewReviews— alert on every new review, not just negative ones.alertOnNegativeReviews— alert when a review is below your threshold.negativeRatingThreshold— star rating at/below which a review counts as negative (e.g.3).trackOwnerReplies— record whether the owner has replied, to surface unanswered reviews.detectRatingDrops— flag when a location's overall rating falls.generateAiSummary— produce an AI summary of recent reviews.generateReplyDrafts— draft a reply for each review.aiModel/anthropicApiKey/openaiApiKey— pick the model and bring your own key for AI features.weeklyReport— generate a periodic summary report.webhookUrl— Slack or generic webhook to receive alerts and results.proxyConfiguration— proxy settings (recommended: Apify Proxy on).
Output
Each result is a review object in the run's dataset. A row looks roughly like:
{
"location": "Acme Coffee — Downtown",
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"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.
Example use cases
- Monitor Google reviews for a single restaurant
- Send negative-review alerts for agency clients
- Draft AI replies to negative reviews
- Pull the full review history for one business
Pricing
Pay per event — you're charged only for what a run actually does:
| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Location checked | $0.015 per location |
| Review processed | $0.001 per review |
| AI summary generated | $0.01 per summary |
| Report generated | $0.05 per report |
AI features use your own Anthropic or OpenAI API key, so model usage is billed by that provider separately. Apify platform usage (compute, proxy) applies per your Apify plan.
FAQ
Does this work across multiple locations? Yes — that's the point. Pass many locations in locations and each is checked per run, so a franchise or agency can watch every storefront from one schedule.
How do I get only new reviews instead of the whole history? Turn on onlyNewSinceLastRun. After the first baseline run, you'll receive only reviews that are new or changed since the previous run.
Can it alert me on Slack when a bad review comes in? Yes. Set alertOnNegativeReviews, choose your negativeRatingThreshold, and put a Slack incoming-webhook URL in webhookUrl. Any generic webhook works too.
Do I need an API key for the 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? It's best-effort. Google Maps actively blocks scrapers, so large location lists can slow down or time out. Use Apify Proxy, keep maxReviewsPerRun sensible, and schedule with headroom. For a handful of locations on a daily cadence, it's dependable; for hundreds at once, expect to tune.
Can an AI assistant run this for me? Yes. Connect it through the Apify MCP server (see Quick start) and Claude, Cursor, or another MCP client can trigger runs and read the results directly.