# 📩 Google Maps Email Scraper Unlimited ✅ (`scraper-mind/google-maps-email-scraper`) Actor

\[𝗖𝗵𝗲𝗮𝗽𝗲𝘀𝘁 𝗣𝗿𝗶𝗰𝗲] Boost your lead generation with a fast, accurate Google Maps Email Scraper that extracts unlimited real business emails, phones, websites, and social profiles in seconds. Perfect for outreach, local SEO, and B2B prospecting. 🚀

- **URL**: https://apify.com/scraper-mind/google-maps-email-scraper.md
- **Developed by:** [Scraper Mind](https://apify.com/scraper-mind) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 55 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$9.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

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

**Google Maps Email Scraper** is an automation tool that helps you find local businesses on Google Maps and extract their contact information—especially business emails—by scraping publicly available information from business websites. If you’re looking for a **Google Maps email scraper**, **extract business emails from Google Maps**, or a **Google Maps lead scraper email** workflow for B2B outreach, this tool is built for you. Whether you’re a marketer, data analyst, lead researcher, or operations team, it streamlines the time-consuming work of turning local listings into a structured list of contacts—saving you hours of manual work.

***

### Why choose Google Maps Email Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **Find businesses by niche and location** | Pinpoints the type of businesses you need in a specific city/region |
| ✅ **Extract contact details from business websites** | Collects emails (and also phones + social media) linked to the business website |
| ✅ **Reliability-minded execution** | Includes resilience features like fallbacks and retries to improve result stability |
| ✅ **Structured dataset output** | Saves consistent fields (address, ratings, emails found, phones, social links) for easy importing |
| ✅ **Scale-friendly workflow** | Uses configurable limits (like maximum businesses and pages per site) to control workload |
| ✅ **Proxy support** | Includes proxy configuration for reliable large-scale scraping |

***

### Key features

- 🔍 **Keyword + location targeting**: Use your niche (like “dentists” or “coffee shops”) plus a geographic location to build a business list
- 📧 **Email extraction from websites**: Scrapes emails from the business websites it finds and returns them in a structured format
- ☎️ **Phone number extraction**: Collects phone numbers alongside emails so your leads are multi-channel
- 🔗 **Social media profile extraction**: Extracts social links (when available) for richer lead records
- 🛡️ **Proxy-ready runs**: Supports proxy configuration to help avoid rate-limit and IP-block issues during scraping
- 🔄 **Resilient execution**: Implements retries and fallback logic to reduce the chance of missing data due to transient failures
- 💾 **Live dataset saving**: Pushes each business result immediately to the Apify dataset (no waiting until the end)
- 📊 **Control result quality**: Includes an option to save only businesses where emails were successfully extracted

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "googleMapsSearchTerm": "coffee shops",
  "googleMapsLocation": "Miami, Florida",
  "maxBusinesses": 20,
  "emailOnlyResults": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `googleMapsSearchTerm` | No | The business type or niche you want to search for (for example, `coffee shops`, `dentists`). |
| `googleMapsLocation` | Yes | The geographic target for the search (for example, `Miami, Florida`). |
| `maxBusinesses` | No | Maximum number of businesses to find. The scraper stops when this target is reached. (Range in UI: 1–1000.) |
| `emailOnlyResults` | No | If `true`, only include businesses where emails were successfully extracted from their websites. |
| `proxyConfiguration` | No | Proxy settings for scraping (recommended for larger runs). |
| `proxyConfiguration • proxy support` | No | When enabled, uses Apify Proxy by default (set to `true` to start with it). |

> Note: `googleMapsLocation` and `googleMapsSearchTerm` are required for the intended run flow (the actor validates missing required inputs and exits).

***

### Output

The actor saves each business’s data into an Apify dataset in JSON-compatible records, including contact fields, counts, and scraping status.

Example output record:

```json
{
  "name": "Example Business",
  "website": "https://example.com",
  "phone": "+1 555-123-4567",
  "full_address": "123 Main St Miami FL 33101 US",
  "city": "Miami",
  "state": "FL",
  "zip": "33101",
  "country_code": "US",
  "scraped_emails": [
    {
      "email": "contact@example.com",
      "confidence_score": 87.5,
      "validation_status": "unknown",
      "source_url": "https://example.com/contact",
      "source_type": "contact_page"
    }
  ],
  "scraped_phones": [
    "tel:+15551234567"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/example"
  ],
  "emails_found": 1,
  "pages_scraped": 4,
  "avg_rating": 4.3,
  "total_reviews": 120,
  "lat": 25.7617,
  "long": -80.1918,
  "place_id": "PLACE123",
  "scrape_status": "success"
}
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `name` | string | Business name from the listing. |
| `website` | string | Business website URL (if available). |
| `phone` | string | Phone number associated with the listing. |
| `full_address` | string | Full address assembled from street, city, state, zip, and country code. |
| `city` | string | City name. |
| `state` | string | State/region. |
| `zip` | string | Postal/ZIP code. |
| `country_code` | string | Country code. |
| `scraped_emails` | array | Extracted email objects found on/around the business website. |
| `scraped_phones` | array | Phone numbers extracted from the business website. |
| `scraped_social_media` | array | Social media links extracted from the business website. |
| `emails_found` | number | Count of scraped email results. |
| `pages_scraped` | number | Number of processed URLs/pages during website scraping. |
| `avg_rating` | number | Average rating value from the listing. |
| `total_reviews` | number | Total number of reviews from the listing. |
| `lat` | number | Latitude for the business location (derived from listing geometry). |
| `long` | number | Longitude for the business location (derived from listing geometry). |
| `place_id` | string | Unique place identifier from the listing. |
| `scrape_status` | string | Result status (for example `success`, `failed`, `no_website`, or `error`). |

> Export tip: the dataset can be exported in common formats (like JSON/CSV) from the Apify Console after the run completes.

***

### How to use Google Maps Email Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** section.

2. **Find this actor**\
   Search for **Google Maps Email Scraper** and open the actor details.

3. **Go to the INPUT tab**\
   Use the built-in input form to set your:
   - `googleMapsSearchTerm` (e.g., `coffee shops`)
   - `googleMapsLocation` (e.g., `Miami, Florida`)
   - `maxBusinesses` (optional)
   - `emailOnlyResults` (optional)
   - `proxyConfiguration` (optional, recommended for scale)

4. **Configure proxy support (optional but recommended)**\
   If you expect a larger run, enable proxy configuration so the actor can run more reliably.

5. **Click Run**\
   Start the actor execution. You’ll see live progress in the logs as it scrapes and then enriches each business via website scraping.

6. **Monitor logs for progress**\
   The actor logs steps and progress, including the business scraping stage and the website email extraction stage.

7. **Open the OUTPUT dataset**\
   After the run finishes, open the dataset named **Business Contact Data** and review the rows.

8. **Export results**\
   Export to JSON/CSV as needed for your CRM, spreadsheets, or analysis pipeline.

No coding required—get accurate results from this **Google Maps lead scraper email** workflow in minutes.

***

### Advanced features & SEO optimization

- 🚀 **Engineered for “Google Maps email scraping tool” workflows**: Designed for extracting contact emails from local business listings, then enriching them from each business website (so your outreach list is more useful).
- 🛡️ **Resilience features**: Includes retries and fallback behavior to improve reliability when scraping at scale.
- 🧩 **Email-only mode**: Turn on `emailOnlyResults` to keep your dataset focused on businesses where emails were actually extracted.
- 🧾 **Structured results for easy downstream use**: The dataset includes fields like ratings, review counts, coordinates, place ID, and extracted contacts—ideal for B2B email outreach and analysis.
- 🌐 **Built-in proxy support**: `proxyConfiguration` can be enabled to improve stability during larger scraping runs.

***

### Best use cases

- 📈 **Lead generation teams building local B2B lists**: Turn a niche + city into contact records with emails (and often phones and social links) for faster outreach.
- 🧪 **Market researchers validating competitive presence**: Compile structured location-based business directories and compare density by ratings and review counts.
- ✉️ **Email marketing ops enriching CRM segments**: Import **Google Maps contact details scraper** output into your marketing workflows with consistent fields.
- 🗂️ **Data analysts measuring local business signals**: Combine `avg_rating`, `total_reviews`, and geolocation (`lat`, `long`) with email availability for modeling.
- 🧰 **Agency workflows for multi-client lead sourcing**: Reuse the same **Google Maps directory email scraping** setup across multiple city/niche campaigns.
- 💼 **Sales development teams improving deliverability**: Use a **business contact email extractor** approach to build targeted prospect lists from business websites.
- 💻 **Developer pipelines for enrichment automation**: Feed dataset outputs into scripts/CRMs as a reliable starting point for enrichment and segmentation.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `googleMapsLocation` (string)
  - ✅ `googleMapsSearchTerm` (string)
  - ✅ Optional controls: `maxBusinesses`, `emailOnlyResults`, and `proxyConfiguration`

- **Proxy Support**
  - ✅ Configurable via `proxyConfiguration` (includes `proxy support`)

- **Retry Mechanism**
  - ✅ Retries are implemented for map-data fetching to improve robustness

- **Dataset Structure**
  - ✅ **Business Contact Data** dataset with fields including:
    - `name`, `website`, `phone`, `full_address`, `city`, `state`, `zip`, `country_code`
    - `scraped_emails`, `scraped_phones`, `scraped_social_media`
    - `emails_found`, `pages_scraped`, `avg_rating`, `total_reviews`, `lat`, `long`, `place_id`, `scrape_status`

- **Rate Limits & Performance**
  - ✅ Controlled by `maxBusinesses` and “pages per site” (driven by actor defaults and input flow)
  - ✅ Designed to save results progressively during execution

- **Limitations**
  - ❌ Businesses without a website may end up with `scrape_status` like `no_website` and empty `scraped_emails`
  - ❌ Some businesses may not have emails discoverable on their public website pages

***

### FAQ

#### What does Google Maps Email Scraper extract?

✅ It extracts business contact information for listings found in your specified `googleMapsLocation` and `googleMapsSearchTerm`, including emails (from business websites), plus phone numbers and social media profiles when available.

#### How do I get only businesses that have emails?

✅ Enable `emailOnlyResults`. In that mode, the actor saves only businesses where emails were successfully extracted from their websites.

#### Where do the results go?

✅ The actor saves each business record to the Apify dataset titled **Business Contact Data**, with fields such as `scraped_emails`, `emails_found`, `pages_scraped`, `scrape_status`, and more.

#### Can I control how many businesses are scraped?

✅ Yes. Set `maxBusinesses` (1–1000) to control the stopping target for discovered businesses.

#### Do I need to use proxies?

❌ Not always. For small runs you may be fine without proxies, but proxy configuration via `proxyConfiguration` is recommended for larger-scale scraping to improve reliability.

#### How is email quality handled?

✅ The actor can be configured to validate emails via internal scraping configuration, and extracted email objects include metadata fields such as `confidence_score` and `validation_status` as part of each item in `scraped_emails`.

#### Can I use this for B2B outreach and CRM enrichment?

✅ Yes. This **Google Maps Email Scraper** is commonly used as a **B2B leads email scraper from Google Maps** workflow to produce a structured lead list that you can import into your CRM or spreadsheets.

#### Is it safe/legal to use scraped contact data?

✅ The tool is intended to collect data from **publicly accessible sources**. You are responsible for complying with applicable laws and platform terms, including GDPR/CCPA and anti-spam regulations.

***

### Support & feature requests

Have ideas to improve **Google Maps Email Scraper** or run into issues with your dataset results? We’d love to hear from you.

- 💡 **Feature Requests**: Want improvements like better export options, additional output fields, or enhanced filtering for outreach workflows? Tell us what you need and your use case.
- 📧 **Contact**: Reach out at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for this **Google Maps email scraper** and keeps it useful for modern lead generation and research teams.

***

**Built for fast, structured local lead extraction—this is the most comprehensive Google Maps Email Scraper workflow for turning listings into actionable contact data.**

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for the google maps email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `string`):

Target geographic location for the google maps email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `emailOnlyResults` (type: `boolean`):

Only include businesses where emails were successfully extracted from their websites

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

Proxy settings for scraping. Recommended for large-scale scraping.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "coffee shops",
  "googleMapsLocation": "Miami, Florida",
  "maxBusinesses": 20,
  "emailOnlyResults": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "googleMapsSearchTerm": "coffee shops",
    "googleMapsLocation": "Miami, Florida",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-mind/google-maps-email-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 = {
    "googleMapsSearchTerm": "coffee shops",
    "googleMapsLocation": "Miami, Florida",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-mind/google-maps-email-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 '{
  "googleMapsSearchTerm": "coffee shops",
  "googleMapsLocation": "Miami, Florida",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scraper-mind/google-maps-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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