# Google Maps Email Extractor (`crawlerbros/google-maps-email-extractor`) Actor

Extract business emails, phone numbers, and social media links from Google Maps. Search for businesses by query, get contact details, addresses, ratings, and websites enriched with email addresses.

- **URL**: https://apify.com/crawlerbros/google-maps-email-extractor.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Real estate, Other, Developer tools
- **Stats:** 48 total users, 9 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

Extract business emails, phone numbers, social media links, and contact details from Google Maps. Search for any type of business in any location and get enriched lead data including email addresses scraped from business websites.

### What does Google Maps Email Extractor do?

This actor searches Google Maps for businesses matching your queries, extracts detailed business information (name, address, phone, rating, website), and then visits each business website to find email addresses and social media profiles. Perfect for lead generation, sales prospecting, and market research.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQueries` | string[] | Yes | `["restaurants in New York"]` | Search terms for Google Maps. Each query is searched separately. |
| `maxPlacesPerSearch` | integer | No | 20 | Maximum businesses to extract per search query (1-100). |
| `language` | string | No | `"en"` | Language code for Google Maps results (e.g., `en`, `es`, `fr`). |
| `deepEnrichment` | boolean | No | `true` | Visit business websites to extract emails and social links. Disable for faster Google Maps-only data. |

### Example Input

```json
{
    "searchQueries": [
        "restaurants in New York",
        "dentists in Los Angeles"
    ],
    "maxPlacesPerSearch": 20,
    "language": "en",
    "deepEnrichment": true
}
````

### Output Fields

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | Business name |
| `categoryName` | string | Primary business category |
| `address` | string | Full address |
| `phone` | string | Phone number |
| `website` | string | Business website URL |
| `totalScore` | number | Google Maps rating (1-5) |
| `reviewsCount` | integer | Number of Google reviews |
| `placeId` | string | Google Place ID |
| `url` | string | Google Maps URL |
| `location` | object | `{lat, lng}` coordinates |
| `priceLevel` | string | Price range (e.g., `$$`) |
| `plusCode` | string | Google Plus Code |
| `emails` | string\[] | Email addresses found on website |
| `socialLinks` | object | Social media profile URLs |
| `scrapedAt` | string | ISO 8601 timestamp |

#### Social Links Object

| Field | Description |
|-------|-------------|
| `socialLinks.facebook` | Facebook page URL |
| `socialLinks.instagram` | Instagram profile URL |
| `socialLinks.linkedin` | LinkedIn company/profile URL |
| `socialLinks.twitter` | Twitter/X profile URL |
| `socialLinks.youtube` | YouTube channel URL |
| `socialLinks.tiktok` | TikTok profile URL |

### Example Output

```json
{
    "title": "Joe's Pizza",
    "categoryName": "Pizza restaurant",
    "address": "7 Carmine St, New York, NY 10014",
    "phone": "+1 212-366-1182",
    "website": "https://www.joespizzanyc.com",
    "totalScore": 4.4,
    "reviewsCount": 12500,
    "placeId": "ChIJd3dF_VBZwokRAAFm3WMspbk",
    "url": "https://www.google.com/maps/place/Joe's+Pizza/...",
    "location": {
        "lat": 40.7306,
        "lng": -74.0022
    },
    "priceLevel": "$$",
    "plusCode": "P295+HJ New York",
    "emails": ["info@joespizzanyc.com"],
    "socialLinks": {
        "facebook": "https://facebook.com/joespizzanyc",
        "instagram": "https://instagram.com/joespizzanyc",
        "linkedin": null,
        "twitter": "https://twitter.com/joespizzanyc",
        "youtube": null,
        "tiktok": null
    },
    "scrapedAt": "2026-03-16T12:00:00+00:00"
}
```

### How It Works

1. **Search** — Searches Google Maps for businesses matching your queries
2. **Extract** — Visits each business listing to get name, address, phone, rating, website, and more
3. **Enrich** — Scans each business website for email addresses and social media links
4. **Output** — Saves all data to the dataset in a flat, easy-to-use format

### Use Cases

- **Lead generation** — Build targeted contact lists for sales outreach
- **Sales prospecting** — Find business emails and phone numbers by industry and location
- **Market research** — Analyze businesses, ratings, and categories in specific areas
- **Competitor analysis** — Map competitors and their online presence
- **Local SEO** — Audit business listings and contact information

### Tips

- **Search query format**: Use natural language like "restaurants in New York" or "plumbers near Chicago, IL"
- **Specific queries work better**: "Italian restaurants in Manhattan" yields more relevant results than just "restaurants"
- **Deep enrichment**: Disable `deepEnrichment` if you only need Google Maps data (name, phone, address, rating) — this makes the scraper significantly faster
- **Deduplication**: When using multiple queries that may overlap, results are automatically deduplicated by Google Place ID

### Limitations

- Google Maps shows a maximum of ~120 businesses per search area
- Some businesses don't have websites, so email extraction won't work for those
- Email addresses are extracted from publicly visible website content only
- Social media links are found by scanning website HTML for known social media URLs
- Results depend on Google Maps' search relevance for your query

### FAQ

**How many businesses can I scrape per run?**
You can scrape up to 100 businesses per search query. Use multiple queries to cover more businesses.

**Does this actor need cookies or login?**
No. Google Maps search results are publicly accessible without authentication.

**Why are some email fields empty?**
Not all businesses have websites, and not all websites display email addresses publicly. The scraper checks the main page and common contact pages (e.g., /contact, /about).

**Can I search in languages other than English?**
Yes, set the `language` parameter to your preferred language code (e.g., `es` for Spanish, `fr` for French).

**How long does a typical run take?**
A search for 20 businesses with email enrichment typically takes 2-5 minutes. Without enrichment, it's about 1-2 minutes.

# Actor input Schema

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

Search terms for Google Maps (e.g., 'restaurants in New York', 'dentists near Los Angeles'). Each query is searched separately.

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

Maximum number of businesses to extract per search query.

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

Language code for Google Maps results (e.g., 'en', 'es', 'fr', 'de').

## `deepEnrichment` (type: `boolean`):

Visit each business website to extract email addresses and social media links. Disable to get only Google Maps data (faster).

## Actor input object example

```json
{
  "searchQueries": [
    "restaurants in New York"
  ],
  "maxPlacesPerSearch": 20,
  "language": "en",
  "deepEnrichment": true
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with business leads including names, addresses, phones, emails, social links, ratings, and Google Maps metadata.

# 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": [
        "restaurants in New York"
    ],
    "maxPlacesPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/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 = {
    "searchQueries": ["restaurants in New York"],
    "maxPlacesPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/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 '{
  "searchQueries": [
    "restaurants in New York"
  ],
  "maxPlacesPerSearch": 20
}' |
apify call crawlerbros/google-maps-email-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Email Extractor",
        "description": "Extract business emails, phone numbers, and social media links from Google Maps. Search for businesses by query, get contact details, addresses, ratings, and websites enriched with email addresses.",
        "version": "1.0",
        "x-build-id": "wKzOqCjf2Y5GYGiws"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~google-maps-email-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-google-maps-email-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~google-maps-email-extractor/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-google-maps-email-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~google-maps-email-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-google-maps-email-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "minItems": 1,
                        "type": "array",
                        "description": "Search terms for Google Maps (e.g., 'restaurants in New York', 'dentists near Los Angeles'). Each query is searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPlacesPerSearch": {
                        "title": "Max Places Per Search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of businesses to extract per search query.",
                        "default": 20
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code for Google Maps results (e.g., 'en', 'es', 'fr', 'de').",
                        "default": "en"
                    },
                    "deepEnrichment": {
                        "title": "Extract Emails & Social Links",
                        "type": "boolean",
                        "description": "Visit each business website to extract email addresses and social media links. Disable to get only Google Maps data (faster).",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
