Local Business Opportunity Scanner (Google Maps) avatar

Local Business Opportunity Scanner (Google Maps)

Under maintenance

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Local Business Opportunity Scanner (Google Maps)

Local Business Opportunity Scanner (Google Maps)

Under maintenance

Should you open business here, or is the area already too crowded? Scan any local market to see how saturated it is, how strong demand looks, and where competitors are weak. Get the verdict as a shareable PDF, backed by real customer reviews.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Leafy

Leafy

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

8 days ago

Last modified

Share

Local Business Opportunity Scanner

Should you open here, or is the area already too crowded? Enter a business type and a specific area to see how saturated the market is, how strong demand looks, and where competitors are weak. You get the verdict as a shareable PDF, a scored competitor list, and what customers actually praise and complain about.

Built for owners validating a location, franchise buyers comparing territories, and agencies prospecting local clients with weak digital presence. It reads public Google Maps signals, with no APIs to wire up and no data to prepare.


What you get

Every run produces three things:

📄 1. A ready-to-share PDF report (REPORT.pdf)

A single document that answers "is this area worth it?" in plain language. Contents:

Local Business Opportunity Report
coffee shop · Makati, Metro Manila · 124 competitors
Executive Summary Opportunity 64/100: "promising but competitive"
Market Scores Competition 82 · Demand 78 · Digital weakness 61
Market Interpretation "Review volume suggests demand appears strong,
but the area is already competitive..."
Competitor Landscape 124 analyzed · 88 have websites · 19 look weak
Digital Weakness missing sites, no booking links, no socials
What Customers Value & praise: ambiance, friendly staff
Complain About complaints: slow service, pricing (+ real quotes)
Top Strong / Weak Competitors
Recommended Strategy differentiation angles based on the above
Caveat

🏪 2. A scored competitor list (dataset)

One row per business: rating, review count, competitive strength, threat level, web-presence score, and the specific digital gaps (no_booking_link, no_instagram, missing website…) you could exploit.

💬 3. The voice of the customer (reviews, per business)

For the most-reviewed competitors, the actor samples recent Google reviews and mines them (no paid API) into what people love vs. complain about, then attaches the raw reviews to each business row so you can read the sentiment yourself. Complaints become differentiation ideas, like "competitors are dinged for slow service, so getting that right could be an opening."


Input

Two fields is all it needs:

{
"businessType": "coffee shop",
"location": "Makati, Metro Manila"
}
FieldTypeDefaultDescription
businessType *stringcoffee shopThe category to analyze (coffee shop, dental clinic, gym, salon, med spa, plumber…).
location *stringMakati, Metro ManilaMust be specific. Use Place, City/Region or a postal/ZIP code. A bare country/state is rejected.
radiusKmnumber3Catchment radius (0.5 to 50), used only for the density metric.
mapsConcurrencyinteger3Parallel Maps page extractions (1 to 10). Higher is faster and heavier.
proxyConfigurationobjectoffLeave off unless you hit blocks/captchas.

* required. Website audit and review analysis are always on, because they're core to the result rather than toggles.

Makati, Metro Manila · Soho, London · Austin, TX · 90210Philippines · Texas · London (too broad, rejected with a clear message)

No result cap by design. To measure saturation the actor collects every business Maps surfaces (Maps itself caps a search at ~120). If an internal safety ceiling is ever hit, the summary sets result_limit_reached: true, so read the count as "at least N".


Output

Dataset (one row per business)

FieldMeaning
business_nameBusiness name (first column).
rating · review_countGoogle rating and total review count.
competitive_strengthstrong · moderate · weak.
threat_levelHow much of a threat this competitor is.
web_presence_scoreDigital strength, 0 to 100.
weakness_tagsExploitable gaps, e.g. ["no_booking_link","no_instagram"].
opportunity_noteOne-line read on this competitor.
website_statusworking · missing · error.
reviews_sampled · reviews_textSampled reviews as readable text (renders in the Apify table).
reviewsThe same reviews as a structured array (rating, sentiment, aspects, date, text).
{
"business_name": "Example Coffee",
"rating": 4.6,
"review_count": 240,
"competitive_strength": "strong",
"threat_level": "high",
"web_presence_score": 72,
"weakness_tags": ["no_booking_link", "no_instagram"],
"opportunity_note": "Strong overall, but has digital gaps a new entrant could exploit.",
"reviews_sampled": 5,
"reviews_text": "[5★ · positive, 2 weeks ago] Friendly baristas and great coffee\n\n[2★ · negative, a month ago] Service was slow...",
"reviews": [
{ "rating": 5, "sentiment": "positive", "aspects": ["service & staff"], "date": "2 weeks ago", "text": "Friendly baristas and great coffee" }
]
}

Two dataset tabs: Overview (business + key metrics + readable reviews) and All fields. If Maps returns nothing usable, a single no_data_found row is pushed instead of crashing.

Key-value store

FileWhat it is
REPORT.pdfThe full shareable report (above). Falls back to REPORT.md if rendering fails.
MARKET_SUMMARY.jsonThe headline verdict: four scores + levels, market status, interpretation, recommended strategy, and voice_of_customer.
REVIEW_THEMES.jsonThe value-vs-complain breakdown: { sentiment, theme, mentions, sample_quote }[].

The four scores (0 to 100, directional)

ScoreWhat it measures
CompetitionHow crowded and strong the market looks.
Demand signalObserved demand, proxied by review activity.
Digital weaknessHow exploitable competitors' online presence is.
Overall opportunitydemand × 0.55 + (100 − competition) × 0.25 + digitalWeakness × 0.20.

High competition isn't automatically bad. A crowded market often means demand is proven, so the report reads demand and competition together (proven-but-competitive, risky/saturated, digital-first opening, and so on).


How the customer-review read works

For the most-reviewed competitors (about 15 businesses), the actor pulls up to 5 recent Google reviews each and reads them with no paid API:

  1. Star rating is the sentiment signal. 4 to 5 stars counts as positive, 1 to 2 as negative, 3 as neutral.
  2. Aspect lexicons tag what each review is about: service & staff, price & value, wait time, quality, food & menu, cleanliness, ambiance, parking, amenities, booking.
  3. Frequent phrases are pulled from the positive bucket and the negative bucket separately.

The result is a plain-language read like "Reviews frequently praise: ambiance, friendly staff" vs "Common complaints mention: slow service, price," backed by example quotes. Recurring complaints also turn into a differentiation hint in the recommended strategy ("competitors are dinged for X, so getting X right could be an opening").

It's directional keyword-and-sentiment scanning, English-centric, and not full NLP.


Feedback, issues & requests

Found a bug, want a new metric, or have a business type that doesn't parse cleanly? I'd genuinely like to hear it. Email leafydevjr@gmail.com and I'll take a look.