# Google Maps Email Extractor — Local Business Leads (`hipersoft/google-maps-email-extractor`) Actor

Search Google Maps for businesses, then crawl each business website to extract emails, social profiles and extra phone numbers. Turns any Maps search into a ready lead list. No key.

- **URL**: https://apify.com/hipersoft/google-maps-email-extractor.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.006 / business lead scraped

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

## Google Maps Email Extractor — Local Business Leads with Emails, Socials & Phones

Turn any Google Maps search into a ready-to-use lead list. This Actor searches Google Maps for businesses (e.g. "dentists in Austin TX"), then crawls each business's own website to pull out email addresses, social profiles and extra phone numbers — merging them with the Maps listing into one clean JSON record per lead. It runs browser-free on the Maps side and needs **no account and no API key**. Ideal for sales teams, agencies and researchers who want contactable leads, not just names on a map.

### Features

- 📧 **Website email extraction** — crawls each business site and de-obfuscates addresses to find real, sendable emails.
- 🕸️ **Deep crawl option** — with `deepCrawl` on, it also visits contact/about pages (up to `maxPagesPerSite`) to catch emails the homepage hides.
- 🔗 **Social profiles** — captures LinkedIn, Twitter/X, Facebook, Instagram, YouTube, TikTok, Pinterest, GitHub, Telegram and WhatsApp links.
- 📞 **Extra phone numbers** — pulls additional site phone numbers beyond the one Google lists.
- ✅ **Email-only filter** — set `onlyWithContact` to drop businesses where no email was found, keeping the list actionable.
- 🗺️ **Full Maps context** — each lead keeps name, category, address, city, rating, coordinates, Place ID and map link.
- ⚙️ **Tunable throughput** — control `maxPlacesPerSearch`, `websiteConcurrency` and locale (`language`/`country`) per run.

### What you get

One record per business lead, for example:

```json
{
  "search": "dentists in Austin TX",
  "name": "Bright Smile Dental",
  "category": "Dentist",
  "categories": ["Dentist", "Cosmetic dentist"],
  "address": "123 Congress Ave, Austin, TX 78701",
  "city": "Austin",
  "countryCode": "US",
  "phone": "+1 512-555-0142",
  "website": "https://brightsmileaustin.com/",
  "emails": ["hello@brightsmileaustin.com", "office@brightsmileaustin.com"],
  "socials": {
    "facebook": "https://facebook.com/brightsmileaustin",
    "instagram": "https://instagram.com/brightsmileaustin"
  },
  "extraPhones": ["+1 512-555-0199"],
  "companyName": "Bright Smile Dental LLC",
  "rating": 4.8,
  "latitude": 30.2681,
  "longitude": -97.7428,
  "placeId": "ChIJ_0123456789abcdefghijklmn",
  "mapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ_0123456789abcdefghijklmn",
  "websitePagesCrawled": 3
}
```

### Input

```json
{
  "searches": ["dentists in Austin TX", "marketing agencies London"],
  "maxPlacesPerSearch": 60,
  "onlyWithContact": false,
  "deepCrawl": true,
  "maxPagesPerSite": 4,
  "language": "en",
  "country": "us"
}
```

| Field | Description |
| --- | --- |
| `searches` | Google Maps searches, e.g. "plumbers near Berlin". One per line. |
| `maxPlacesPerSearch` | How many businesses to collect per search (1–500). |
| `onlyWithContact` | Skip businesses where no email was found on the website. |
| `deepCrawl` | Also visit contact/about pages, not just the homepage. |
| `maxPagesPerSite` | Maximum pages to crawl per business website (1–10). |
| `websiteConcurrency` | How many business websites to crawl in parallel (1–12). |
| `proxyConfiguration` | Proxy settings; residential recommended for Maps + website crawling. |

### Use cases

- Build cold-outreach lead lists with real emails for a niche and city.
- Enrich an existing prospect list with social profiles and secondary phone numbers.
- Feed a CRM or email tool with contactable local businesses.
- Research a local market's players and their web presence in one pass.

### Pricing

Pay-per-event: you're billed a small amount per run and per item scraped — you only pay for what you get. See the **Pricing** tab for current rates.

### FAQ

**Do I need an API key or Google account?**
No. The Maps side runs browser-free through Google's own endpoint and website crawling needs no login, so there's no API key or account to configure.

**How many leads can I get per run?**
Each search collects up to 500 businesses, and every business is crawled for emails, socials and extra phones. Queue multiple searches in one run to build lead lists in the thousands.

**Is scraping Google Maps and business websites legal?**
The Actor gathers only publicly visible data from [Google Maps](https://www.google.com/maps) listings and the businesses' own public websites. Collecting public data is generally permissible, but outreach must comply with anti-spam and data-protection laws such as GDPR and CAN-SPAM.

**Does it collect emails and contact info?**
Yes — that's its core job. It crawls each business site (optionally including contact/about pages), de-obfuscates hidden addresses, and returns emails, social profiles and secondary phone numbers merged with the Maps listing.

**What's the output format?**
One structured JSON record per lead, combining Maps context (name, address, rating, Place ID) with `emails`, `socials` and `extraPhones`. Export as JSON, CSV or Excel for your CRM or email tool.

### Related Actors

Build and enrich lead lists with these companion Actors:

- [Google Maps Scraper](https://apify.com/hipersoft/google-maps-scraper) — get clean place listings with phone and website, without the website crawl.
- [Website Contact Scraper](https://apify.com/hipersoft/website-contact-scraper) — extract emails, phones and socials from any list of websites you already have.
- [Clutch.co Agency Scraper](https://apify.com/hipersoft/clutch-scraper) — pull B2B agency profiles with ratings and budget signals for lead qualification.
- [Google Maps Reviews Scraper](https://apify.com/hipersoft/google-maps-reviews) — add reputation data to the businesses you extract here.

### Notes

This Actor collects contact details that businesses publish on their own public websites and Google Maps listings. It is an independent tool and is not affiliated with, endorsed by, or sponsored by Google; Google Maps is a trademark of Google LLC. It targets public data only — use the results in compliance with anti-spam and data-protection laws (e.g. GDPR, CAN-SPAM).

# Actor input Schema

## `searches` (type: `array`):

Google Maps searches, e.g. "dentists in Austin TX", "plumbers near Berlin".

## `maxPlacesPerSearch` (type: `integer`):

How many businesses to collect per search query.

## `onlyWithContact` (type: `boolean`):

Skip businesses where no email was found on the website.

## `deepCrawl` (type: `boolean`):

Also visit contact/about pages (not just the homepage) to find more emails.

## `maxPagesPerSite` (type: `integer`):

Maximum pages to crawl per business website.

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

Maps language (hl).

## `country` (type: `string`):

Maps country (gl).

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

How many business websites to crawl in parallel.

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

Proxy. Residential recommended for the Maps search + website crawling.

## Actor input object example

```json
{
  "searches": [
    "marketing agencies London",
    "cafes in Lisbon"
  ],
  "maxPlacesPerSearch": 60,
  "onlyWithContact": false,
  "deepCrawl": true,
  "maxPagesPerSite": 4,
  "language": "en",
  "country": "us",
  "websiteConcurrency": 6,
  "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 = {
    "searches": [
        "dentists in Austin TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/google-maps-email-extractor").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 = { "searches": ["dentists in Austin TX"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/google-maps-email-extractor").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 '{
  "searches": [
    "dentists in Austin TX"
  ]
}' |
apify call hipersoft/google-maps-email-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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