Local Lead Finder — Business Emails & Phones API
Pricing
from $1.80 / 1,000 lead delivereds
Local Lead Finder — Business Emails & Phones API
Find local businesses and no-website leads with available public contacts and website enrichment. Bulk export: JSON, CSV, Excel and API. PPE: from $1.5/1K lead records; start fee, usage extra.
Pricing
from $1.80 / 1,000 lead delivereds
Rating
5.0
(1)
Developer
Apivault Labs
Maintained by CommunityActor stats
3
Bookmarked
379
Total users
7
Monthly active users
7 hours ago
Last modified
Categories
Share
Local Lead Finder — No-Website Leads & Contacts
Find US local businesses by category and city, or enrich a list of website URLs. Get directory addresses, phones and ratings, observed website contacts, technology signals and a heuristic opportunity score. Suitable for web-design prospecting, CRM enrichment and Claude/Codex workflows.
No website means no website was listed in the returned directory record. It does not prove that the business has no website anywhere. Search includes nearby locations and is bounded by pages, results and runtime; it does not guarantee complete market coverage.
Start with a small search
{"workflow":"findLeads","category":"plumbers","location":"Albany NY","maxPages":2,"maxResults":10,"outputPreset":"sales","enrichWebsites":false}
Set onlyWithoutWebsite to true for directory records without a listed website. Enable enrichWebsites to collect public contacts and inspect listed websites. The Actor tries direct HTTP requests first, followed by hosted scraping/reader fallbacks. No external API key is required for the default workflow. Optional Firecrawl/Jina credentials and Apify proxy settings can introduce separate costs and availability dependencies.
Enrich your own websites
{"workflow":"enrichUrls","startUrls":["https://www.python.org"],"maxResults":1,"outputPreset":"contacts","enrichWebsites":true,"verifyEmails":true}
combined searches the directory and enriches supplied URLs. auto selects the workflow from the provided inputs. Invalid workflow inputs fail with diagnostics instead of returning a successful empty dataset.
Contact quality and website checks
bestEmailis selected from observed website or directory emails.bestEmailSourceidentifies the source. Guessed addresses stay inemailGuessesand are never promoted to observed contacts.verifyEmailschecks syntax, DNS/MX and heuristic quality.mx_presentmeans the domain accepts mail routing; it does not verify a mailbox.mailboxVerifiedis false. Confidence is a ranking heuristic, not a delivery probability.websiteAlive: nullwithwebsiteCheckStatus: blockedorunavailablemeans accessibility is unknown. HTTP 403, rate limits and timeouts do not count as dead websites. HTTPS requests use certificate verification.- Scores, pitches, owner-name extraction and technology detection require review. Missing data remains missing; a field is not promised for every business. Large batches skip some deep enrichment to stay within the runtime limit.
Outputs and diagnostics
Choose sales, contacts or full. exportFormat: csv produces flattened records; both embeds a flattened _csv object in each record. Each delivered dataset row is billed once. Export the dataset as JSON, CSV, Excel or another Apify-supported format.
Read SUMMARY and ERRORS from the run's default key-value store. These metadata records are not billable lead rows. sourcePages lists successful, empty and failed page requests. coverageComplete is false because directory search is not an exhaustive market census. PARTIAL signals source or website errors; FAILED signals an unavailable listing source; NO_MATCHES can follow filters. CHARGE_LIMIT_REACHED signals an SDK spending limit. The legacy withDeliverableEmail summary counter is a heuristic compatibility field, not proof of deliverability.
Directory cards must include a business name and a valid YellowPages listing link. Damaged source columns, website URLs in the category field, malformed website values and ratings outside 0–5 are rejected before enrichment, no-website filtering and billing. sourcePages includes validRows and invalidRows; ERRORS reports INVALID_SOURCE_ROWS with counts and reasons. Valid cards remain available as PARTIAL; a page containing only rejected cards fails rather than reporting a genuine empty search. A missing website still means only that the directory did not list one.
Pricing and cost control
Published lead rates per 1,000 delivered rows: Free $7, Bronze $2.50, Silver $2, Gold $1.80, Platinum $1.50, Diamond $1.50. The start event is $0.00005. Confirm the current rate in the Actor's Pricing tab before a large run. Platform resources and optional proxy usage are separate. The SDK limits dataset writes according to maxTotalChargeUsd; set a result limit and spending cap. Owner test-run payout counters can differ from customer charges; chargedRows reflects rows delivered by the SDK.
MCP for Claude, Codex and other agents
Select this Actor at https://mcp.apify.com?tools=apivault_labs/apify-actor-local-leads. The Actor tool is apivault_labs--apify-actor-local-leads. Authenticate with your Apify token; target website/API credentials are not required for the default workflow.
Give the tool one of the bounded JSON inputs above. Poll using get-actor-run if the run is still running, then read get-dataset-items and get-key-value-store-record for SUMMARY and ERRORS. A run ID alone does not prove completion. Inspect partial errors before using contacts for outreach.
Codex MCP configuration:
[mcp_servers.local_leads]url = "https://mcp.apify.com?tools=apivault_labs/apify-actor-local-leads"bearer_token_env_var = "APIFY_TOKEN"
Claude Code project .mcp.json:
{"mcpServers":{"local-leads":{"type":"http","url":"https://mcp.apify.com?tools=apivault_labs/apify-actor-local-leads","headers":{"Authorization":"Bearer ${APIFY_TOKEN}"}}}}
Keep tokens in the environment. These examples expose the tool to an agent; tool selection depends on the user's request and client configuration.
HTTP API
POST input JSON to https://api.apify.com/v2/acts/apivault_labs~apify-actor-local-leads/runs with an Authorization bearer token. Poll the returned run ID, then export its default dataset and retrieve diagnostic records from its default key-value store. Review addresses, contact provenance and local outreach requirements before contacting businesses.
Local business prospecting with evidence you can review
Local Lead Finder supports two complementary jobs: research a category/location in a directory, and inspect public websites you already supply. A web-design agency can review businesses without a listed website; a CRM operator can collect observed contact channels; a researcher can compare website and technology signals. The output is a shortlist for qualification, not a verified sales opportunity or a guarantee that a business needs your service.
| Goal | Useful settings | Review before acting |
|---|---|---|
| Find directory businesses without a website | onlyWithoutWebsite=true | Missing directory website does not prove no website exists |
| Build a small local market sample | category, location, maxPages, maxResults | Nearby results and source limits prevent census claims |
| Enrich existing website URLs | workflow=enrichUrls | Observed email source and website access status |
| Review higher-scoring prospects | minLeadScore | Score is heuristic, not purchase intent or delivery probability |
| Prepare a contact export | outputPreset=contacts | Preserve source and unknown-value distinctions |
Treat addresses and phones as source observations. A directory listing can be stale, and a website contact can belong to a shared office or service provider. Check relevance before placing a record into a customer-facing workflow. Contact discovery does not establish consent to contact or mailbox existence.
A bounded directory sample
{"workflow": "findLeads","category": "plumbers","location": "Albany NY","maxPages": 1,"maxResults": 3,"enrichWebsites": false,"outputPreset": "sales"}
Use this small sample to inspect listing names, locations and source links. maxResults limits delivered rows; filters and rejected cards can require more source work than the output count suggests.
Businesses without a directory website
{"workflow": "findLeads","category": "plumbers","location": "Albany NY","onlyWithoutWebsite": true,"maxPages": 1,"maxResults": 3,"enrichWebsites": false}
This filters the directory field only. Verify business identity and independently investigate a website before describing the business as offline.
Observed contacts from one known website
{"workflow": "enrichUrls","startUrls": ["https://www.python.org"],"maxResults": 1,"outputPreset": "contacts","crawlSubpages": true,"verifyEmails": true}
The public website is an input example, not a promise of a particular email. Verify observed-vs-guessed separation and retain bestEmailSource. DNS/MX checks do not confirm a mailbox.
Export a small flattened shortlist
{"workflow": "findLeads","category": "plumbers","location": "Albany NY","maxPages": 1,"maxResults": 3,"outputPreset": "sales","exportFormat": "both","enrichWebsites": false}
both includes a flattened _csv representation in each record. The nested object is not another lead or another result event. Standard Apify CSV export is a separate presentation choice.
Qualify contact quality and website status
Observed contacts and generated email guesses answer different questions. bestEmail should be traced to its observed source; emailGuesses remain hypotheses. MX availability describes domain routing, not an individual inbox, willingness to receive outreach or a guarantee that a message will arrive. mailboxVerified=false must not be changed to true in a downstream spreadsheet just because a confidence score is high.
Access failure is also distinct from a dead website. HTTP 403, rate limits, TLS issues and timeouts can make website health unknown. Keep websiteCheckStatus alongside websiteAlive, and do not turn null into false. A listing without a website is not necessarily the same as a website enrichment failure. Enrichment and score filters should be evaluated with this uncertainty visible.
Review SUMMARY, ERRORS and sourcePages after collection. Malformed directory cards are rejected before lead billing; valid rows can remain in a PARTIAL run. A NO_MATCHES status can reflect restrictive filters, while a FAILED source status means that the source could not be verified. coverageComplete stays false. A successful small example cannot establish complete geographic coverage or explain unavailable historical failures.
Costs, limits and automation
The effective lead rates are Free $7, Bronze $2.50, Silver $2, Gold $1.80, Platinum $1.50 and Diamond $1.50 per 1,000 rows, plus startup and caller-paid resources. Three Free-plan lead rows mean $0.021 in primary events; this excludes startup, platform usage and optional external-service costs. The pricing unit is a delivered lead, not the number of email addresses on that lead.
Use a low maxResults and maxPages for the first run. Deep enrichment can increase requests and elapsed time; large batches can skip some deep work to fit their budget. Set spending limits in run options as well as output caps. Do not supply a third-party API key merely to reproduce the default workflow; optional backend paths have separate prerequisites and may have separate costs.
Can this prove a company has no website? No. It can establish that the returned directory card lacks a listed website, and can report what happened when inspecting a supplied URL.
Can I use the score to prioritize a CRM queue? Yes, as a review aid. Keep its heuristic status and the underlying observations; do not present it as verified commercial intent.
Can I run it repeatedly? Repeated runs are new observations, not built-in price or contact-change tracking. Use listing URLs, your own deduplication policy and collection timestamps when combining exports. Existing n8n, Python and MCP paths below help transport the data without changing its quality guarantees.
n8n and developer integrations
Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.
- n8n community node: n8n-nodes-apivault-local-leads. Install package name
n8n-nodes-apivault-local-leadsin a self-hosted n8n instance that permits community packages. - Python client and examples: GitHub.
- n8n source and usage: GitHub.
- n8n source and usage: GitHub.
These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.
Collection time budget and partial directory results
runBudgetSecs (default160, range30–600) bounds directory discovery and enrichment together. Source engines share each page's remaining budget; switching engines does not start another full timeout. HTTP submission and polling also share one attempt deadline. Allow additional platform run time for writing Dataset rows and diagnostics.
Completed directory pages start enrichment immediately, so a slow sibling page cannot discard their useful businesses. When a source fails or the time budget expires, the Actor keeps completed valid leads and records incomplete pages in SUMMARY.sourcePages and ERRORS. With no readable directory rows it returns FAILED with0paid leads, rather than pretending that no businesses exist. Error/summary records remain in the key-value store and are not billed as lead results.
maxResults is a delivery cap after filters and sorting, not a guarantee. A source outage, onlyWithoutWebsite, score/chain filters, pages/maxPages, time budget or charge cap can reduce the delivered count. These controls do not promise a complete export of a city or directory. A timeout repair does not establish that an external source is reachable.