# Local Business Leads — Maps + Contact + Email (`jvn_coder/maps-leads-scraper`) Actor

Get local business leads with emails, phones, and social profiles from Google Maps — in one run, no coding required. Enter a business category and location, get a clean response of enriched leads.

- **URL**: https://apify.com/jvn\_coder/maps-leads-scraper.md
- **Developed by:** [jvn coder](https://apify.com/jvn_coder) (community)
- **Categories:** Lead generation, SEO tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 enriched leads

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 — Maps + Contact + Email

**Get local business leads with emails, phones, and social profiles — in one run, no coding required.**

Enter a business category and location (e.g. "dentists in Austin TX"), and this Actor searches Google Maps for matching businesses.

***

### What it does

1. **Scans Google Maps** for your search queries (e.g. `"plumbers in Denver CO"`, `"coffee shops in Portland OR"`)
2. **Extracts business info**: name, address, phone, website, rating, reviews count, coordinates
3. **Enriches contact details** by visiting each business website to find emails, social links (Instagram, Facebook, LinkedIn, TikTok, X/Twitter, YouTube), and phone numbers
4. **Deduplicates** results by Google Place ID so you don't get duplicates across overlapping queries

***

### Example Input

```json
{
  "searchQueries": [
    "dentists in Austin TX",
    "plumbers in Denver CO",
    "coffee shops in Portland OR"
  ],
  "maxResultsPerQuery": 50,
  "enrichContacts": true,
  "enrichmentTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Example Output (one record)

```json
{
  "name": "Austin Dental Care",
  "category": "Dentist",
  "address": "123 Main St, Austin, TX 78701",
  "phone": "(512) 555-0100",
  "website": "https://austindentalcare.example.com",
  "email": "info@austindentalcare.example.com",
  "socialLinks": {
    "instagram": "https://instagram.com/austindental",
    "facebook": "https://facebook.com/austindental",
    "linkedin": null,
    "tiktok": null,
    "twitter": null,
    "youtube": null
  },
  "rating": 4.5,
  "reviewsCount": 127,
  "latitude": 30.2672,
  "longitude": -97.7431,
  "placeId": "ChIJ....",
  "googleMapsUrl": "https://www.google.com/maps/place/...",
  "enrichmentStatus": "success",
  "sourceQuery": "dentists in Austin TX"
}
```

***

### Use cases

- **Sales prospecting** — build targeted lead lists by location and industry
- **Local SEO** — audit competitor citations and online presence
- **Real estate / territory planning** — map business density in specific areas
- **Market research** — analyze pricing, ratings, and service categories
- **CRM enrichment** — append emails and social handles to your existing contact database

***

### Pricing

This Actor uses **Pay-Per-Event** pricing. You are charged only for successfully enriched records:

- **$X per 1,000 results** returned in the dataset
- Records with `enrichmentStatus: "failed"` or `"timeout"` are **not charged**
- Runs that return zero records are **not charged**

***

### Integrations

Connect this Actor to your workflow using Apify's webhook or API:

- **n8n** — use the Apify node to trigger runs and process results
- **Make (formerly Integromat)** — Apify module in your scenario
- **Zapier** — connect via Apify + Zapier integration
- **Any CRM** — export to CSV and import, or use the API directly

***

### Usage notes

- Only **publicly available data** is collected from Google Maps and business websites.
- Users are responsible for complying with applicable data protection and privacy laws (e.g. GDPR, CCPA) in their jurisdiction when using this data for outreach.
- Residential proxies are recommended for reliable Google Maps access.
- Enrichment only works on public business websites — sites behind login walls or captchas will be skipped (marked as `"failed"`).

***

### Input parameters

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchQueries` | array of strings | Yes | — | Business category + location combinations |
| `maxResultsPerQuery` | integer | No | 50 | Max businesses per query (max 500) |
| `enrichContacts` | boolean | No | true | Crawl websites for email/social/phone |
| `enrichmentTimeoutSecs` | integer | No | 20 | Seconds to wait per website |
| `proxyConfiguration` | object | Yes | Residential | Apify proxy config |

***

### Legal

This tool collects only publicly accessible information. Users must ensure their use complies with all applicable laws. Respect robots.txt and terms of service of the websites you scrape.

# Actor input Schema

## `searchQueries` (type: `array`):

Business category + location combinations. Each entry will be searched separately.

## `maxResultsPerQuery` (type: `integer`):

Maximum number of businesses to collect per search query.

## `enrichContacts` (type: `boolean`):

Crawl each business website to find email addresses, social profiles, and phone numbers.

## `enrichmentTimeoutSecs` (type: `integer`):

Maximum time spent crawling a single business website.

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

Apify proxy configuration. Residential proxies recommended for reliable Maps access.

## Actor input object example

```json
{
  "searchQueries": [
    "dentists in Austin TX",
    "plumbers in Denver CO",
    "coffee shops in Portland OR"
  ],
  "maxResultsPerQuery": 50,
  "enrichContacts": true,
  "enrichmentTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQueries": [
        "dentists in Austin TX",
        "plumbers in Denver CO",
        "coffee shops in Portland OR"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jvn_coder/maps-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 = {
    "searchQueries": [
        "dentists in Austin TX",
        "plumbers in Denver CO",
        "coffee shops in Portland OR",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jvn_coder/maps-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 '{
  "searchQueries": [
    "dentists in Austin TX",
    "plumbers in Denver CO",
    "coffee shops in Portland OR"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call jvn_coder/maps-leads-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/4fMiXsJYlXNzNV5r3/builds/mykuSAW5tbC9CYssm/openapi.json
