Local Business Lead Finder
Pricing
from $0.50 / 1,000 results
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
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer

Hayder Al-Khalissi
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Find and enrich local business leads from Google Maps. This Actor searches by keyword and location, extracts business details (name, address, phone, website), optionally visits each website to extract 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.
See it in action
Local Business Lead Finder
by u/Hayder_Germany in apify
What it does
- Discovers businesses on Google Maps by search query (e.g. "dentist", "pizza") and location (city/country or lat/lng + radius).
- Extracts from each place: name, address, phone, website, category, rating, coordinates, Google Maps URL.
- Enriches (optional): visits business websites, follows contact/about-style pages, and extracts emails and social profiles (Facebook, Instagram, LinkedIn, Twitter/X, TikTok, YouTube).
- Deduplicates across runs using a chosen key (place ID, website, or phone) so recurring runs only add new leads.
- Exports to the run’s default dataset (shown in the Apify Console Output tab) and/or to a webhook URL in configurable batches with retries and idempotency.
Use cases
- Sales & agencies — Build prospect lists of local businesses (e.g. plumbers, restaurants) with verified contact data.
- Local SEO — Research competitors and business density in specific areas.
- 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.
Input
Provide queries (required) and either locations (text), geo (object), or geoRaw (raw string).
| Parameter | Type | Default | Description |
|---|---|---|---|
| queries | array | required | Search terms, e.g. ["dentist", "pizza"]. |
| locations | array | — | Text locations, e.g. ["Berlin, Germany"]. Use with or instead of geo / geoRaw. |
| geo | object | — | lat, lng, radiusKm. Use with or instead of locations. |
| geoRaw | string | — | Raw format: "lat, lng" or "lat, lng, radiusKm" (e.g. 52.52, 13.405, 5). Overrides geo if both set. |
| maxResultsPerQuery | integer | 50 | Max businesses per query/location combination. |
| language | string | "en" | Language for Google Maps (e.g. en, de). |
| includeClosed | boolean | false | Include permanently closed businesses. |
| enrichWebsite | boolean | true | Visit websites to extract emails and socials. |
| emailScanDepth | integer | 2 | How many internal pages (e.g. /contact) to scan per site. |
| dedupeBy | string | "placeId" | Deduplication key: placeId, website, or phone. |
| webhookUrl | string | — | URL to POST results (batched). Stored encrypted. |
| batchSize | integer | 50 | Items per webhook request. |
| debug | boolean | false | Verbose logging (URLs and details). |
Example input
{"queries": ["dentist", "dental clinic"],"locations": ["Berlin, Germany"],"maxResultsPerQuery": 25,"enrichWebsite": true,"dedupeBy": "placeId"}
Or with coordinates (object or raw string):
{"queries": ["cafe"],"geo": { "lat": 52.52, "lng": 13.405, "radiusKm": 5 },"maxResultsPerQuery": 50}
Raw lat/lng format:
{"queries": ["cafe"],"geoRaw": "52.52, 13.405, 5","maxResultsPerQuery": 50}
Output
Results are stored in the run’s default dataset and shown in the Actor run Output tab (full items and an Overview table). Each item includes:
| Field | Description |
|---|---|
| name | Business name. |
| googleUrl | Google Maps URL. |
| website | Business website (if found). |
| phone | Phone number. |
| address | Full address. |
| category | Primary category. |
| lat, lng | Coordinates. |
| placeId | Stable place identifier. |
| emails | Extracted emails (when enrichment is on). |
| socials | facebook, instagram, linkedin, twitter, youtube, tiktok, other[]. |
| enrichment | websiteVisited, scannedUrl (when enrichment ran). |
| discoverySource | "detail". |
| fetchedAt | ISO timestamp. |
Example output item
{"name": "Example Dental Studio","googleUrl": "https://www.google.com/maps/place/...","website": "https://example-dental.com","phone": "+49 30 12345678","address": "Example St 1, 10115 Berlin","category": "Dentist","emails": ["contact@example-dental.com"],"socials": {"facebook": "https://facebook.com/example-dental","instagram": "https://instagram.com/example_dental","other": []},"enrichment": { "websiteVisited": true, "scannedUrl": "https://example-dental.com" },"discoverySource": "detail","fetchedAt": "2025-02-13T12:00:00.000Z"}
Running the Actor
- Apify Console — Open the Actor, set input, click Start. Use Schedule for recurring runs.
- API — Call Apify API to run the Actor; the run’s
output.resultsandoutput.overviewURLs point to the default dataset. - Integrations — Use webhookUrl to push results to n8n, Make, Zapier, or your own endpoint (batched, with retries).
Notes
- Google Maps — The Actor opens Maps in a browser; consent or layout changes can affect results in some environments. For production, running on Apify with recommended resources is advised.
- Enrichment — Only same-domain (and subdomain) links are followed; contact-style paths (e.g. /contact, /about) are prioritized.
- Webhook — Failed batches after retries are kept for inspection via the Actor run; you can implement manual retry if needed.
- Compliance — Use for legitimate lead generation and research. Obtain consent or have a lawful basis before contacting businesses.