# Local Business Leads — Google Maps + Verified Emails API (`nexgendata/local-business-leads-scraper`) Actor

- **URL**: https://apify.com/nexgendata/local-business-leads-scraper.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 business lead records

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Local Business Leads — Google Maps + Verified Emails

Build a **territory list of local businesses** from Google Maps by industry and city — with an **MX-verified business email** attached wherever one is publicly discoverable. One run, outreach-ready.

> Most Maps scrapers hand back a name and a phone number. This one adds the reachable, MX-checked business email in the same pass — so the list is ready for a sequence the moment it lands.

### 💡 What makes this different

- **Sourced from Google Maps** — real local businesses by category + location (not a stale directory).
- **Verified business email** — where a business email is publicly discoverable it's MX-checked and flagged (`email_verified`, `email_provider`). In a live "dentists / Austin TX" run, ~30% of listings carried a verified email; the rest return the full listing (name, phone, site) for you to enrich downstream.
- **Full firmographic + location record** — address, phone, website, rating, geo, `place_id`.

### 📊 Output — one record per business (19 fields)

From a live run (`dentists` / `Austin TX`):

| Field | Example |
|---|---|
| `company` | ATX Family Dental |
| `category` | Dentist |
| `address` | 1700 S 1st St, Austin, TX 78704 |
| `city` | Austin |
| `phone` | (512) 717-3147 |
| `website` | https://www.atxfamilydental.com/ |
| `email` | info@atxfamilydental.com |
| `email_verified` | true |
| `email_provider` | Google Workspace |
| `contact_type` | general |
| `rating` | 4.9 |
| `reviews_count` | 128 |
| `latitude` / `longitude` | 30.24 / -97.76 |
| `place_id` | ChIJb5gBC-u0RIYR… |
| `source_url` | google.com/maps/… |
| `as_of_timestamp` | 2026-07-10T… |

### 💰 Pricing

Pay-Per-Event — **$1 ≈ 10 leads** ($0.10 per business returned; actor-start is negligible). You pay per business delivered, not per run. See the Pricing tab.

### ▶️ Try it — one-click example

A pre-built task **"Dentists in Austin with verified emails"** ships with the actor. Or set your own:

```json
{ "industry": ["dentists"], "location": "Austin TX", "maxLeads": 25 }
```

### 🔗 Two-step B2B workflow — territory → decision-makers

This actor builds the **territory list**: *which* businesses, *where*, and *how to reach them*. Pair it with **[B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder)** to get the **named decision-makers** inside those companies:

1. **This actor — Local Business Leads** ($0.10 / business): every dentist in Austin, with a verified business email where available.
2. **[B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder)** ($0.10 / person): the owner / marketing manager / decision-maker at a target company, with LinkedIn + a personal deliverable email.

Territory-building (this) → account-based targeting (Finder). Run them in either order.

### 🔗 Full lead-gen cluster

Found leads? verify → enrich → push to CRM:

1. **Find:** [B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder) · [Company Email Finder](https://apify.com/nexgendata/company-email-finder) · [Website Contact Scraper](https://apify.com/nexgendata/contact-info-scraper)
2. **Enrich:** [Company Enrichment](https://apify.com/nexgendata/company-enrichment-tool) · [Lead List Enricher](https://apify.com/nexgendata/lead-list-enricher)
3. **Verify & clean:** [Email Verification](https://apify.com/nexgendata/email-verification-tool) · [Bulk Email Validator](https://apify.com/nexgendata/email-validator)
4. **Deliver:** [Leads to Notion CRM](https://apify.com/nexgendata/leads-to-notion-crm)

### 🤖 Use with AI agents

Point Claude, the OpenAI Agents SDK, an n8n flow, or any MCP-aware client at it and build territory lists on demand.

***

*Public web & Google Maps business data, assembled as sales-team prospect lists. Use in line with applicable outreach and privacy law.*

# Actor input Schema

## `industry` (type: `array`):

One or more business types / niches to search for, e.g. \['dentists'], \['plumbers','HVAC contractors'], \['marketing agencies']. Each is searched as '<industry> in <location>'. Public business data only.

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

City / area to search in, e.g. 'Austin TX', 'San Francisco, CA', 'Manchester UK'. Combined with each industry as '<industry> in <location>'.

## `maxLeads` (type: `integer`):

Maximum number of enriched leads to return across all industry keywords. 25 for a quick batch, up to 200 for a full local-market sweep.

## `notionConnector` (type: `string`):

Optional. Connect your Notion workspace and this Actor builds a CRM database of the enriched leads in the same run - it never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console -> Settings -> API & Integrations, then select it here. Without a connector you simply get the dataset.

## `notionParentId` (type: `string`):

Optional. The Notion page ID to create the CRM database under. If blank, Notion creates it as a private page in your workspace.

## `proxyConfiguration` (type: `object`):

Proxy settings. RESIDENTIAL is strongly recommended (and the default) - Google Maps blocks datacenter IPs. Leave as-is unless you have a reason to change it.

## `supabaseConnector` (type: `string`):

Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scoped, project-scoped Supabase MCP connector in Apify Console (Settings -> Integrations), then select it here.

## `supabaseTable` (type: `string`):

Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped\_at timestamp). Default: nexgendata\_leads.

## `supabaseProjectId` (type: `string`):

Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/THIS\_PART.

## `deliveryDedup` (type: `boolean`):

When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every record on every run.

## Actor input object example

```json
{
  "industry": [
    "dentists",
    "plumbers",
    "marketing agencies"
  ],
  "location": "Austin TX",
  "maxLeads": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "supabaseTable": "nexgendata_leads",
  "deliveryDedup": true
}
```

# Actor output Schema

# 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 = {
    "industry": [
        "dentists"
    ],
    "location": "Austin TX",
    "maxLeads": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/local-business-leads-scraper").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 = {
    "industry": ["dentists"],
    "location": "Austin TX",
    "maxLeads": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "industry": [
    "dentists"
  ],
  "location": "Austin TX",
  "maxLeads": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call nexgendata/local-business-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/local-business-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/j5Y9CULkZFulrz0hf/builds/xwihpQBwx8oqvAzFO/openapi.json
