Google Reviews Analysis AI - complaints, praise & contacts on the Apify Store →
_Draft tutorial for the Apify blog guest program, dev.to, Medium or Hashnode. ~1,200 words. Canonical link: https://apify.com/rich_minds/google-reviews-insights — disclose at the top that you built the Actor._
I built the Actor this tutorial uses. It is a paid Actor on the Apify Store with the first 25 businesses free.
If you run a reputation-management or local-SEO agency, Google reviews are your best prospecting signal. A dentist whose last five reviews complain about the phone never being answered, with no reply from the owner, is a business that needs you — and the reviews are the proof you would show them.
Getting the reviews is easy. The Google Maps Reviews Scraper on Apify is used by more than 6,800 people a month and returns every review as a row: stars, text, date, the owner's reply. The hard part starts after that: grouping the rows per business, reading dozens of reviews to find the complaints that repeat, checking whether the owner replies, finding an email, deciding who is worth contacting and writing a first line that proves you read their reviews.
This tutorial shows how to do the whole thing in one run with Google Reviews Analysis AI.
One row per business with:
reputationRisk;Open the Store page and click Try it. The form is pre-filled with three sample businesses; nothing is charged. The run applies the Reputation agency preset (keep businesses rated 4.3 or lower with unanswered complaints), so one of the three — a non-profit rated 4.8 — is filtered out, and two reputation reports come back.
This is the real AI output for the sample café (the sample points it at a public website so the crawler has something to read):
{
"name": "Corner Café",
"googleRating": 3.6,
"reviewsAnalyzed": 5,
"negativeReviewCount": 4,
"unansweredNegativeReviews": 4,
"ownerResponseRate": 0.0,
"reputationRisk": 91,
"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."
],
"score": 82,
"label": "hot",
"outreachOpener": "I noticed three of your recent reviews mention slow service and long waits, yet none have been answered—let's turn that around."
}
And the sample dentist, which has no website in the sample and therefore no contacts, still gets its analysis: recurring complaint "front desk never answers phone", praise "Dr. Patel is gentle with kids", a reply rate of 33 % and a warm label with the next step "Visit the clinic in person to introduce a free reputation audit".
Two ways to feed it places:
Places you already know. Keep Where do the reviews come from? on Run a source Actor and put Google Maps URLs in the source input:
{
"preset": "reputation-agency",
"sourceMode": "actor",
"discoveryInput": { "startUrls": [{ "url": "https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4" }] },
"maxReviewsPerBusiness": 30,
"maxDiscoveryChargeUsd": 0.5
}
A category in a city. Switch the source to the Google Maps Scraper, which also returns websites and phones — that is what the contact enrichment needs:
{
"preset": "reputation-agency",
"sourceMode": "actor",
"discoveryActorId": "compass/crawler-google-places",
"discoveryInput": { "searchStringsArray": ["dentist"], "locationQuery": "Austin, TX", "maxCrawledPlacesPerSearch": 20 },
"requireEmail": true,
"maxDiscoveryChargeUsd": 0.5,
"maxQualified": 25
}
maxDiscoveryChargeUsd caps what the scraper can spend on your account; maxQualified caps what you pay this Actor.
Already have a scraper dataset? Use "sourceMode": "dataset" with its datasetId — no new scraping.
Presets fill this for you, but two sentences of your own make the scoring and the openers much better:
goalDescription: "Restaurants rated 3.5–4.3 whose reviews complain about slow service and get no reply."offerDescription: "We answer every review within 24 hours and run a review-request campaign."targetFlags keeps only businesses with the problem you solve — for example unanswered_negative_reviews and low_owner_response_rate.
The dataset has four views: Qualified businesses (the overview), Reputation report (what you show the owner), Outreach sheet (import into Smartlead, Instantly or lemlist) and Contact sheet (CRM import). RUN_SUMMARY shows the funnel: how many businesses were loaded, how many each filter dropped, how many qualified.
Worst case — 40 clinics with 30 reviews each, every one qualifying, AI on: $0.72 of scraping + $0.135 here (25 free, 15 × $0.009) + about $0.40 of tokens ≈ $1.26 for 40 reputation reports.
Schedule the same input weekly in the Console. Cross-run memory (dedupeAcrossRuns, on by default) means each run delivers — and charges — only businesses you have not received before. Then connect the output:
webhookUrl — each business arrives as {"event": "business.qualified", "business": {…}};from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/google-reviews-insights").call(run_input={
"preset": "reputation-agency",
"sourceMode": "actor",
"discoveryInput": {"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"]},
"maxDiscoveryChargeUsd": 0.5,
"maxQualified": 25,
})
for biz in client.dataset(run["defaultDatasetId"]).iterate_items():
print(biz["name"], biz["reputationRisk"], biz["recurringComplaints"], biz["outreachOpener"])
https://mcp.apify.com/?actors=rich_minds/google-reviews-insights as an MCP server and ask "analyse the reviews of these five dentists and tell me who to call first".Only public listings, public reviews and the business's own website are used. Reviewer names, IDs and photos are dropped on import and never stored. The analysis covers the newest maxReviewsPerBusiness reviews, not the whole history. Openers are drafts for a human to send — follow the outreach rules where you work.
Google Reviews Analysis AI on the Apify Store: the demo is free, and so are your first 25 qualified businesses. If it saves you time, a review on the Store helps others find it.
Google Reviews Analysis AI - complaints, praise & contacts on the Apify Store →