Local Lead Finder - Great Reviews, Weak Website & Booking
Pricing
$10.00 / 1,000 leads
Local Lead Finder - Great Reviews, Weak Website & Booking
Find local businesses that are loved offline but weak online: great Google Maps ratings with no website, no HTTPS, no mobile viewport, no online booking, an outdated site or owners who never reply to reviews. Scored leads for web, booking and AI-receptionist agencies.
Pricing
$10.00 / 1,000 leads
Rating
0.0
(0)
Developer
Cobi Hilliard
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Security
Limited permissionsShare
Local Lead Finder: find good businesses with a sloppy online presence
Find local businesses that customers love on Google Maps but that are weak online: no website, a broken or outdated one, no online booking, not mobile-friendly, and owners who never answer reviews. Every business gets a lead score (0-100) and a one-sentence reason it is a lead.
Built for agencies and freelancers who sell websites, booking systems, review management or AI receptionists to local businesses. No emails or personal data are collected, only business listing data (name, address, business phone).
Important: how data is sourced and who pays for what
This actor never requests Google itself. It gets places from the popular Google Maps Scraper (compass/crawler-google-places):
- Search mode (
searchQuery+location): the actor starts a Google Maps Scraper run under your Apify account, and you pay that run's usage and fees directly to Apify. This is separate from, and in addition to, this actor's price. KeepmaxPlacessmall for a first test. - Dataset mode (
datasetId): analyse the dataset of a Google Maps Scraper run you already made. No child run, no extra Maps cost. For owner-reply data, run it withmaxReviewsof 5-10.
What you get (one flat row per lead)
name,category,address,city,phone,website,mapsUrlrating,reviewsCount,ownerReplyRate(0-1, share of fetched reviews with an owner response)- Signals (booleans):
noWebsite,siteDown,noHttps,noMobileViewport,noBookingLink,outdatedSite,lowOwnerReplyRate leadScore(0-100) andleadReasons- Rows are sorted by
leadScore, highest first
Sample result
{"name": "Fake Pipe & Co (TEST)","category": "Plumber","city": "Faketown","phone": "(555) 010-0101","website": null,"rating": 4.8,"reviewsCount": 212,"ownerReplyRate": 0,"noWebsite": true,"noBookingLink": true,"lowOwnerReplyRate": true,"leadScore": 90,"leadReasons": "4.8★ from 212 reviews, but no website and the owner never replies to reviews."}
How scoring works
Businesses must pass minRating (default 4.0) and minReviews (default 50). Then points are added and capped at 100:
| Signal | Points | Meaning |
|---|---|---|
| noWebsite | 45 | No website, or only a Facebook/Instagram/Yelp-type page |
| siteDown | 40 | Homepage errors, times out or returns 4xx/5xx |
| noBookingLink | 25 | No link or script for booking tools (Calendly, Acuity, Square, Vagaro, Booksy, Setmore, Housecall Pro, Jobber, ServiceTitan, Mindbody, Fresha, OpenTable, Resy, Tock, "book online"...). Also set when there is no website |
| lowOwnerReplyRate | 20 | Owner replied to under 20% of the fetched reviews |
| noHttps, noMobileViewport, outdatedSite | 10 each | Homepage not on HTTPS, no meta viewport, copyright year older than 2 years or response over 5 s |
onlyLeads (default on) drops anything under 30.
The homepage of each business is fetched once, only if robots.txt allows it, with a 10 second timeout.
Input
| Field | Default | Description |
|---|---|---|
searchQuery | plumber | Business type |
location | Austin, TX | City/state or country |
maxPlaces | 50 | Places the Maps child run scrapes |
datasetId | Use an existing Maps scraper dataset instead of searching | |
minRating | 4.0 | Minimum Google rating |
minReviews | 50 | Minimum review count |
onlyLeads | true | Drop scores under 30 |
maxItems | 100 | Max leads output |
concurrency | 8 | Parallel website checks |
Examples: {"searchQuery":"dentist","location":"Denver, CO","maxPlaces":100} or {"datasetId":"YOUR_MAPS_DATASET_ID","minReviews":100}.
Pricing
$10 per 1,000 leads ($0.01 per lead row saved). 100 leads cost $1.00. In search mode, add the cost of the Google Maps Scraper child run to your own account (see above).
Use cases
Web design and SEO agencies, booking and CRM resellers, review-management and reputation services, AI receptionist and call-answering sellers, freelancers building a local prospect list.
FAQ
Is it legal? Google Maps data comes through the third-party Maps Scraper that you run; website checks fetch only public homepages and obey robots.txt. No personal data (emails, names of people) is collected. You remain responsible for how you use outreach data under local rules.
Limitations. Owner-reply rate is based on a small sample of recent reviews (10 in search mode). The booking check looks at the homepage only. Sites behind bot protection may appear as down. Facebook/Instagram/Yelp pages count as no website.
Integrations / API. Use the Apify API, webhooks, Zapier, Make or n8n to pipe leads into your CRM.
Integrations / API
1. Weekly prospect list into Google Sheets (n8n or Make)
Schedule node (Mondays) → Apify: Run Actor wakachobi/local-lead-finder with
{"searchQuery": "roofing contractor", "location": "Denver, CO", "maxPlaces": 40} → Apify: Get dataset items →
Google Sheets: Append rows. Filter on leadScore >= 60 to keep only the strongest prospects. Each row's
leadReasons makes a ready-made first line for your outreach ("Saw you have 4.8★ from 212 reviews, but no way to book
online…").
2. Clay table enrichment
Start a Clay table from your own city/niche list, add an Apify column that runs this Actor per row with
searchQuery + location from the row, and map website, phone, leadScore and leadReasons into columns. Use
Clay's own enrichment to find a contact person at the shortlisted businesses.
3. Re-score a Maps run you already have
Already scraped Google Maps with compass/crawler-google-places? Pass its dataset ID instead of a search:
{"datasetId": "<your dataset id>", "minReviews": 30}. No new Maps run, so you only pay for the scoring.
4. Plain API call
curl -X POST "https://api.apify.com/v2/acts/wakachobi~local-lead-finder/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"dentist","location":"Tampa, FL","maxPlaces":30}'