Local Business Leads - AI Website Audit & Verified Emails
Pricing
from $10.00 / 1,000 qualified lead (audit + verified contacts)s
Local Business Leads - AI Website Audit & Verified Emails
First 50 leads free. Local business leads from Google Maps with a website health audit, verified emails, the owner's name, an AI fit score and a personalised opener. Pay only for leads that qualify: $0.01 each, $0.04 with AI.
Pricing
from $10.00 / 1,000 qualified lead (audit + verified contacts)s
Rating
0.0
(0)
Developer
Rich Minds
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Local business leads from Google Maps, audited, with a verified email and an opener each.
⚡ First 50 leads free · 💵 $0.01 per qualified lead (market median $0.012) · 🤖 ≈ $0.05 all in with AI · ⏱️ the demo runs in about a minute

Click Try it: the form is pre-filled with a free 3-business demo that runs in about a minute, with no Google Maps cost. Then jump to what a run costs or how to use it. Bring your own data: pass leads in
leadsListor a dataset ID indatasetIdand pay only for the analysis — the source is never run.
| At a glance | |
|---|---|
| Input | Google Maps search (terms + city), an existing Apify dataset, or your own list |
| Output | One row per qualified lead: audit, verified contacts, decision-maker, scores, opener |
| You pay for | Qualified leads only. Filtered, duplicate and low-score places cost $0 |
| AI | ICP-fit score with reasons, pain points, review complaints, subject line and opener |
| Keys / setup | No API key where your Apify plan includes model access — otherwise your own Gemini / Groq key |
| Runs | Once, or on a schedule. Each search keeps its own memory, so a weekly run delivers only new leads |
🎯 What does this Actor do?
For every business that passes your filters it delivers:
- Digital health audit — website live/dead, HTTPS, mobile, a speed grade, site builder, which tracking and ad pixels are installed, online booking, chat/WhatsApp, hiring signals, and a digital maturity grade A–F with plain-English findings.
- Contacts that reach a person — a named
directEmailon the business's own domain kept apart frominfo@, every domain MX-checked, optional mailbox verification; phone in E.164, WhatsApp and social profiles. - Decision-maker — owner / founder name and role when the website names one. Never invented.
- Reputation audit — negative and unanswered reviews and, with AI on, the recurring complaints in a line.
- AI qualification — an ICP-fit score against your ideal customer, the reasons, pain points, a subject line and a ready-to-send opener for email, SMS, WhatsApp, DM or a cold call.
- A lead score and label (
hot/warm/cold), so the sheet is sorted by who to contact first.
🚀 How to use it
- Click Try it — a free 3-business demo, so you see the output before you search.
- Pick a campaign preset (or Custom): it fills search terms, ideal customer, offer, filters and target opportunities; anything you type wins.
- Type your search terms and city — they replace the sample and start the live Google Maps search on your account. Keep AI on.
- Start, then save the input as a task with a weekly schedule — each run delivers only new leads.
Try it for your niche
| You sell | Input |
|---|---|
| Websites to businesses with none | {"campaignPreset": "web-agency-no-website", "sourceMode": "googleMaps", "location": "Austin, TX", "maxQualifiedLeads": 25, "maxDiscoveryChargeUsd": 2} |
| Booking software | {"campaignPreset": "booking-saas", "sourceMode": "googleMaps", "location": "Austin, TX", "maxQualifiedLeads": 25, "maxDiscoveryChargeUsd": 2} |
| Reputation management | {"campaignPreset": "reputation-management", "sourceMode": "googleMaps", "location": "Austin, TX", "maxReviewsPerPlace": 10, "maxQualifiedLeads": 25, "maxDiscoveryChargeUsd": 2} |
🆚 Why this instead of a Google Maps scraper alone?
Google Maps Scraper (compass/crawler-google-places) is the best way to find places, and this Actor runs it for you on your account. The work starts afterwards: opening each website, hunting for an email that is not info@, reading the bad reviews, deciding who is worth a call, writing a first line. This Actor does that and charges only for the businesses that survive it.
compass/crawler-google-places on its own | This Actor on top of it |
|---|---|
| Pay per place scraped | Pay per qualified lead; everything that fails your filters costs $0 |
| Website contacts as an optional add-on | Direct vs generic email, MX-checked, optional mailbox verification |
| No website audit, no owner name | Audit with an A–F grade and findings; owner from the about page |
| No scoring against your offer | AI ICP-fit score, pain points, subject line and opener |
| Each run returns the whole search again | Per-search memory plus a do-not-contact list |
| Your time per 100 leads: ≈ 4 hours of research | ≈ 0 — the row arrives researched |
A worked example. 3 search terms × 100 places in one city, AI on, minLeadScore: 60, requireEmail: true: the scraper ≈ $0.45–1.20 on your account, ~55 leads pass × $0.04 = $2.20 plus ≈ $0.40 of tokens — ≈ $3–4 for ~55 audited, ranked leads with openers, against two working days of manual research. Your first 50 leads cost $0 here.
💵 Pricing — what a run really costs
Pay-per-event: one event per qualified lead, nothing else. The $0.01 basic lead is below the $0.012 median unit price of the Actors the Store lists for "ai local business" (market check of 2026-09-25).
| Event | When it is charged | Price |
|---|---|---|
free-tier | Your first 50 qualified leads on this Actor, in any mode | $0.00 |
qualified-lead-basic | AI off — audit, verified contacts, decision-maker, socials, review health, flags, scores | $0.01 |
qualified-lead-ai | AI on — plus ICP score, reasons, pain points, complaints, summary, subject, opener, next step | $0.04 |
Never charged: discovery, crawling, verification, leads below minLeadScore or failing a filter, your do-not-contact list, leads seen in an earlier run of the same search, and the demo's sample businesses (chargedEvent: demo) — even with AI on.
Worked example: 300 places scanned → 55 qualified, AI on: scraper ≈ $0.90 + $2.20 here + ≈ $0.40 tokens = ≈ $3.50, ≈ $0.064 per qualified lead.
Billed separately, at cost: AI tokens to your Apify account (≈ $0.005–0.01 per AI lead, so an AI lead is ≈ $0.045–0.05 all in) or to your own key; the Google Maps Scraper on your account (≈ $1.5–4 per 1,000 places); optional mailbox verification on your own verifier credits.
| Scenario | Leads | Here | Plus |
|---|---|---|---|
| First run, any mode | up to 50 | $0 | tokens if AI is on |
| Paste 20 businesses, AI on | 20 | $0.80 | ≈ $0.15 tokens |
| Enrich a 300-row dataset, AI off | ~180 | ≈ $1.80 | nothing |
| One city, 3 terms, AI on | ~55 | ≈ $2.20 | tokens + scraper |
| At volume: an agency, 10 clients × 100 AI leads a month | 1,000 | $40 | ≈ $8 tokens + scraper |
| Weekly schedule, same search | only new leads | often < $1 | tokens for new leads |
🤖 What the AI tier adds
The same business from one run on 2026-10-16 (list mode, the reputation-management offer). AI off (qualified-lead-basic, $0.01):
{"name": "No Website Plumbing","phone": "+15125550199","leadScore": 20,"fitLabel": "cold","opportunityFlags": ["no_website", "low_rating", "recent_negative_reviews", "unanswered_negative_reviews"],"negativeReviewSample": ["Showed up 3 hours late and never called back", "Left a mess and overcharged, nobody answers the phone"],"outreachOpener": null}
AI on (qualified-lead-ai, $0.04), the row a run with your-own-key mode wrote on 2026-10-16 — google:gemini-3.5-flash-lite, the model a Gemini key gets by default (through Apify the default is anthropic/claude-haiku-4.5, so your wording will differ):
{"name": "No Website Plumbing","leadScore": 64,"fitLabel": "hot","icpFitScore": 90,"scoreReasons": ["Google rating is 3.6, which is well below the 4.3 ICP threshold", "Negative Google reviews have no owner replies", "Low review count of only 14 reviews", "No website present, indicating low digital maturity and visibility"],"recurringComplaints": ["poor communication or unreturned calls", "unanswered phone calls", "punctuality or pricing issues"],"outreachSubject": "Managing your online reputation at No Website Plumbing","outreachOpener": "I noticed No Website Plumbing has a 3.6-star Google rating with unanswered negative reviews complaining about communication issues, which can impact local trust.","recommendedNextStep": "Send an email offering a review management consultation to help address unanswered negative feedback and boost their 3.6 rating.","aiModel": "google:gemini-3.5-flash-lite"}
The rules called it cold; the AI read the reviews against your offer and made it the lead to call first. That is the 2–3 minutes per lead a salesperson spends on the site and the reviews, done for 3 cents. On a plan without model access the free demo shows labelled sample verdicts, and your first 5 real leads get live ones.
⚙️ Input
The shortest useful input — a preset and a city:
{ "campaignPreset": "booking-saas", "sourceMode": "googleMaps", "location": "Austin, TX", "maxQualifiedLeads": 50 }
📤 Output

One dataset item per qualified lead, best first. Upsert key: dedupeKey (stable across runs; itemId too). Four views in the Output tab, each exportable as CSV, Excel or JSON:
| View | Use it for |
|---|---|
| Qualified leads | The overview: score, fit, grade, contact quality, email, phone, opportunities, opener |
| Outreach sheet | Smartlead / Instantly / lemlist or a dialer — outreachOpener becomes the first line |
| Digital health audit | The audit an agency shows the prospect |
| Contact sheet | CRM import |
The run's key-value store also holds OUTPUT (the funnel, sourceError / aiError, aiCoverage with the AI-assessed vs rule-scored counts and the reason for each fallback) and RUN_SUMMARY.
🔁 Run it weekly
Save your input as a task, add a schedule (e.g. every Monday 07:00), and keep dedupeAcrossRuns on: every lead you received is remembered per search on your account, so each weekly run delivers and bills only businesses that are new. Adding a search term keeps that memory; a different city or targetFlags set gets its own. A quiet week often costs under $1. One dedupeStoreName per client keeps agencies' clients apart.
🔌 Integrations, automation and API
- Google Sheets: Integrations tab → Google Sheets, or
=IMPORTDATA("https://api.apify.com/v2/datasets/<datasetId>/items?view=outreach&format=csv"). - n8n / Make / Zapier: the Apify run-finished trigger → Fetch Dataset Items → HubSpot / Pipedrive (upsert on
dedupeKey). - Webhook:
webhookUrlreceives{ "event": "lead.qualified", "lead": { … } }per lead or{ "event": "leads.qualified", "leads": [ … ] }in batches, with yourwebhookHeaders. - AI agents (MCP): add
https://mcp.apify.com/?actors=rich_minds/local-business-leadto Claude, ChatGPT or Cursor.
Start with the free demo call; an empty input ({}) runs the same demo, so an agent's first call never fails.
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("rich_minds/local-business-lead").call(run_input={"campaignPreset": "web-agency-no-website","sourceMode": "googleMaps","location": "Chennai, India","maxQualifiedLeads": 25,"maxDiscoveryChargeUsd": 2,})for lead in client.dataset(run["defaultDatasetId"]).iterate_items():print(lead["name"], lead["contactQuality"], lead["bestEmail"], lead["outreachOpener"])
👥 Who is it for?
- Web, ads, SEO and reputation agencies — the audit is the pitch; the decision-maker and direct email are who to send it to.
- Local SaaS vendors — booking, POS, reputation, messaging: target the exact gap your product fills with
targetFlags. - Sales teams and SDRs — a clean, ranked sheet with openers instead of scraper output.
- Agencies selling lead generation — one search per client, a weekly schedule into the client's sheet: only new, audited leads.
🧠 How the AI works
The model scores each business against your ideal customer and offer, using only its record. Default: Claude Haiku 4.5 through Apify's model access; byok uses your own key (a free-tier key assesses a few leads per run — a paid one assesses every lead). If the AI fails, you get rule-scored leads at the basic price and the status says why.
🔒 Data, compliance and limits
- Only public business information: Google Maps listings, the business's own website and public reviews (reviewer names are never kept).
robots.txtis respected. - No LinkedIn or personal-profile scraping. Decision-maker names come only from what the business publishes about itself.
- Email verification is MX-level by default; plug in MillionVerifier or NeverBounce for mailbox-level results. The speed grade is a crawl-time heuristic, not Lighthouse.
- Built for B2B prospecting: use
suppressionListfor opt-outs and follow the outreach laws that apply to you (CAN-SPAM, GDPR/PECR, DPDP…). - The run always delivers before its timeout: crawling and AI stop in time to push every qualified lead.
❓ FAQ
Is it a Google Maps email extractor? It does that job and more: it crawls each business's own website, labels each email direct, generic or free-provider and MX-checks every domain. One row per lead, not per email.
How many Google Maps leads does a run deliver? As many as pass your filters, up to maxQualifiedLeads. RUN_SUMMARY shows the funnel and why each place was skipped.
What does the website audit check? HTTPS, mobile, a speed grade, site builder, analytics and ad pixels, booking, chat, WhatsApp and hiring pages — a digital maturity grade A–F with findings.
How do I find no website businesses for web design outreach? The Web agency — no website preset, or websiteFilter: "withoutWebsite".
Does it work as a local SEO audit? Partly: unclaimed listings, missing analytics, few or unanswered reviews and a weak site. It does not check rankings or backlinks.
How is it different from a business email finder? It starts from the businesses, reads only emails they publish, and adds the audit and the score.
Can I use it without Google Maps? Yes — list audits businesses you paste in; dataset enriches any previous scraper run.
How does the free tier work? Your first 50 qualified leads cost nothing here (chargedEvent: "free-tier"); AI tokens are still billed by Apify. The demo's sample businesses are always free and never use one.
Do I need an OpenAI or Anthropic account? No API key where your Apify plan includes model access — otherwise your own Gemini / Groq key (llmProvider: byok; a free one: aistudio.google.com/apikey).
Will the AI make things up? It sees only the record and must ground every reason in a field; unconfirmed names are dropped; cold leads get no opener. Read the opener before you send it.
Will I be charged twice for the same business? No — not within one search. Each search (source, city, flags) keeps its own memory; adding a search term keeps it. Use one dedupeStoreName per client.
Can I cap what a run can cost? maxQualifiedLeads, maxLeadsToProcess, maxDiscoveryChargeUsd and Apify's Max total charge.
⭐ Found it useful? A review on the Store helps others find it — on the Reviews tab; bugs and missing checks are better as an Issue.
🧩 More Actors from the same developer
Same pay-per-qualified-lead model, other lead sources:
- Link Building Prospects: sites to pitch for the SEO clients you win, with a checked e-mail and an opener.
- LinkedIn Intent Leads: people posting that they need what you sell, AI-qualified with an opener.
- Google Reviews AI Insights: complaints, contacts and an opener per business, for local-service sellers.
- Twitter Lead Generation: buyers asking for your kind of service on X, scored with a reply to send.
- Email List Cleaner: clean the emails you collect here before a campaign, billed per keeper.
- Website Change Monitor: every real change on your competitors' pages, explained, weekly.
🆘 Support
Found a bug, or want a new audit check, preset or data source? Open an issue on the Issues tab of this Actor.
📝 Changelog
- 0.2.10 (2026-10-17) — The demo's sample businesses are never charged, even with AI on, and a free demo with AI on shows example AI verdicts; on a plan without AI access your first 5 real leads get live AI verdicts; Each Google Maps search keeps its own memory of delivered leads (adding a search term keeps it), and target flags accept any spelling — a misspelt flag now stops with the list of valid ones instead of returning nothing; With your own key, the AI model now matches the key (a free Gemini key just works), a rate-limited key stops waiting after about 20 seconds, and the status says how many leads the AI assessed and why the rest kept their rule score.
- 0.2.9 (2026-10-04) — Bring your own data: send rows in
leadsListor a dataset ID indatasetIdand the Actor picks the mode itself, starts no source Actor and charges only for the analysis. - 0.2.7 (2026-09-28) — A form saved on an older build runs the free demo instead of failing; your own list is qualified even with the source left on Google Maps; input errors read as one plain sentence.