Google Maps Business Opportunity Finder
Under maintenancePricing
$10.00 / 1,000 business analyzeds
Google Maps Business Opportunity Finder
Under maintenanceFind strong local businesses with specific, evidence-backed digital growth opportunities. Analyzes Google Maps profiles, websites, reviews, technologies, and competitors to detect gaps in booking, reputation, websites, tracking, and more. 100% deterministic scoring — no AI.
Pricing
$10.00 / 1,000 business analyzeds
Rating
0.0
(0)
Developer
Intrabit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Find strong local businesses with specific, evidence-backed digital growth opportunities.
This Actor analyzes Google Maps profiles, websites, reviews, technologies, conversion features, and local competitors to detect concrete gaps in online booking, websites, reputation management, conversion, tracking, and contact automation — then ranks every business by a deterministic, explainable opportunity score.
No AI-generated scoring. Every score is computed from observable signals and configurable deterministic rules. Identical input → identical output.
What does it do?
- Discovers businesses on Google Maps (by query + location, or from your own list of Maps URLs).
- Scores business strength (0–100): observable activity/credibility — rating, review volume, recent activity, completeness, digital presence, status. Not revenue.
- Audits each website: HTTP/HTTPS, redirects, response time, title/meta/viewport/canonical, schema markup, forms, CTAs, click-to-call, WhatsApp, analytics, ads pixels, chat, ecommerce, and 40+ technology fingerprints.
- Analyzes reviews (when enabled): recent velocity, owner response rate, unanswered negative reviews.
- Benchmarks competitors: for each business, a local cohort of top competitors and their adoption of booking, websites, HTTPS, contact forms, chat, analytics, etc.
- Detects opportunities with explainable rules (see below).
- Ranks businesses by
overallOpportunityScoreand returns a CSV-friendly dataset.
What makes it different?
| Generic Google Maps scraper | This Actor |
|---|---|
| Returns businesses | Finds businesses, analyzes their digital presence |
| Lists leads | Benchmarks local competitors |
| Raw data | Detects specific gaps (no booking, no CTA, unanswered negatives…) |
| No signal | Ranks commercial opportunities |
Instead of "give me dentists in Miami", this Actor enables:
"give me strong dentists in Miami that appear to need online booking"
"find local businesses with strong customer demand but weak reputation management"
"find businesses advertising online but lacking detectable conversion infrastructure"
Business strength vs opportunity gap
These are separate dimensions. A business with 2 reviews / 2.1 stars / no website is a poor prospect even if it has "problems". A business with 4.8 stars / 642 reviews / active / no online booking is a strong opportunity.
OPPORTUNITY GAPLOW HIGHBUSINESS HIGH LOW BEST TARGETSTRENGTHLOW IGNORE QUESTIONABLE
overallOpportunityScore is deliberately not an average of all detectors — one strong, specific signal should dominate:
overall = bestOpportunity × 0.75+ secondBest × 0.15+ businessStrength × 0.10
Available opportunity types
The V1 detectors (all deterministic):
| Detector | What it finds |
|---|---|
WEBSITE | Missing, dead, broken, HTTP-only, or weak website; social-only presence |
ONLINE_BOOKING | No booking system/CTA while strong and (often) competitors offer booking |
REPUTATION_MANAGEMENT | Unanswered negative reviews, low owner response rate, rating below local median |
CONVERSION | No primary CTA, no form / click-to-call / booking / ordering path |
TRACKING | No analytics; ads pixels detected without any conversion action |
CONTACT_AUTOMATION | No contact form, no click-to-call, no WhatsApp, no chat |
ONLINE_ORDERING | Restaurants/cafes without online ordering |
LOCAL_SEO | Missing title/meta/schema/canonical, no website |
LIVE_CHAT | No chat widget in chat-relevant categories |
EMAIL_MARKETING | Ecommerce/retail without email marketing platform |
SOCIAL_PRESENCE | No social links on website (category-relevant) |
ECOMMERCE | Retail without online store |
How opportunity detection works
Every detector is a small rule engine:
- Evidence — e.g.
NO_BOOKING(weight 35),NO_BOOKING_CTA(15),NO_BOOKING_COMPETITOR_GAP(30). - Category context — booking matters more for dentists than museums (
CATEGORY_OPPORTUNITY_WEIGHTS). - Competitor benchmark — "No booking detected; 8/10 top local competitors offer booking" is far stronger than "no booking" alone. Cohort claims require a minimum sample size (default 5); otherwise competitor evidence is simply not used.
- Score = Σ weights × category relevance, clamped 0–100, with
scoreComponentsexposed for every point.
Example for a strong dentist with no booking and 9/10 competitors offering it:
Base 0Business strength +18 (strength 90 × 20%)No booking +35No booking CTA +15Competitor gap +27 (90% × 30)Category (DENTAL) ×1.0TOTAL 95
Tri-state signals. Missing data never silently counts as "bad". Signals are true | false | null, where null = "could not be reliably determined" (e.g. website fetch failed → booking is unknown, not absent).
Input
All fields are optional with sensible defaults. Minimal example:
{"searchQueries": ["dentists"],"location": "Miami, Florida","maxBusinesses": 100}
Full control:
{"searchQueries": ["dentists", "orthodontists"],"location": "Austin, Texas","maxBusinesses": 500,"analysisMode": "STANDARD","findOpportunitiesFor": ["ONLINE_BOOKING", "REPUTATION_MANAGEMENT"],"minimumBusinessStrength": 35,"minimumOpportunityScore": 55,"reviewAnalysisEnabled": true,"maxReviewsPerBusiness": 30,"websiteConcurrency": 15,"includeClosedBusinesses": false}
Enrich your own lead list (Mode B)
{"googleMapsUrls": ["https://www.google.com/maps/place/...","https://www.google.com/maps/place/..."]}
Analysis modes
- FAST — Maps data + website analysis, no reviews.
- STANDARD (default) — website, technologies, conversion, competitors, limited reviews.
- DEEP — everything, with up to 2× review sampling.
Output
One dataset item per business, CSV-friendly. First columns:
overallOpportunityScore | bestOpportunity | bestOpportunityScore | businessStrengthScore | businessName | primaryCategory | rating | reviewCount | websiteStatus | website | phone | googleMapsUrl
Every item also includes:
opportunities[]— per-detector{ type, score, confidence, evidence[], scoreComponents, competitorComparison }detectedTechnologies[]—{ technology, detected, confidence, evidence[] }signals— flattened tri-state website signalsreviewMetrics— response rate, unanswered negatives, velocitycompetitorBenchmarks— cohort adoption rates and medianswhyThisLeadText— one-line, spreadsheet-ready explanation
4.8 rating / 642 reviews | No online booking system detected | No appointment CTA | 8/10 benchmark competitors offer booking
A run summary (businesses discovered/analyzed/returned, opportunity counts, estimated cost) is logged and stored as SUMMARY in the key-value store.
Google Maps search examples
{ "searchQueries": ["dentists"], "location": "Dallas, Texas", "findOpportunitiesFor": ["WEBSITE", "CONVERSION"] }
→ highly reviewed local businesses with measurable website/conversion gaps.
{ "searchQueries": ["dentists", "beauty salons", "veterinarians"], "location": "Austin, Texas", "findOpportunitiesFor": ["ONLINE_BOOKING"] }
→ strong appointment-based businesses that don't accept online bookings.
{ "searchQueries": ["restaurants"], "location": "Orlando, Florida", "findOpportunitiesFor": ["REPUTATION_MANAGEMENT"], "reviewAnalysisEnabled": true }
→ popular restaurants with unanswered negative reviews.
Agency examples
- Web design agency →
WEBSITE,CONVERSION→ businesses with dead/weak sites and no CTA. - Booking software provider →
ONLINE_BOOKING→ strong dentists/salons/vets that can't book online. - Reputation management company →
REPUTATION_MANAGEMENT→ high-volume businesses that don't respond to reviews. - Analytics / conversion consultants →
TRACKING,CONVERSION→ businesses running ads without measurable conversion paths. - Marketing agency →
CONTACT_AUTOMATION,LOCAL_SEO→ businesses missing forms, chat, and local schema.
Competitor comparison
For each business the Actor builds a cohort of the top local competitors (same normalized category, then same city/state), ranked by review count, excluding the target. It then computes adoption rates used as benchmarks:
bookingAdoptionRate httpsAdoptionRate contactFormRate chatAdoptionRateanalyticsRate websiteAdoptionRate socialPresenceRate responseRate
No competitor claims are made from tiny cohorts: with fewer than minCompetitorsForGap (default 5) competitors, competitor evidence is simply not used.
Deterministic scoring
All scoring is rule-based and versioned (scoringVersion: "1.0"). Thresholds live in src/config/scoring.ts and src/config/opportunity-weights.ts — there are no scattered magic numbers. scoreComponents makes every score reconstructable, and evidence[] shows exactly which machine-detectable observations produced it.
No AI-generated scoring. Opportunity scores are computed from observable signals and configurable deterministic rules.
Determinism & non-AI checklist
- No OpenAI / Claude / Gemini / Llama / Mistral
- No LLM API, no embeddings, no vector DB, no ML classification
- No generated summaries, pitches, or sales copy
- All scoring rules inspectable (
src/scoring/,src/opportunities/,src/config/) - All evidence derives from observable data (Maps profile, HTTP/HTML, fingerprints, reviews, cohort stats)
- Identical inputs produce identical outputs
Cost notes
- Reviews are fetched only for businesses with enough reviews and only when
REPUTATION_MANAGEMENTis requested or reviews are enabled — never for every business. - Websites are fetched once per domain (franchises with one domain are cached for the run).
- Websites are analyzed for all discovered (non-closed) businesses so that competitor cohorts have benchmark data. Use
excludeWebsites: trueorFASTmode to skip website fetching entirely. - Set
maxBusinesseslow for cheap test runs. - A rough cost estimate for the run (Maps upstream + reviews upstream) is logged and stored in
SUMMARY.
Privacy & compliance
- Public business data only. No owner emails, personal phones, or home addresses.
- No outreach automation — this Actor outputs intelligence, it never contacts anyone.
- Normal access restrictions are respected (timeouts, redirect limits, size limits, no CAPTCHA bypass).
Known limitations
- Technology detection is fingerprint-based and imperfect — it reports confidence, never false certainty.
- Booking/ordering detection works on the analyzed homepage; deep multi-page navigation is out of scope for V1.
- Competitor benchmarks require a reasonably sized discovered universe (Mode B with a short list yields no competitor claims).
- Review analysis samples a configurable number of recent reviews (
maxReviewsPerBusiness), it is not a census.
Local development
npm installnpm test # run the test suitenpm run typechecknpm run build # compile to dist/
Deployment (Apify)
npm installnpm testapify login # authenticate with your Apify account tokenapify push # build and push the Actor
Requirements:
- An Apify account token (
APIFY_TOKEN) — the Actor calls an established Google Maps upstream Actor (compass/crawler-google-places) and, when reviews are enabled, a reviews upstream Actor (compass/google-maps-reviews-scraper). These run on your account and are billed as standard Apify platform usage. - Node.js ≥ 20.
Pricing & monetization
This Actor uses Pay-per-event pricing on the Apify Store. Charged unit: one analyzed business.
| Event | Price | Notes |
|---|---|---|
business-analyzed | $0.01 / business | ~$10 per 1,000 businesses analyzed. Primary event. |
- Charging is budget-aware: analysis stops immediately once the user's configured max-charge budget is reached — no wasted spend.
- Outside pay-per-event runs (local dev, free/pay-per-usage executions), charging is a strict no-op.
- Platform usage from upstream Maps/reviews Actors is billed separately by Apify; see
docs/COST_MODEL.mdfor the full cost model and pricing rationale.
Example result (illustrative, not real data)
#1 Example Dental Business Strength: 94 Booking Opportunity: 97WHY:✓ 4.9 rating✓ 721 reviews✗ no booking system detected✗ no appointment CTA detected✓ 9/10 benchmark competitors provide booking
License: Apache-2.0