Google Reviews Analysis AI - complaints, praise & contacts avatar

Google Reviews Analysis AI - complaints, praise & contacts

Pricing

Pay per event

Go to Apify Store
Google Reviews Analysis AI - complaints, praise & contacts

Google Reviews Analysis AI - complaints, praise & contacts

First 25 businesses free. Google reviews analysis per business: recurring complaints, praise, owner reply rate, a reputation-risk score, verified contacts and an AI opener. Pay only for businesses that qualify.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Rich Minds

Rich Minds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Google reviews analysis you can act on: one reputation report per business — the complaints that keep coming back, what customers praise, the negative reviews nobody answered, a risk score, and who to contact.

⚡ First 25 businesses free · 💵 $0.001 per qualified business · 🤖 $0.009 with the AI analysis · 🔑 No API key needed on Apify plans that can run Store Actors (which plan?) · 🧾 you pay only for businesses that qualify

One row per qualified business — rating, unanswered negatives, reputation risk, recurring complaints, score and the AI opener

Try it in 30 seconds. Click Try it — the form is already filled with a free demo (three sample businesses, nothing charged). Then point it at your own Google Maps places: your first 25 qualified businesses are free. → What a run costs · What the AI adds · Run it weekly

⚡ At a glance

What you getone row per business: reputation metrics, recurring complaints, praise themes, 3 talking points, risk score, contacts, an outreach opener
You provideGoogle Maps place URLs, a category + city, an existing scraper dataset — or pasted review rows
Sourceruns compass/Google-Maps-Reviews-Scraper (or the Google Maps Scraper) on your account
Demo run3 sample businesses → 1 filtered out by the rating cap → 2 qualified reports (the output below)
Pricefirst 25 free, then $0.001 per qualified business, $0.009 with AI; filtered-out businesses cost $0
Keys / setupnone on Apify plans that can run Store Actors — AI runs through Apify's built-in model access; on the free plan use llmProvider: byok with your own key
Works withSchedules, webhooks, Google Sheets, Slack, Make / n8n / Zapier, MCP & AI agents

🎯 What this Actor does

It reads the reviews the Google Maps Reviews Scraper returns, groups them into one row per business, and delivers only the businesses that match what you are looking for:

  • Reputation metrics — reviews analysed, recent average vs overall rating, negative count, unanswered negatives, owner reply rate, a rule-based reputationRisk (0–100) and a sample of the negative reviews (text only — reviewer identities are never kept).
  • AI review analysis — up to 4 recurringComplaints (themes found in more than one review), praiseThemes, exactly 3 talkingPoints tied to a specific review or website fact, an AI risk score, a one-line summary and the reasons behind the score.
  • Verified contacts — when the source carries a website: direct vs generic email (every domain MX-checked, optional mailbox verification with your MillionVerifier / NeverBounce key), phone, WhatsApp, social profiles and the owner's name when the site names one (never invented).
  • Website signals — live/dead, tech stack, tracking pixels, online booking, chat, a speed grade: the gaps a local agency sells into.
  • Fit score and label (hot / warm / cold) against your goal, with targetFlags to keep only the businesses that have the problem you solve.
  • Outreach — a subject line and an opener (email, SMS, WhatsApp, DM or call script) anchored on one observed detail, plus a next step.

It remembers every business you already received (never billed twice), works as a tool for AI agents through Apify's MCP server, and can POST each qualified business to a webhook.

🆚 Why this instead of the Google Maps Reviews Scraper?

compass/Google-Maps-Reviews-Scraper is the tool 6,800+ Apify users a month use to pull reviews — and this Actor runs it for you. What the scraper returns is one row per review: stars, text, date. The work starts afterwards. This Actor does that work.

Google Maps Reviews Scraper aloneGoogle Reviews Analysis AI
Rowone per reviewone per business, with the whole review picture
Price$0.0006 per review scrapedthe scraper's price on your account + $0.001 per qualified business ($0.009 with AI), first 25 free
Patternsyou read the reviewsrecurring complaints, praise themes, three talking points, risk score
Owner engagementnot summarisedreply rate, unanswered negatives, recent-vs-overall trend
Contactsnoneemail (MX-checked), phone, WhatsApp, socials, owner name — from the business's own site
Repeat runsthe same places againcross-run memory: only new businesses are delivered and charged
Spend controlper reviewhard caps: maxQualified, maxToProcess, maxDiscoveryChargeUsd

💵 Pricing — what a run really costs

Pay per event: one event per qualified business, nothing else.

EventWhen it is chargedPrice
free-tieryour first 25 qualified businesses on this Actor, in any mode$0.00
qualified-business-basicAI off — reputation metrics, flags, reply rate, negative-review sample, contacts, website signals, rule scores$0.001
qualified-business-aiAI on — everything above plus complaints, praise, talking points, AI risk, fit score with reasons, subject line, opener, next step$0.009

Never charged: loading and grouping, website crawling, email checks, businesses below minScore, businesses that fail a filter, businesses you received in an earlier run. Platform compute is included in the event price.

How that compares — $0.001 is 1.3× the median unit price of the source Actor and its closest competitors ($0.00075), but one qualified business replaces 30 raw review rows — about $0.02 of review rows at that price.

Billed separately, at cost: the source Actor on your account (≈ $0.0006 per review, so ≈ $0.018 for a business with 30 reviews; dataset and list mode need no source run), and AI tokens through Apify's model access (≈ $0.005–0.01 per business at Claude Haiku 4.5 list prices — computed from the prompt size, not a platform measurement) or your own key.

Worked example — 40 clinics × 30 reviews, every one qualifies (the worst case for your bill), AI on:

LineCalculationTotal
Source scraper on your account1,200 reviews × $0.0006$0.72
This Actor, first run25 free + 15 × $0.009$0.135
AI tokens40 × ≈ $0.01≈ $0.40
Total40 reputation reports with contacts and openers≈ $1.26

Filters that drop businesses lower the second and third lines — a dropped business costs $0 here.

🤖 What the AI tier adds

The same business with AI off (qualified-business-basic, $0.001) — facts, flags and a rule score, from the demo run:

{
"name": "Corner Café", "googleRating": 3.6, "reviewsAnalyzed": 5, "negativeReviewCount": 4,
"unansweredNegativeReviews": 4, "ownerResponseRate": 0.0, "reputationRisk": 91, "ruleScore": 81,
"flags": ["low_rating", "recent_negative_reviews", "unanswered_negative_reviews", "rating_trend_down"]
}

AI on (qualified-business-ai, $0.009) — the same row, read and judged against your goal:

{
"name": "Corner Café", "aiReputationRisk": 88, "aiScore": 72, "score": 82, "label": "hot",
"recurringComplaints": ["slow service and long waits"],
"praiseThemes": ["nice pastries", "sunny terrace", "decent food"],
"talkingPoints": [
"Three of the last five reviews mention slow service and long waits, yet none have received a response.",
"A recent 5-star review praised your pastries and sunny terrace, showing you have strong positives to build on."
],
"outreachOpener": "I noticed three of your recent reviews mention slow service and long waits, yet none have been answered—let's turn that around."
}

Reading 30 reviews, spotting the pattern, checking replies and writing a first line is the part that takes an agency 10 minutes per business. The AI tier does it for $0.009 plus tokens.

🚀 How to use it

  1. Click Try it — the free demo is pre-filled and works as is.
  2. Pick a campaign preset (campaignPreset): Reputation agency, Local SEO agency, Business owner self-audit or CX / feedback software — it fills the goal, offer, rating filter and target flags; anything you type wins.
  3. Pick a source (sourceMode): actor runs the reviews scraper for place URLs (startUrls / placeIds in discoveryInput) or the Google Maps Scraper for a category + city; dataset reads a previous scraper run (datasetId); list takes rows you paste (itemsList).
  4. Describe what you look for and what you offer (goalDescription, offerDescription) — "Restaurants rated 3.5–4.3 whose reviews complain about slow service and get no reply" beats "restaurants".
  5. Set filters and caps — maxRating, targetFlags, requireEmail, minScore, maxQualified, maxDiscoveryChargeUsd — and press Start.
  6. Open the dataset — the Qualified businesses, Reputation report, Outreach sheet and Contact sheet views; export CSV / Excel / JSON.
load reviews → group per business → free filters (rating, review count, closed, seen before)
→ website crawl + email checks → reputation metrics, flags, rule score → target-flag filter
→ AI analysis of the best candidates → rank & cap → charge one event per qualified business → push → webhook

⚙️ Input

Reviews for places you already know:

{
"campaignPreset": "reputation-agency",
"sourceMode": "actor",
"discoveryInput": { "startUrls": [{ "url": "https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4" }] },
"maxReviewsPerBusiness": 30,
"maxDiscoveryChargeUsd": 0.5,
"maxQualified": 25
}

Search a category in a city (websites and phones included, so contacts can be found): set discoveryActorId to compass/crawler-google-places and discoveryInput to {"searchStringsArray": ["dentist"], "locationQuery": "Austin, TX"}.

FieldDefaultWhat it does
campaignPresetcustomOne of the 4 presets, or your own settings
sourceModeactoractor, dataset or list (the form starts on the free list demo)
discoveryActorIdcompass/Google-Maps-Reviews-ScraperThe source Actor in actor mode
maxDiscoveryChargeUsd2Stops the source run at this spend (form: $0.50) — API calls without it are capped at $2
maxReviewsPerBusiness30Newest reviews kept and shown to the AI per business
maxRating0Keep only businesses rated at or below this (4.3 = a reputation problem; 0 = off)
minScore50Below this = not delivered, not charged
requireEmailfalseOnly deliver businesses with an email found on their website
enableAitrueAI analysis on/off
llmProviderapifyApify's model access, or byok with llmApiKey
outreachChannelemailemail (with subject), sms, whatsapp, dm or call
maxQualified100Hard cap on delivered businesses (and on what you pay)
dedupeAcrossRunstrueNever deliver the same business twice

The rest, all in the Input tab: datasetId, itemsList, defaultCountryCode, minReviewsPerBusiness, minRating, targetFlags, skipClosedPlaces, enrichWebsite, maxPagesPerSite, respectRobotsTxt, verifyEmails, emailVerifier + emailVerifierApiKey, excludeFreeEmailProviders, llmModel, llmApiKey, outreachTone, aiCandidateMultiplier, deepResearch + maxToolCallsPerItem (the AI may open the business's page and search the web before scoring), maxToProcess, dedupeStoreName, webhookUrl + webhookHeaders, proxyConfiguration.

Target flags: low_rating, mediocre_rating, few_reviews, recent_negative_reviews, negative_share_high, unanswered_negative_reviews, low_owner_response_rate, rating_trend_down, no_website, website_unreachable, no_email_found, no_online_booking, no_chat_widget, no_analytics, no_ads_pixel, slow_website, site_builder_template, no_reviews_analysed, closed.

📤 Output

One dataset item per qualified business, best-scoring first. A real row from the AI run on the sample input (the demo's café points at a real public website, mozilla.org, so the crawl has something to read — that is where its email and socials come from):

{
"name": "Corner Café",
"category": "Cafe",
"city": "San Francisco",
"googleRating": 3.6,
"reviewCount": 214,
"reviewsAnalyzed": 5,
"sampleAverageStars": 2.6,
"negativeReviewCount": 4,
"unansweredNegativeReviews": 4,
"ownerResponseRate": 0.0,
"reputationRisk": 91,
"aiReputationRisk": 88,
"recurringComplaints": ["slow service and long waits"],
"praiseThemes": ["nice pastries", "sunny terrace", "decent food"],
"talkingPoints": [
"Three of the last five reviews mention slow service and long waits, yet none have received a response.",
"A recent 5-star review praised your pastries and sunny terrace, showing you have strong positives to build on.",
"Your Google rating sits at 3.6 despite a solid A grade for site performance, indicating a gap between online perception and site quality."
],
"bestEmail": "trademark-permissions@mozilla.com",
"contactQuality": "other",
"websiteStatus": "live",
"trackingTools": ["Google Tag Manager"],
"performanceGrade": "A",
"targetFlagsMatched": ["unanswered_negative_reviews", "recent_negative_reviews", "low_owner_response_rate", "low_rating"],
"contactabilityScore": 65,
"ruleScore": 81,
"aiScore": 72,
"score": 82,
"label": "hot",
"reasons": ["Google rating is 3.6, well below the 4.3 threshold", "Owner has replied to 0% of reviews", "Multiple recent reviews cite slow service and long waits"],
"summary": "Corner Café is a San Francisco cafe with a 3.6-star rating plagued by recurring slow-service complaints and no owner replies.",
"outreachSubject": "Improving Corner Café's Google reputation",
"outreachOpener": "I noticed three of your recent reviews mention slow service and long waits, yet none have been answered—let's turn that around.",
"recommendedNextStep": "Craft a personalized email offering a free audit of their Google review responses.",
"chargedEvent": "free-tier"
}

The Reputation report view — reply rate, AI risk, praise, talking points and summary per business

ViewUse it for
Qualified businessesthe overview: rating, negatives, risk, score, complaints, email, opener
Reputation reportwhat an agency shows the owner: reply rate, trend, complaints, praise, talking points, summary
Outreach sheetSmartlead / Instantly / lemlist import or a dialer: decision-maker, email, subject, opener, next step
Contact sheetCRM import: emails, quality, phone, WhatsApp, website, socials, address

The run's RUN_SUMMARY (also its OUTPUT) holds the funnel — businesses loaded → filtered → AI-analysed → qualified — skip counts per reason, charged events and the free-tier balance.

⭐ Found it useful? A review on the Store helps others find it — it takes a minute on the Actor's page.

🔁 Run it weekly

  1. Actions → Schedule in the Console — weekly (or daily) on the same places, your input saved as is.
  2. Keep dedupeAcrossRuns: true — every business you received is remembered, so the next run delivers and charges only new ones. Add reviewsStartDate to discoveryInput to analyse only fresh reviews.
  3. Add webhookUrl or the Google Sheets / Slack integration, and new reputation reports land where you work.

Weekly cost is the new businesses only: 10 new per week × $0.009 = $0.09 plus tokens and the scraper.

🎯 Try it for your niche

Saved inputs for three niches are in the repo (storage-example/tasks/); paste one into the form, run it once, then schedule it. Each caps the source at $0.50.

NicheWhat it looks forInput
Reputation agencydentists in Austin, TX rated ≤ 4.3 with unanswered complaints and an email on their sitereputation-agency-dentists.json
Local SEO agencyrestaurants in Denver, CO with few reviews, no replies, weak websitelocal-seo-restaurants.json
CX / booking softwarephysiotherapy clinics in Manchester, UK whose reviews mention waits, phones, bookingscx-saas-clinics.json

🔌 Integrations, automation and API

  • Google Sheets / Slack — one click in the Actor's Integrations tab; the Reputation report view maps straight onto a sheet.
  • Zapier / Make / n8n — set webhookUrl to the tool's webhook trigger; each qualified business arrives as {"event": "business.qualified", "business": {…}}. Or trigger on Apify's Run succeeded event and read the dataset.
  • Cold-email tools — export the Outreach sheet as CSV; the columns map onto Smartlead / Instantly / lemlist custom fields, so a sequence can open with the outreachOpener column.
  • Schedules — see Run it weekly.
  • AI agents / MCP — the first call should be the free trial: sourceMode: "list" with a few review rows. An empty {} runs the free demo.
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/google-reviews-insights").call(run_input={
"sourceMode": "list", # free trial on your own rows; switch to "actor" + discoveryInput for real places
"itemsList": [{"title": "Corner Café", "totalScore": 3.6, "reviews": [
{"stars": 1, "text": "Cold coffee, 20 minute wait.", "publishedAtDate": "2026-09-10"},
{"stars": 2, "text": "Slow service again.", "publishedAtDate": "2026-08-28"},
{"stars": 5, "text": "Lovely pastries."}]}],
"goalDescription": "Cafés with recurring service complaints the owner ignores",
"maxQualified": 25,
"maxDiscoveryChargeUsd": 0.5, # spend cap on your account once you switch to "sourceMode": "actor"
})
for biz in client.dataset(run["defaultDatasetId"]).iterate_items():
print(biz["name"], biz["reputationRisk"], biz["recurringComplaints"], biz["outreachOpener"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('rich_minds/google-reviews-insights').call({
sourceMode: 'list',
itemsList: [{ title: 'Corner Café', totalScore: 3.6, reviews: [
{ stars: 1, text: 'Cold coffee, 20 minute wait.' }, { stars: 2, text: 'Slow service again.' }, { stars: 5, text: 'Lovely pastries.' }] }],
goalDescription: 'Cafés with recurring service complaints the owner ignores',
maxQualified: 25,
maxDiscoveryChargeUsd: 0.5, // spend cap once you switch to sourceMode: 'actor'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((b) => [b.name, b.reputationRisk, b.label]));

Use it from Claude, ChatGPT or any MCP client — add Apify's MCP server with this Actor as a tool:

{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=rich_minds/google-reviews-insights"}}}

Then ask: "Run google-reviews-insights in list mode on these reviews first (free) and tell me the recurring complaints; then analyse these 5 dentists' Google Maps URLs with maxDiscoveryChargeUsd: 0.5 and tell me who to call first."

Run outcomes — what your integration sees

OutcomeRun statusDatasetOUTPUTCharged?What to do
Free demo ({} or the pre-filled sample)SUCCEEDEDsample businessesdemo: truenoset discoveryInput or paste your own rows
SuccessSUCCEEDEDqualified businesses, best firstfunnel, chargedEventsper qualified business—
Nothing matchedSUCCEEDEDemptyqualified: 0noloosen minScore, maxRating, targetFlags
Invalid inputFAILEDempty—nofix the field the status message names
Source failedFAILEDemptysourceErrornofollow the reason (plan, spend cap, dataset mode)
AI unavailableSUCCEEDEDrule-scored businessesaiErrorbasic pricellmProvider: byok with your own key

👥 Who is it for?

You are…You run it to…Start with
A reputation / review-management agencyfind businesses losing customers to unanswered bad reviews — the report is the pitchpreset Reputation agency, requireEmail: true
A local SEO agencyfind good businesses with a weak review engine: few reviews, no replies, weak sitepreset Local SEO agency
A CX, booking or messaging SaaSreach businesses whose reviews describe the problem your product fixespreset CX / feedback software, targetFlags
A business owner or franchise manageraudit your own locations or a competitor's reviewspreset Business owner, outreachChannel: call
A lead-gen freelancersell a weekly reputation-leads feed into a client's Google Sheetany preset + a schedule + the Sheets integration

🧠 How the AI works

  • Grounded, not generative. The model sees one business at a time — Google Maps facts, the review sample (stars, text, date, whether the owner replied), website signals — and returns a typed assessment. A complaint counts as recurring only when it appears in more than one review; every talking point must point at a specific review or website fact. Owner names are checked against the crawled text and dropped if absent; cold businesses get no opener.
  • Your goal, your offer. The score measures fit with goalDescription and how likely the business needs offerDescription. reputationRisk is separate, so a spotless business can still fit a review-generation offer.
  • Tokens where they matter. Only the best rule-scored businesses get the AI pass (aiCandidateMultiplier × maxQualified), and the review sample is capped at maxReviewsPerBusiness.
  • Model. Default Claude Haiku 4.5 through Apify's built-in model access; any OpenRouter slug in llmModel, or llmProvider: "byok" with your own OpenAI, Anthropic, Gemini or Groq key.
  • Graceful fallback. If the model cannot be reached, the run continues with rule-based metrics and those businesses are charged at the basic price.

🔒 Data, compliance and limits

  • Only public data: Google Maps listings, public Google reviews and the business's own public web pages. No login, no cookies.
  • Reviewer personal data is never stored — names, IDs, profile URLs and photos are dropped on import, and the source runs with reviewer personal data switched off.
  • The crawler respects robots.txt and reads a handful of pages per site. No LinkedIn or personal-profile scraping — owner names come only from what the business publishes about itself.
  • Contacts need a website in the source. The reviews scraper returns reviews only; use the Google Maps Scraper as source (or rows with websites) for emails and phones. Without a website a business is still analysed on its reviews.
  • The analysis is a sample of the newest maxReviewsPerBusiness reviews. Email checks are MX-level unless you add a mailbox verifier; the speed grade is a crawl-time heuristic.
  • Built for B2B prospecting and reputation work: the opener is a draft for a human to send. Follow the outreach laws that apply to you (CAN-SPAM, GDPR/PECR, …).

❓ FAQ

How much will one run cost me? Your first 25 qualified businesses are free on this Actor. After that $0.001 per qualified business, or $0.009 with AI, plus the source scraper on your account (≈ $0.018 for 30 reviews) and AI tokens (≈ $0.01 per business). The worked example shows 40 businesses for ≈ $1.26 in the worst case.

Is this a Google reviews scraper? It uses one: in actor mode it runs the Google Maps Reviews Scraper on your account and turns its rows into one analysed report per business. If you already have a scraper dataset, dataset mode reads it with no new scraping.

Can I use it with Google Maps reviews I already scraped? Yes — dataset mode takes any run of the Google Maps Reviews Scraper or the Google Maps Scraper with reviews; list mode takes rows you paste.

Is this review sentiment analysis? More than that: besides the negative share and the rating trend it names the complaint themes that repeat, what customers praise, and three talking points you can use — per business, not per review.

How does it help with reputation management? It finds the businesses with unanswered negative reviews and falling ratings, and hands you the evidence (the complaint themes, the reply rate) plus a first line — the report an agency shows the owner.

Can I use it to find local SEO leads? Yes — the Local SEO agency preset keeps good businesses with few reviews, no owner replies and a weak or missing website, with contacts from their site.

Which Apify plan do I need? Any plan runs the free demo and dataset / list mode. Running the source scraper and the built-in AI (Apify's model access) needs a plan that can run Store Actors; on the free plan use llmProvider: "byok" with your own key. If the AI is refused, the status says "AI unavailable" and businesses are charged at the basic price.

What happens if nothing matches my filters? The run succeeds with 0 rows and charges nothing; RUN_SUMMARY shows how many businesses each filter dropped.

Will I be charged for the same business twice? Not with dedupeAcrossRuns on (default): every business you received is remembered on your account. Use a different dedupeStoreName per campaign.

Can I schedule it? Yes — see Run it weekly; you only pay for new businesses.

Is it legal? It processes public listings and public reviews, never stores reviewer identities and does not log in anywhere. How you use the output (outreach) is governed by the laws that apply to you.

🧩 More Actors from the same developer

Not quite your use case? The same pay-per-qualified-result model, for other lead sources:

🆘 Support

Something missing or wrong? Open an issue on the Issues tab of this Actor — requests from real campaigns are shipped first.

📝 Changelog

  • 0.1.x (2026-09-25) — market-parity pricing ($0.001 / $0.009 per qualified business, first 25 free); {} and the pre-filled form run a free demo; $2 default spend cap on the source for API calls; a review ask in the success status.
  • 0.1 (2026-09-21) — initial release: reviews grouped per business from either Google Maps flow; reputation metrics, flags and risk; AI complaints, praise, talking points, fit score and opener; website contact enrichment with MX / mailbox verification; 4 campaign presets; targetFlags; cross-run dedupe; webhook; free tier.