# Google Maps B2B Lead Enricher & Contact Finder (`egeusta/google-maps-lead-enricher`) Actor

Extract and enrich local business leads from Google Maps with direct emails, verified phone numbers, social profiles, website status, and review ratings.

- **URL**: https://apify.com/egeusta/google-maps-lead-enricher.md
- **Developed by:** [Ege Usta](https://apify.com/egeusta) (community)
- **Categories:** Lead generation, SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Google Maps B2B Lead Enricher — Emails & Socials

Turn Google Maps searches into outreach-ready local business leads. The Actor discovers businesses by category and location, removes duplicates, visits public business websites, and extracts publicly listed contact channels such as emails, phones, WhatsApp links, Instagram, LinkedIn and Facebook profiles.

### Why teams use it

- Build targeted lists such as beauty salons in Istanbul or auto detailers in Miami.
- Find businesses with website, mobile, HTTPS and contact-data opportunities.
- Prioritize prospects with opportunity grades, lead-priority scores and recommended outreach pitches.
- Export clean JSON, CSV or Excel from the Apify dataset.

### Input example

```json
{
  "searchQueries": ["beauty salon", "auto detailing"],
  "locations": ["Istanbul, Turkey", "Miami, Florida"],
  "maxTotalResults": 100,
  "enrichFromWebsite": true,
  "maxWebsitePagesPerBusiness": 2
}
```

You can also provide Google Maps search URLs or direct place URLs in `startUrls`. Website crawling is limited to public pages, protected against unsafe network targets, and respects `robots.txt` by default. Results are best-effort: websites that block automated requests may have no enrichment fields.

### Output

Each dataset item includes the business identity, address, Google rating and reviews, website, website enrichment status, public emails/phones/social profiles, opportunity scoring, reasons and a suggested pitch. A run summary is saved to the `SUMMARY` key-value record.

### Responsible use

Use this Actor only for lawful, permission-aware prospecting. Respect applicable privacy, anti-spam, website terms and data-protection rules. Do not use extracted contact data for unsolicited bulk messaging.

# Actor input Schema

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

Business categories or keywords, for example beauty salons, dentists, or auto detailing.

## `locations` (type: `array`):

Locations combined with every search, for example Istanbul, Miami, or London.

## `startUrls` (type: `array`):

Google Maps search URLs or direct place URLs.

## `maxResultsPerSearch` (type: `integer`):

Maximum businesses collected for each search.

## `maxTotalResults` (type: `integer`):

Global limit of unique leads emitted by the run.

## `includeClosedBusinesses` (type: `boolean`):

Include businesses marked closed by Google Maps.

## `language` (type: `string`):

Google Maps UI language code.

## `requestTimeoutSecs` (type: `integer`):

Timeout applied to Google Maps and website requests.

## `enrichFromWebsite` (type: `boolean`):

Visit public business pages to find emails, phones, WhatsApp and social profiles.

## `maxWebsitePagesPerBusiness` (type: `integer`):

Maximum homepage and same-origin pages fetched for one business.

## `websiteConcurrency` (type: `integer`):

Maximum number of business websites fetched in parallel.

## `respectRobotsTxt` (type: `boolean`):

Skip pages disallowed by robots.txt.

## `maxWebsiteBytes` (type: `integer`):

Hard ceiling for bytes read from one website page.

## Actor input object example

```json
{
  "searchQueries": [
    "dentist"
  ],
  "locations": [
    "Austin, TX"
  ],
  "startUrls": [],
  "maxResultsPerSearch": 20,
  "maxTotalResults": 100,
  "includeClosedBusinesses": false,
  "language": "en",
  "requestTimeoutSecs": 30,
  "enrichFromWebsite": true,
  "maxWebsitePagesPerBusiness": 2,
  "websiteConcurrency": 5,
  "respectRobotsTxt": true,
  "maxWebsiteBytes": 1500000
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("egeusta/google-maps-lead-enricher").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("egeusta/google-maps-lead-enricher").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 '{}' |
apify call egeusta/google-maps-lead-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,egeusta/google-maps-lead-enricher"
        }
    }
}

```

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/vKkayZvjECxqYkn5C/builds/QxR3arRSvNivp4Gki/openapi.json
