VOOZH about

URL: https://apify.com/solutionssmart/local-business-lead-finder

⇱ Local Business Lead Finder, Google Maps Scraper & Enrichment Β· Apify


Pricing

Pay per event + usage

Go to Apify Store

Local Business Lead Finder

Discover, extract, and enrich local business leads from Google Maps. Find businesses by keyword and location, collect contact details, emails, and social profiles, and export clean, deduplicated data. Built for automation, CRMs, and recurring lead generation workflows.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

πŸ‘ Solutions Smart

Solutions Smart

Maintained by Community

Actor stats

1

Bookmarked

80

Total users

9

Monthly active users

a month ago

Last modified

Share

πŸ“ Local Business Lead Finder (Google Maps Leads Scraper)

If you found this Actor saved you time, a 5-star review helps me keep improving!

Extract thousands of local business leads from Google Maps including phone numbers, websites, and emails.

Local Business Lead Finder finds and enriches local business leads from Google Maps. Enter search queries (e.g. dentist, pizza) and locations (city/country or latitude & longitude), and the Actor discovers businesses, extracts contact details, optionally visits each website to get emails and social links, deduplicates across runs, and exports to a dataset or your webhook. Ideal for lead generation, outreach lists, local SEO research, and CRM enrichment.

✨ What can Local Business Lead Finder do?

  • Discover businesses on Google Maps by keyword (e.g. "dentist", "pizza") and location (city/country or lat/lng + radius).
  • Extract from each place: name, address, phone, website, category, rating, coordinates, and Google Maps URL.
  • Enrich (optional): visit business websites, follow contact/about pages, and extract emails and social profiles (Facebook, Instagram, LinkedIn, Twitter/X, TikTok, YouTube).
  • Deduplicate across runs (by place ID, website, or phone) so scheduled runs only add new leads.
  • Export to the run's dataset (Apify Console Output tab) and/or to a webhook URL in configurable batches with retries.

Run it on Apify for monitoring, API access, scheduling, and integrations (n8n, Make, Zapier). Your Actor + the Apify platform come as a package: scaling, storage, and automation are built in.


πŸ“¦ What data can Local Business Lead Finder extract?

Data pointDescription
nameBusiness name
addressFull address
phonePhone number
websiteBusiness website
googleUrlGoogle Maps URL
categoryPrimary category
lat, lngCoordinates
placeIdStable place identifier
emailsExtracted emails (when enrichment is on)
emailQualityQuality score for extracted emails (confidence, domain match, optional MX validation)
socialsFacebook, Instagram, LinkedIn, Twitter, YouTube, TikTok
enrichmentWebsite visit details, including browser fallback review flags for hard no-email sites
rating, reviewCountRating and review count (when available)
fetchedAtISO timestamp
isNewtrue for new items; false for previously seen items
leadScoreComputed score (0-100) and grade (A-F) based on rating, review count, website presence, and social presence
valueNumeric lead value score (0-100) derived from leadScore.score

πŸš€ How do I use Local Business Lead Finder to get local business leads?

  1. Open the Actor on Apify and go to the Input tab.
  2. Set Search Queries (e.g. dentist, dental clinic) and either Locations (Text) (e.g. Berlin, Germany) or Location (Lat/Lng) (latitude, longitude, radius).
  3. Optionally enable Enrich with Website Data to extract emails and social links from business websites.
  4. Click Start and check the Output tab for the dataset. Use Schedule for recurring lead refresh.

Local Business Lead Finder has a simple form input - no code required to run it from the Console. For automation, use the Apify API or webhookUrl to push results to your CRM or workflow.


🧾 Input

Click on the Input tab in the Actor detail page for the full schema. You need queries (required) and either locations (text) or geo (form: lat, lng, radius).

ParameterTypeDefaultDescription
queriesarrayrequiredSearch terms, e.g. ["dentist", "pizza"].
locationsarray-Text locations, e.g. ["Berlin, Germany"].
geoobject-Latitude, longitude, radius (km) in the form.
maxResultsTotalinteger10Max unique businesses for the whole run.
languagestring"en"Google Maps language (dropdown).
modestring"fast"fast extracts leads only; deep enables bounded website enrichment.
enrichWebsitebooleanfalseVisit websites to extract emails, phones, contact forms, and socials. Used only in deep mode.
maxWebsitesToEnrichinteger25Max unique websites to visit in deep mode.
maxRunTimeSecinteger120Graceful runtime budget for the whole run.
emailMxCheckbooleanfalseVerify MX records for extracted email domains. Improves confidence but adds DNS lookups and runtime.
dedupeBystring"placeId"Deduplication key: placeId, website, or phone.
newOnlyOutputbooleantrueIf true, export only new items. If false, export unique items from the current run and include isNew.
webhookUrlstring-URL to POST results (batched). Stored encrypted.
resourceProfilestring"auto"Memory preset: Auto, Low (4 GB), Standard (4-8 GB), High (8 GB+). Auto detects the run memory and is recommended for most runs.
detailConcurrencyinteger(from profile)Optional override for place detail pages fetched in parallel (Phase 2). Leave empty to use the selected resource profile.
enrichmentConcurrencyinteger(from profile)Optional override for website pages fetched in parallel during enrichment (Phase 3). Leave empty to use the selected resource profile.

πŸ§ͺ Example input

{
"queries":["dentist","dental clinic"],
"locations":["Berlin, Germany"],
"maxResultsTotal":10,
"mode":"fast",
"enrichWebsite":false,
"emailMxCheck":false,
"dedupeBy":"placeId",
"newOnlyOutput":true
}

With coordinates πŸ—ΊοΈ:

{
"queries":["cafe"],
"geo":{"lat":52.52,"lng":13.405,"radiusKm":5},
"maxResultsTotal":10
}

With performance options βš™οΈ (match Resource profile to the memory you allocate for the run, or leave it on auto):

{
"queries":["dentist"],
"locations":["Berlin, Germany"],
"maxResultsTotal":10,
"mode":"deep",
"maxWebsitesToEnrich":25,
"maxRunTimeSec":120,
"resourceProfile":"high",
"enrichWebsite":true
}

πŸ“€ Output

Results are stored in the run's default dataset and shown in the Output tab. You can download the dataset in JSON, CSV, Excel, or other formats from the dataset page. Each item includes isNew, leadScore, and emailQuality so you can filter and prioritize leads quickly. Use the 🚩 Review Queue dataset view for sites flagged with enrichment.reviewFlags, including no_email_exposed_after_browser_fallback.


πŸ“„ Example output item

{
"placeId":"0x47a84e339e1b3e6f:0xa3449be1eb562cf5",
"name":"Kottident - Dentist in Berlin Kreuzberg",
"address":"Adalbertstrasse 94, 10999 Berlin, Germany",
"category":"",
"phone":"+49 30 3911155",
"website":"http://www.kottident.de/",
"googleUrl":"https://www.google.com/maps/place/Kottident+-+Dentist+in+Berlin+Kreuzberg/data=!4m7!3m6!1s0x47a84e339e1b3e6f:0xa3449be1eb562cf5!8m2!3d52.5007495!4d13.4187246!16s%2Fg%2F1v_sm8bx!19sChIJbz4bnjNOqEcR9SxW6-GbRKM?authuser=0&hl=en&rclk=1",
"lat":52.5007495,
"lng":13.4187246,
"rating":"4.7",
"reviewCount":"",
"discoverySource":"detail",
"fetchedAt":"2026-03-22T22:45:15.688Z",
"isNew":true,
"emails":["info@kottident.de"],
"socials":{
"facebook":"https://www.facebook.com/kottident",
"other":[
"http://kottident.de/contact.html",
"https://www.kottident.de/index%20-%20english.html"
]
},
"enrichment":{
"websiteVisited":true,
"scannedUrl":"https://www.kottident.de/impressum.html"
},
"emailQuality":{
"bestEmail":"info@kottident.de",
"bestScore":72,
"averageScore":72,
"highConfidenceCount":0,
"mediumConfidenceCount":1,
"lowConfidenceCount":0,
"assessments":[
{
"email":"info@kottident.de",
"accepted":true,
"selected":true,
"syntaxValid":true,
"syntaxScore":100,
"score":72,
"confidence":"medium",
"domain":"kottident.de",
"domainMatchesWebsite":true,
"domainDistance":0,
"roleBased":true,
"freeProvider":false,
"disposableProvider":false,
"mxValid":null,
"reasons":["role_based","domain_matches_website"]
}
],
"rejected":[],
"selectedEmails":["info@kottident.de"],
"telemetry":{
"totalCandidates":20,
"acceptedCount":2,
"rejectedCount":0,
"topRejectionReasons":[],
"domainMatchedPercent":100,
"malformedPatternCounters":{}
}
},
"leadScore":{"score":72.6,"grade":"B"},
"value":72.6
}

🚩 Manual review example

{
"name":"Example Clinic Without Public Email",
"website":"https://example-clinic.com",
"emails":[],
"enrichment":{
"websiteVisited":true,
"scannedUrl":"https://example-clinic.com/impressum",
"browserFallbackExhausted":true,
"reviewFlags":["no_email_exposed_after_browser_fallback"]
}
}

πŸ§ͺ Migration note (email quality update)

As of v0.0.1+email-quality-fix, email handling is stricter and deterministic:

  • emails now contains only normalized, syntax-valid, cleaned emails (no glued phone/URL/text artifacts).
  • emailQuality.bestEmail is guaranteed to be one of emails when emails.length > 0.
  • emailQuality.assessments now includes accepted and rejected candidates (with reasons) for debugging.
  • emailQuality.rejected contains { email, reasons[] } entries for explicit rejection diagnostics.
  • emailQuality.telemetry includes extraction/validation counters (candidate totals, rejections, domain-match %, malformed pattern counters).

πŸ”„ Before/after sample

Before:

{
"emails":[
"4445656info@zahnarztmichael.dewww.zahnarztmichael.de",
"praxis@schoene-zaehne-berlin.deweb"
]
}

After:

{
"emails":[
"info@zahnarztmichael.de",
"praxis@schoene-zaehne-berlin.de"
],
"emailQuality":{
"bestEmail":"info@zahnarztmichael.de",
"rejected":[
{
"email":"4445656info@zahnarztmichael.dewww",
"reasons":["numeric_prefix_pollution","trailing_word_after_tld"]
}
]
}
}

πŸ’° How much does it cost to get local business leads with this Actor?

The Actor uses explicit pay-per-event billing. A practical starting model is:

  • lead-extracted: $5 - $3,5 / 1,000 new unique leads
  • website-enriched: $12 - $8 / 1,000 leads with useful website contact signals

lead-extracted is charged after a new unique lead is written to the dataset. website-enriched is charged only when website enrichment actually finds useful contact data. In fast mode, runs typically trigger only lead-extracted. In deep mode with enrichWebsite: true, enriched leads can trigger both events, so premium runs cost more than lead-only runs.

Use mode: "fast" for the cheaper lead-only option, or bound premium runs with maxResultsTotal, maxWebsitesToEnrich, and maxRunTimeSec.


🎯 Use cases

  • Sales & agencies - Build prospect lists of local businesses (plumbers, restaurants, clinics) with verified contact data.
  • Local SEO - Research competitors and business density by area.
  • Market research - Track businesses by geography; optionally include closed businesses.
  • CRM pipelines - Feed leads into HubSpot, Salesforce, Pipedrive, or any system that accepts webhooks.
  • Scheduled lead refresh - Run on a schedule and only process new or updated businesses.

πŸ’‘ Tips and options

  • Resource profile & memory - Set Resource profile (memory) to match the memory you allocate when starting the run (e.g. 4 GB -> Low, 8 GB -> High). This tunes concurrency for speed vs memory use. You can override Detail concurrency and Enrichment concurrency for finer control.
  • Google Maps - The Actor uses a browser on Apify; for production, use the recommended resources. Consent or layout changes on Google Maps can occasionally affect results.
  • Enrichment - Only same-domain (and subdomain) links are followed; contact-style paths (e.g. /contact, /about) are prioritized.
  • Email quality checks - Enable emailMxCheck only when you need stronger email confidence. It adds DNS lookups and can increase run time.
  • Webhook - Failed batches after retries are visible in the run; you can implement manual retry if needed.
  • API & integrations - Use the Apify API to run the Actor and fetch results; use webhookUrl to push directly to n8n, Make, Zapier, or your own endpoint.

βš–οΈ Compliance, disclaimers, and support

Use this Actor for legitimate lead generation and research only. Obtain consent or have a lawful basis (e.g. legitimate interest) before contacting businesses. You are responsible for complying with GDPR, CAN-SPAM, and local regulations when using extracted emails or phone numbers.

If you run into issues, check the Input tab and this README first. For bugs or feature requests, use the Issues tab on the Actor page - feedback is welcome. For custom solutions based on this Actor, contact the creator via the Actor profile.

You might also like

Brand DNA

solutionssmart/brand-dna

Extract structured brand identity from any website β€” colors, fonts, tone, positioning, and reusable marketing templates β€” using deterministic heuristics with no AI hallucinations.

πŸ‘ User avatar

Solutions Smart

98

5.0

Nextdoor Business Scraper

scraped/nextdoor-business-scraper

Scrape businesses from Nextdoor

Nextdoor Scraper

alizarin_refrigerator-owner/nextdoor-scraper

Scrape local business recommendations, neighborhood posts, and community data from Nextdoor. Get authentic local insights and recommendations that aren't available on other platforms.

150

angi.com (Angie's List) Scraper

igolaizola/angi-scraper

Extract verified business data from Angi (formerly Angie's List) including phone numbers, ratings, and contact details for home service professionals. Get comprehensive listings with company information, customer reviews, and contact data across 150+ categories like plumbers and contractors.

πŸ‘ User avatar

IΓ±igo Garcia Olaizola

308

5.0

Local.ch Business Scraper - Billig CheapπŸ”πŸ“žπŸ‡¨πŸ‡­πŸ’

scrapestorm/local-ch-business-scraper---billig-cheap

Looking to collect business listings from local.ch? πŸ’πŸ”Ž With this scraper, you can extract business data including name, categories, address, city, ratings, contact details (phone, email), websites, opening hours & more Perfect for lead generation, competitor research, and structured datasets πŸ“Š

14

3.3

Google Maps Lead Finder - Emails, Phones, Social Profiles

thirdwatch/google-maps-lead-finder-scraper

Find local businesses on Google Maps and enrich each listing with emails, phones, contact pages, social profiles, and lead score. Built for sales prospecting and local lead generation.

WordPress Scraper

jupri/wordpress

πŸ’« Scrape WordPress and Woocommerce websites

Nextdoor Scraper

eunit/nextdoor-scraper

Extracts structured place-level data from public Nextdoor city pages such as city metadata, FAQs, neighborhood links, business directory links, local group summaries, resource links, city descriptions, resident counts, directory-style public resources, and city statistics.

πŸ‘ User avatar

Emmanuel Uchenna

9

5.0

Google Maps Local Business Leads Scraper

coregent/google-maps-local-business-leads-scraper

Scrape local business leads from Google Maps by keyword and location. Export clean, flat, CSV-friendly business data for outreach, SEO, web design sales, competitor research, and local lead generation.

5

Local.ch Scraper (By Search URL)

azzouzana/local-ch-search-results-scraper-ppr

⚑ Scrape local.ch businesses in seconds πŸ“Š Get names, phones, emails, addresses, opening hours, reviews, and more. Export to Excel, CSV, HTML, or via API. Fast, simple, and super affordable! Grab your search URL & you're good to go πŸ™Œ

97

5.0