Review Intelligence Analyzer - Google Reviews Sales Signals avatar

Review Intelligence Analyzer - Google Reviews Sales Signals

Pricing

from $5.00 / 1,000 analyzed places

Go to Apify Store
Review Intelligence Analyzer - Google Reviews Sales Signals

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 of strongly_positive, positive, mixed, negative, strongly_negative
  • sentiment_score - a number between -1.0 and +1.0
  • complaint_themes[] - up to 5 objects {theme, frequency, sample_quote} when reviews contain recurring complaints
  • praise_themes[] - up to 5 objects with the same shape when reviews contain recurring praise
  • owner_tone - one of professional, defensive, dismissive, absent, mixed
  • red_flags[] - subset of fake_review_pattern, recent_1_star_cluster, no_owner_response, hostile_owner_response, rating_drop_recent, language_barrier
  • opportunity_signals[] - subset of ready_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_positive sentiment and empty red_flags, prioritize those with no_owner_response or recent_1_star_cluster.
  • Sharper cold email: fold complaint_themes[0].theme or an opportunity_signals value into your opener.
  • Reputation risk audits: flag agency clients whose review streams show hostile_owner_response or a rating_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:

ProviderFree tierGet a key
GeminiYes (generous)https://aistudio.google.com/app/apikey
GroqYeshttps://console.groq.com/keys
OpenRouterPay-as-you-go, cheaphttps://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.

Model defaults may change without notice as providers retire models. Set llmModel in your input to pin a specific version. Current defaults (Aug 2026): Gemini gemini-3.6-flash, Groq openai/gpt-oss-120b, OpenRouter meta-llama/llama-3.3-70b-instruct. The actor runs a startup reachability probe against your primary provider and fails loudly with the provider error if the model is unavailable — no more silent green runs with empty output.

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-3.6-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

  1. Run Google Maps Scraper with includeReviews: true to collect places and their reviews.
  2. Feed the dataset into this actor as places (or wrap each in companies for join-back).
  3. Set your Gemini key. Optionally add Groq and OpenRouter as fallbacks.
  4. Feed the output into your prioritization rules or your outbound sequencer.

Pricing

Pay-per-result via Apify Pay-Per-Event billing:

EventPriceDescription
Actor start$0.001Charged once per run when there is at least one analyzable place
Result$0.005Charged 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.

Discovery:

Enrichment:

Notes

  • Empty input is free. enrichment-start is 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.