Review Intelligence Analyzer - Google Reviews Sales Signals
Pricing
from $5.00 / 1,000 analyzed places
Review Intelligence Analyzer - Google Reviews Sales Signals
Analyze a business's Google Maps reviews with an LLM and return structured intelligence a sales team can act on: overall sentiment, complaint themes, praise themes, owner-response tone, red flags and opportunity signals. Bring your own LLM key (Gemini, Groq, OpenRouter). Pay-per-result.
Pricing
from $5.00 / 1,000 analyzed places
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Review Intelligence Analyzer
Turn a business's Google Maps reviews into structured intelligence a sales team can act on. Feed in place records with user_reviews[] populated and get back overall sentiment, complaint themes, praise themes, owner-response tone, red flags and opportunity signals. Bring your own LLM key (Gemini has a generous free tier).
Pair with the Google Maps Scraper run with includeReviews: true, and get one intelligence row per business ready to prioritize outbound.
What It Does
Given a Google Maps place record with user_reviews[] populated, the actor asks an LLM to analyze the reviews and return:
overall_sentiment- one ofstrongly_positive,positive,mixed,negative,strongly_negativesentiment_score- a number between -1.0 and +1.0complaint_themes[]- up to 5 objects{theme, frequency, sample_quote}when reviews contain recurring complaintspraise_themes[]- up to 5 objects with the same shape when reviews contain recurring praiseowner_tone- one ofprofessional,defensive,dismissive,absent,mixedred_flags[]- subset offake_review_pattern,recent_1_star_cluster,no_owner_response,hostile_owner_response,rating_drop_recent,language_barrieropportunity_signals[]- subset ofready_for_promotion,high_repeat_customer,asks_for_specific_service,seasonal_demand,underrated_gem
The LLM only references what actually appears in the reviews. Sample quotes are verbatim snippets, never paraphrased. Themes below 2 occurrences are dropped.
When To Use
- Prioritize outbound: skip businesses with
strongly_positivesentiment and emptyred_flags, prioritize those withno_owner_responseorrecent_1_star_cluster. - Sharper cold email: fold
complaint_themes[0].themeor anopportunity_signalsvalue into your opener. - Reputation risk audits: flag agency clients whose review streams show
hostile_owner_responseor arating_drop_recent. - Discovery for the "underrated gem" ICP.
Input
Two shapes are accepted and can be mixed in one run.
Flat places list (natural shape, pipe the google-maps-scraper output directly):
{"places": [{"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4","title": "Example Coffee House","category": "Coffee shop","rating": 4.6,"review_count": 1240,"complete_address": { "city": "Berlin", "country": "Germany" },"user_reviews": [{ "rating": 5, "text": "...", "published_at": "2026-05-01", "response_from_owner": null },{ "rating": 2, "text": "...", "published_at": "2026-04-15", "response_from_owner": "..." }]}],"geminiApiKey": "AIza..."}
Companies shape (with a company_id passthrough for join-back to your CRM):
{"companies": [{ "company_id": "acme-42", "place": { "place_id": "ChIJ...", "title": "Example Company", "user_reviews": [] } }],"geminiApiKey": "AIza..."}
maxReviewsSampled (default 30, min 5, max 60) caps how many reviews per place go into the LLM prompt. The sampler blends most-recent, highest-rated and lowest-rated reviews so both praise and complaint edges are represented.
LLM Configuration
You must supply at least one LLM key. All three providers are supported:
| Provider | Free tier | Get a key |
|---|---|---|
| Gemini | Yes (generous) | https://aistudio.google.com/app/apikey |
| Groq | Yes | https://console.groq.com/keys |
| OpenRouter | Pay-as-you-go, cheap | https://openrouter.ai/keys |
Set llmProvider to pick the primary, fallbackProvider and fallback2Provider for the chain. Same-provider transient errors (5xx, timeouts) get one retry. Auth and quota errors fall through to the next provider.
Output
One row per input place:
{"company_id": "acme-42","place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4","name": "Example Coffee House","analyzed_at": "2026-07-21T10:30:00Z","overall_sentiment": "positive","sentiment_score": 0.62,"complaint_themes": [{ "theme": "slow service on weekends", "frequency": 3, "sample_quote": "waited 20 minutes just to order" }],"praise_themes": [{ "theme": "friendly staff", "frequency": 6, "sample_quote": "the team remembers our order" },{ "theme": "great pastries", "frequency": 4, "sample_quote": "chocolate croissant was fantastic" }],"owner_tone": "professional","red_flags": [],"opportunity_signals": ["high_repeat_customer"],"reviews_analyzed": 10,"llm_provider": "gemini","llm_model": "gemini-2.0-flash","llm_tokens_input": 1240,"llm_tokens_output": 340}
Places with no reviews or no LLM key emit a row with skip_reason set (no_reviews, no_llm_key, or llm_failed) and no billing charge. Themes and enum arrays default to [], sentiment fields to null.
How To Use It
- Run Google Maps Scraper with
includeReviews: trueto collect places and their reviews. - Feed the dataset into this actor as
places(or wrap each incompaniesfor join-back). - Set your Gemini key. Optionally add Groq and OpenRouter as fallbacks.
- Feed the output into your prioritization rules or your outbound sequencer.
Pricing
Pay-per-result via Apify Pay-Per-Event billing:
| Event | Price | Description |
|---|---|---|
| Actor start | $0.001 | Charged once per run when there is at least one analyzable place |
| Result | $0.005 | Charged once per analyzed place. Skipped places (no reviews, no key, LLM failure) are NOT billed |
Analyzing 1,000 places costs about $5. LLM API usage is billed by your provider directly, not by this actor.
Related Actors
Discovery:
- Google Maps Scraper - collect places and their reviews in bulk
Enrichment:
- AI Icebreaker Generator - one hyper-personalized cold-outreach line per place
- GBP Completeness Audit - score Google Business Profiles for lead prioritization
- Website Contact Extractor - LLM-powered people extraction from company sites
Notes
- Empty input is free.
enrichment-startis only billed when there is at least one place with analyzable reviews. - The proxy configuration field is accepted for schema consistency but is not used by this actor (LLM-only).
- Language: set
outputLanguage: "auto"to have theme labels and quotes translated back to the business's country language.
Issues & Feature Requests
If the model keeps under- or over-flagging a class of business, open an issue on the actor's Issues tab and we will look into it.