Google Maps Reviews + Risk Flags — Reply Drafts, $5/1k
Pricing
from $5.00 / 1,000 review processeds
Google Maps Reviews + Risk Flags — Reply Drafts, $5/1k
Google Maps reviews scraper with sentiment, urgency, risk flags and a suggested reply per review. No login. $5 per 1,000 reviews.
Pricing
from $5.00 / 1,000 review processeds
Rating
0.0
(0)
Developer
Mohammed Samaan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Local Review Booster
Pull a local business's Google reviews, get a ready-to-paste reply drafted for every one, and instantly see the urgent ones — unanswered and low-star — that are quietly costing the business customers.
It reuses a maintained Google Maps actor for the review data, so there's no anti-bot fight, and adds the part buyers actually want: a drafted reply per review plus an urgency triage.
Who it's for
- Restaurants, salons, clinics, gyms and contractors who know reviews affect revenue but don't have time to watch and reply to them
- Local marketing agencies managing review response for multiple client locations
- Anyone who wants a lean alternative to a full reputation-management suite, for a single monitoring task rather than a whole platform
What you get
| Field | What it is |
|---|---|
business | The business name |
reviewer | Reviewer's name |
stars | 1–5★ |
sentiment | positive / neutral / negative, derived from stars |
review | The review text |
ownerReplied | Whether the business already replied |
needsAttention | true when unanswered and 3★ or lower |
suggestedReply | A ready-to-paste reply in the chosen tone |
publishedAt / generatedAt | When the review was posted, and when the reply was generated |
Example output
A real row from a run on "Joe's Pizza, New York" (28 Sep 2026; reviewUrl and reviewerUrl shortened). This reviewer left a star rating with no text, so review is empty. The ai* fields are null because AI triage did not apply to this run:
{"business": "Joe’s Pizza","reviewer": "Potterwatch","stars": 5,"sentiment": "positive","review": "","ownerReplied": false,"needsAttention": false,"reviewUrl": "https://www.google.com/maps/reviews/data=… (shortened)","likesCount": 0,"isLocalGuide": false,"reviewerReviewCount": 3,"reviewerUrl": "https://www.google.com/maps/contrib/… (shortened)","ownerReply": null,"photoCount": 0,"aiTopic": null,"aiUrgency": null,"aiUrgencyScore": null,"aiRiskFlag": null,"suggestedReply": "Thank you for the kind words, Potterwatch! We're so glad you had a great experience and we can't wait to welcome you back. — Joe’s Pizza","publishedAt": "2026-09-28T05:36:37.445Z","generatedAt": "2026-09-28T16:04:51.491Z"}
A real row from a test run on a small dataset of made-up reviews passed in through inputDatasetId ("Test Cafe" is not a real business). It shows the AI triage fields: a 5-star review that reports food poisoning is still flagged for attention. Fields that were null in that row (reviewUrl, likesCount, isLocalGuide, reviewerReviewCount, reviewerUrl, ownerReply, photoCount) are left out:
{"business": "Test Cafe","reviewer": "Sam Lee","stars": 5,"sentiment": "positive","review": "Great coffee but I got food poisoning after the sandwich.","ownerReplied": false,"needsAttention": true,"aiTopic": "cleanliness_safety","aiUrgency": "critical","aiUrgencyScore": 3,"aiRiskFlag": true,"suggestedReply": "Thank you for the kind words, Sam! We're so glad you had a great experience and we can't wait to welcome you back. — Test Cafe","publishedAt": "2026-09-20","generatedAt": "2026-09-28T15:33:35.951Z"}
Note that the suggested reply on a flagged row is still the plain template for its star rating, so read flagged rows before you paste the reply.
Errors and limits
- No input: if both
businessesandinputDatasetIdare empty the run fails immediately with a message asking for one of them. - Google Maps step (
businesses): reviews are fetched by a separate Google Maps actor started from your account, with a 30-minute timeout. If your Apify account is at its concurrent-run limit, the step retries every 30 s for about 3 minutes and then fails with a message saying so. Other start errors are retried once after 5 s. A Maps run that returns no dataset fails the run with a message pointing at the actor id and your credits. - Business not found or no reviews: no rows are written for it, so the dataset can be empty without an error row. Check the spelling, or paste the Google Maps URL.
inputDatasetIdproblems: a 403 or 404 fails the run with the exact fix (paste anapifyToken, or share the dataset as "Anyone with the link"). Any other HTTP error fails with its status. A dataset that is empty or not readable fails the run.- Reviews with no star rating are skipped.
- AI fields are best-effort: topic, urgency and the risk flag are filled only when AI triage is available and answers within 15 seconds per review; otherwise they are null and
needsAttentionfalls back to "unanswered and 3 stars or lower". If the optionalopenaiApiKeyreply call fails, the row gets the template reply instead of failing. - Partial results: rows are written one at a time, so a run that stops early keeps every row written so far. Reaching your max-charge cap stops the run the same way.
- Cost behaviour: the
review-processedevent is charged once per row written. Rows skipped byonlyNeedsAttentionare not charged, and a run that fails before writing any row charges no review events. The separate Google Maps step is billed to you by that actor. - Webhook and Notion: a failed
webhookUrlcall or a failed Notion step is logged and never fails the run.
Input
{"businesses": ["Joe's Pizza, New York"],"maxReviews": 30,"onlyNeedsAttention": false,"replyTone": "warm"}
businesses accepts Google Maps URLs or "Name, City" search strings.
onlyNeedsAttention limits output to unanswered reviews at 3★ or lower —
the ones actually costing the business something. replyTone is warm,
professional, or brief. Replies are generated by built-in templates by
default, at no extra cost; optionally pass an openaiApiKey to get
AI-written replies instead (it falls back to the template if the API call
fails).
Already scraped your reviews? Add flags without re-scraping
Paste the dataset ID of a run from another Google Maps scraper into inputDatasetId (leave businesses empty).
We read that dataset — place rows with a reviews list, or one row per review — and add sentiment, topic,
urgency, the risk flag and a suggested reply to each review. Two ways to let this actor read it: paste your Apify API token in apifyToken (Console > Settings > API & Integrations; used only to read that dataset), or open the dataset (Storage), click Share and set General access to "Anyone with the link can view".
Billing is the same per-review price.
Pricing
$0.005 per review processed. 1,000 reviews across a client's locations costs $5. Agencies typically run this on a schedule across many client locations, which makes it a recurring cost, not a one-off.
Heads-up on the Google Maps step: when you give Google Maps URLs or "Name, City", the reviews are fetched by a separate, maintained Google Maps actor that runs in your account. Apify bills that actor's usage to you separately from the $0.005 per review. If you already have reviews from another Google Maps scraper, pass its dataset ID in inputDatasetId and there is no Maps step at all.
How it compares
No custom Google Maps scraping to maintain — this builds on a maintained maps actor for the raw review data instead of fighting Google's anti-bot directly, so it's more stable to run repeatedly than a bespoke reviews scraper would be. Reply drafting is template-based by default (free, no external API call); AI-written replies are optional and billed by whichever API key you supply, not by this actor.
Use with n8n / Make / Zapier
Add an Apify integration node, run this actor with your business list, then
read the finished dataset back into your workflow to post needsAttention
rows into a task list or Slack channel — or set webhookUrl to push them
directly.
FAQ
Are AI-written replies required? No — templates are the default and cost nothing extra. AI replies are an opt-in upgrade if you supply your own OpenAI API key.
What counts as "needs attention"? A review that hasn't been replied to by the business and is 3★ or lower — the combination most likely to be actively costing the business future customers.
Does it post the reply for me? No — suggestedReply is a draft you (or
the business owner) copy and paste into Google's reply box. The actor doesn't
post anything back to Google.
Can I run this for multiple locations in one call? Yes — pass multiple
entries in businesses, one per location.
How do I find businesses to pitch this to? Pair it with the Google Maps MX-Checked Email Scraper: pull businesses in a category and location, see their review counts, and get an owner email to pitch the fix.
Send urgent reviews straight to Notion (new, Sep 2026)
Authorize Notion once in Apify Console → Settings → API & Integrations → MCP connectors (choose Notion, sign in). Then in this Actor pick that
connector in Notion connector and paste the link of any Notion page in Notion page to create the table in. The first run creates a
"Google reviews" table inside that page and fills it: review, business, stars, urgency, risk flag, needs-attention flag, topic, reviewer,
suggested reply, date and link. By default only reviews that need attention go to Notion; switch on Send every review to send all.
To keep adding to the same table on later runs, paste the table ID from the log (also saved in the run's OUTPUT record) into
Existing Notion table ID. This Actor never sees your Notion login: Apify's connector proxy holds it. If the Notion step fails, your dataset
results are still delivered and the reason is logged.
Use it from an AI agent (MCP)
Add this Actor to any MCP client (Claude, Cursor, VS Code) with one URL:
https://mcp.apify.com?tools=leadharbor/local-review-booster
Or call it through the Apify API with an input like this:
{"businesses": ["Joe's Pizza, New York"],"maxReviews": 30}
Returns one row per Google Maps review: rating, sentiment, topic, urgency, risk flag, reply status and a suggested reply. Results land in the run's default dataset (JSON, CSV or Excel). No login or API key is needed for the sites it reads, and pay-per-event pricing works with Apify's x402 agent payments.
API usage
Run it from your own code with an Apify API token. The input below is this actor's prefilled example.
curl (runs the actor and returns the dataset items):
curl -X POST "https://api.apify.com/v2/acts/leadharbor~local-review-booster/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"businesses": ["Joe's Pizza, New York"]}'
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("leadharbor/local-review-booster").call(run_input={"businesses": ["Joe's Pizza, New York"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Changelog
28 Sep 2026 — Add flags to another scraper's reviews with inputDatasetId; optional Notion output; more review fields (review link, likes, local guide, owner reply, photos); Google Maps sub-run cost disclosed; buyer max-charge cap. Plus 5 public example tasks with their own pages.
More from leadharbor
- Google Maps MX-Checked Email Scraper
- YouTube Video Scraper
- Airbnb Listings Scraper
- E-commerce Price & Restock Monitor
- App Store Review Monitor
- Website Contact Extractor
- Bulk Email Verifier
- USA Business Email Finder
- UK Business Email Finder
- UAE Business Email Finder
- UAE Property Broker Contacts
- LinkedIn Jobs Scraper
Using this actor? A quick review helps other buyers find it: local-review-booster
AI triage fields (Sep 2026)
Each review also gets (and needsAttention now also turns on for high/critical or risk-flagged reviews, whatever the stars):
| Field | Values |
|---|---|
aiTopic | product_quality, service_staff, price_value, wait_delivery, billing_refund, bugs_performance, cleanliness_safety, general_praise, other |
aiUrgency / aiUrgencyScore | none / low / high / critical (0–3) — judged from the review text, so a 4★ review reporting food poisoning is still critical |
aiRiskFlag | true when the review describes a health, safety, legal, fraud, discrimination or privacy problem |
These are AI judgments — treat them as a triage aid, not a verdict. Fields are empty if the AI service is unavailable; the scrape itself never fails because of it.
Related actors
- Disposable Email & Domain Checker — Flags throwaway and free-provider email domains using 5 merged public lists. $0.30 per 1,000 checks.
- Domain Trust Check — 0-100 trust score for a domain from domain age, SSL, SPF/DKIM/DMARC and disposable-domain lists. $2.50 per 1,000 domains.
- Google Maps Scraper — MX-Checked Business Emails — Finds local businesses on Google Maps with emails, phones and socials.
- Telegram Channel Scraper — Public Telegram channel posts: text, views, dates, media links. $1.50 per 1,000 messages.