Local Business Leads - AI Website Audit & Verified Emails avatar

Local Business Leads - AI Website Audit & Verified Emails

Pricing

from $10.00 / 1,000 qualified lead (audit + verified contacts)s

Go to Apify Store
Local Business Leads - AI Website Audit & Verified Emails

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

Rich Minds

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

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

Shortlist from a real run: each business with its fit label, lead score, AI fit score, digital maturity grade, speed grade, contact quality and a personalised outreach opener

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 leadsList or a dataset ID in datasetId and pay only for the analysis — the source is never run.

At a glance
InputGoogle Maps search (terms + city), an existing Apify dataset, or your own list
OutputOne row per qualified lead: audit, verified contacts, decision-maker, scores, opener
You pay forQualified leads only. Filtered, duplicate and low-score places cost $0
AIICP-fit score with reasons, pain points, review complaints, subject line and opener
Keys / setupNo API key where your Apify plan includes model access — otherwise your own Gemini / Groq key
RunsOnce, 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 directEmail on the business's own domain kept apart from info@, 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

  1. Click Try it — a free 3-business demo, so you see the output before you search.
  2. Pick a campaign preset (or Custom): it fills search terms, ideal customer, offer, filters and target opportunities; anything you type wins.
  3. Type your search terms and city — they replace the sample and start the live Google Maps search on your account. Keep AI on.
  4. Start, then save the input as a task with a weekly schedule — each run delivers only new leads.

Try it for your niche

You sellInput
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 ownThis Actor on top of it
Pay per place scrapedPay per qualified lead; everything that fails your filters costs $0
Website contacts as an optional add-onDirect vs generic email, MX-checked, optional mailbox verification
No website audit, no owner nameAudit with an A–F grade and findings; owner from the about page
No scoring against your offerAI ICP-fit score, pain points, subject line and opener
Each run returns the whole search againPer-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).

EventWhen it is chargedPrice
free-tierYour first 50 qualified leads on this Actor, in any mode$0.00
qualified-lead-basicAI off — audit, verified contacts, decision-maker, socials, review health, flags, scores$0.01
qualified-lead-aiAI 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.

ScenarioLeadsHerePlus
First run, any modeup to 50$0tokens if AI is on
Paste 20 businesses, AI on20$0.80≈ $0.15 tokens
Enrich a 300-row dataset, AI off~180≈ $1.80nothing
One city, 3 terms, AI on~55≈ $2.20tokens + scraper
At volume: an agency, 10 clients × 100 AI leads a month1,000$40≈ $8 tokens + scraper
Weekly schedule, same searchonly new leadsoften < $1tokens 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

Digital health audit view from a real run: maturity score and grade, speed, mobile, HTTPS, tech stack and tracking tools per business

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:

ViewUse it for
Qualified leadsThe overview: score, fit, grade, contact quality, email, phone, opportunities, opener
Outreach sheetSmartlead / Instantly / lemlist or a dialer — outreachOpener becomes the first line
Digital health auditThe audit an agency shows the prospect
Contact sheetCRM 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: webhookUrl receives { "event": "lead.qualified", "lead": { … } } per lead or { "event": "leads.qualified", "leads": [ … ] } in batches, with your webhookHeaders.
  • AI agents (MCP): add https://mcp.apify.com/?actors=rich_minds/local-business-lead to 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 ApifyClient
client = 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.txt is 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 suppressionList for 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:

🆘 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 leadsList or a dataset ID in datasetId and 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.