# Local Business Leads: email finder, website audit, map (`translucent_wire/local-business-email-finder`) Actor

Local lead generation by business type and city: an email finder that reads each company's own website (mail server checked), a website audit of what each business lacks online, a fit score and pitch line for your offer, branded audit pages and a lead map. No Google API key.

- **URL**: https://apify.com/translucent_wire/local-business-email-finder.md
- **Developed by:** [Ghulam Nabi](https://apify.com/translucent_wire) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 contact email founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Local Business Leads: emails, gaps, fit score and map

**Tell it what you sell, pick a business type and a city. Get local businesses with the best contact email from each company's own website, what each business is missing online, how well it fits your offer, a ready pitch line, and an interactive map with a market report.** No Google account, no API key, no cookies.

- 📧 **Best business email per company**, from its own website, with the mail server checked (fewer bounces)
- 🔍 **What each business lacks, with proof**: no online booking, not mobile friendly, outdated site, not secure, no chat or WhatsApp button, no contact form, no visitor tracking, weak Google description, no social links, no online shop
- 🎯 **Fit score 0-100 for YOUR offer** (website design, SEO, online booking, AI chatbot / AI receptionist, social media, paid ads, e-commerce, website care) with the reasons
- ✍️ **A ready first line for your email or call**, based on the business's biggest gap
- 🗺️ **Interactive map + market report**: every business on a map coloured by fit, the share of businesses in the area with each gap ("70% of clinics here have no online booking"), and your best-fit list
- 🏷️ **Your brand on everything**: your name, logo, colour and booking button on the map, report and audit pages
- 📄 **A branded one-page website check for each business**, ready to send to that business as a free audit (your lead magnet)
- 🎛️ **Your filters**: only high-fit businesses, or only those lacking what you sell (e.g. no online booking); filtered ones aren't charged
- 📍 **Radius search** around any address for field-sales territories, plus a **visit route** for your top 10 in Google Maps
- ✍️ **Your own pitch line template** with {name}, {city}, {gap}, {offer}
- 💵 **Pay only for what you use**: businesses without an email are free; analysis and map can be switched off

### Example

*Dentists and clinics in Austin, scored for an online booking seller:*

| Business | Fit | Email | Why |
|---|---|---|---|
| Powers Family Wellness Chiropractic | 90 | info@… | No booking widget or "book online" link on the site; no chat button |
| Canvas Dental | 80 | smile@… | No booking widget or "book online" link on the site |
| Dental Smiles Family and Cosmetic | 80 | info@… | No booking widget; no contact form found |

Pitch line: *"I couldn't find a way to book online on your website, so after-hours customers may book elsewhere."*

### Who it's for

Web designers, SEO and marketing agencies, AI-automation and chatbot sellers, booking-software resellers, social media managers, and anyone selling services to local businesses.

### How to use it

1. Type a **city or area** and a **country code** (e.g. `Austin`, `US`).
2. Choose **business types**, and **what you sell**.
3. Set **maximum businesses with email** (the run stops there, so you control the cost).
4. Click **Start**. Download the leads (Excel, CSV, JSON) and open the **map + report** from the Output tab.

Optional: add your branding, turn on **Branded audit page for each business**, set a **minimum fit score** or
**only businesses lacking...**, a **radius**, and your own **pitch line** with {name}, {city}, {gap}, {offer}.

Already have company websites? Paste them into **Or: list of websites** to get emails, gaps and fit for each.

### Output fields

`name`, `bestEmail`, `bestEmailType` (generic / personal), `emailDomainAcceptsMail`, `allEmails`, `website`, `websiteOk`, `websiteTitle`, `websiteDescription`, `phone`, `address`, `postcode`, `city`, `country`, `category`, `latitude`, `longitude`, `openingHours`, `osmUrl`, and with analysis: `fitScore`, `fitLabel`, `fitReasons`, `pitchLine`, `gaps`, `gapDetails` (each with its evidence), `socialLinks`, `websiteSignals` (HTTPS, mobile, copyright year, booking, chat, contact form, analytics, ad pixel, online shop, CMS), and `prospectReportUrl` (branded audit page) when reports are on.

### Pricing

Pay per event, no subscription. Businesses without an email are free.

| Event | Price |
|---|---|
| Contact email found (business returned with an email) | **$0.003** |
| Opportunity analysis (gaps, fit score, pitch line), if on | **$0.003** |
| Branded audit page per business, if on | **$0.50** |
| Map and market report, once per run, if on | **$0.80** |

Examples:

- **Default run** (10 businesses, analysis + map): 10 × $0.006 + $0.80 = **about $0.86**
- 100 businesses with analysis + map: **about $1.40**; adding audit pages for your top 20: **+ $10.00**

Runs are paid from your Apify balance; the free plan's $5 monthly credit covers a few default runs. Use **Maximum cost per run** in the run options to set a hard cap.

### Honest limits

- OpenStreetMap doesn't list every business; big cities give far more results than small towns.
- Gaps are detected from each website's page code. Features loaded later by scripts (some chat widgets, some forms) can be missed, so every gap shows its evidence: check before you pitch.

### Good use

Use the results for relevant business-to-business outreach: say who you are, include a real postal address and an easy opt-out, and stop emailing anyone who asks. In some countries (for example Germany and Austria) cold business email needs prior consent; the **Generic addresses only** switch helps, but check your local rules.

### Data and licence

Business data © OpenStreetMap contributors, Open Database License (ODbL 1.0); every row includes this attribution and its OpenStreetMap link. Emails and website signals come from the businesses' own public websites.

### More tools from translucent_wire

| Tool | What it does |
|---|---|
| [Hiring Signals to Proposals](https://apify.com/translucent_wire/hiring-signals-to-proposals) | Companies hiring for a role your service can do: tasks covered, saving, email, proposal page |
| [GeoRisk Site Screener](https://apify.com/translucent_wire/georisk-site-intelligence) | Flood, contamination, climate, EUDR forest and solar risk for any site or plot, A-F grades + report |
| [EUDR Plot File Fixer](https://apify.com/translucent_wire/eudr-plot-file-fixer) | Fix GeoJSON/KML/CSV/Shapefile plot files so the EU Information System accepts them |
| [Solar Roof Prospects](https://apify.com/translucent_wire/solar-roof-prospects) | Business roofs that suit commercial solar: system size, saving, payback, email, estimate page |

### Use it from an AI assistant (MCP)

Add Apify's MCP server to Claude, ChatGPT, Cursor or any MCP client and this Actor becomes a tool your assistant can run:

```json
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=translucent_wire/local-business-email-finder"}}}
```

AI agents without an Apify account can also run it and pay per run in USDC through Apify's x402 support.

### FAQ

**Why fewer results than I asked for?** The area has fewer mapped businesses with a website. Try a bigger area, more business types, or a nearby city.

**Is the fit score a guarantee?** No. It ranks who most likely needs your offer, based on public evidence, so you contact the best prospects first.

**Can I use it from my own system?** Yes: Apify API, Make, Zapier, n8n, Python and JavaScript, with the same input fields.

# Actor input Schema

## `location` (type: `string`):

City, area or full address, e.g. 'Austin', 'Manchester', '350 5th Ave, New York'. Leave empty if you give a list of websites.

## `countryCode` (type: `string`):

Two letters, e.g. US, GB, AE. Helps find the right city.

## `radiusKm` (type: `integer`):

Search a circle around an address or point instead of a whole city. Good for field sales territories.

## `businessTypes` (type: `array`):

Choose one or more types of business.

## `customTags` (type: `array`):

Optional, e.g. office=insurance or craft=photovoltaic. Combined with the types above.

## `yourOffer` (type: `string`):

Each business gets a 0-100 fit score for your offer, the reasons, and a ready pitch line.

## `analyzeOpportunities` (type: `boolean`):

Checks each website for gaps: no online booking, not mobile friendly, outdated, not secure, no chat, no tracking, weak SEO, no social links... Each gap comes with its evidence. Charged per business (see Pricing).

## `makeMapReport` (type: `boolean`):

One page with every business on a map (coloured by fit), the share of businesses with each gap, and your best-fit list. Charged once per run.

## `prospectReports` (type: `boolean`):

A one-page website check per business, with your name, logo, colour and contact button, ready to send to that business as a free audit. Link in each row (prospectReportUrl). Charged per business (see Pricing).

## `brandName` (type: `string`):

Shown on the map, report and audit pages.

## `brandLogoUrl` (type: `string`):

A public https link to your logo image (PNG or SVG). Shown at the top of the map and audit pages.

## `brandColor` (type: `string`):

Hex colour like #2b6cb0.

## `brandContact` (type: `string`):

e.g. 'Jane Smith, Bright Web Studio, jane@brightweb.com'.

## `brandCtaUrl` (type: `string`):

Where the button sends people, e.g. your booking page or website.

## `brandCtaText` (type: `string`):

Text on the button.

## `minFitScore` (type: `integer`):

0 keeps everyone. 60 keeps only high-fit businesses. Filtered businesses are not charged.

## `requiredGaps` (type: `array`):

Optional. e.g. only businesses with no online booking. Filtered businesses are not charged.

## `highlightGap` (type: `string`):

Draws a red ring around businesses lacking this.

## `pitchTemplate` (type: `string`):

Use {name}, {city}, {gap}, {offer}, {website}. Example: 'Hi {name} team, {gap} We help {city} businesses fix that.'

## `websites` (type: `array`):

Optional. Give company websites instead of a location, and get the best contact email for each.

## `maxResults` (type: `integer`):

The run stops when this many businesses with an email are found.

## `onlyWithEmail` (type: `boolean`):

Turn off to also get businesses where no email was found (those rows are free).

## `genericEmailsOnly` (type: `boolean`):

Skip addresses that look like a person's name. Useful for GDPR-careful outreach in Europe.

## `verifyEmailDomain` (type: `boolean`):

Looks up the domain's mail server (MX record) so you avoid bounces.

## Actor input object example

```json
{
  "location": "Austin",
  "countryCode": "US",
  "businessTypes": [
    "accountants_lawyers_consultants"
  ],
  "yourOffer": "website_design",
  "analyzeOpportunities": true,
  "makeMapReport": true,
  "prospectReports": false,
  "brandColor": "#2b6cb0",
  "brandCtaText": "Book a free 15-minute call",
  "minFitScore": 0,
  "highlightGap": "none",
  "maxResults": 10,
  "onlyWithEmail": true,
  "genericEmailsOnly": false,
  "verifyEmailDomain": true
}
```

# Actor output Schema

## `leads` (type: `string`):

No description

## `map` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Austin",
    "countryCode": "US",
    "businessTypes": [
        "accountants_lawyers_consultants"
    ],
    "yourOffer": "website_design",
    "brandColor": "#2b6cb0",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("translucent_wire/local-business-email-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "Austin",
    "countryCode": "US",
    "businessTypes": ["accountants_lawyers_consultants"],
    "yourOffer": "website_design",
    "brandColor": "#2b6cb0",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("translucent_wire/local-business-email-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Austin",
  "countryCode": "US",
  "businessTypes": [
    "accountants_lawyers_consultants"
  ],
  "yourOffer": "website_design",
  "brandColor": "#2b6cb0",
  "maxResults": 10
}' |
apify call translucent_wire/local-business-email-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,translucent_wire/local-business-email-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QvznWv76wtDFgFeiH/builds/GbfzJW9aAfP3sNtey/openapi.json
