# Google Maps Lead Extractor (`reflective_plagioclase/google-maps-lead-extractor`) Actor

Searches Google Maps for businesses by category and location, extracting business info including name, address, phone, website, rating, and reviews. Optionally finds email addresses from business websites.

- **URL**: https://apify.com/reflective\_plagioclase/google-maps-lead-extractor.md
- **Developed by:** [Matt](https://apify.com/reflective_plagioclase) (community)
- **Categories:** Lead generation, Business, SEO tools
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 business listings

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

## Google Maps Lead Extractor

**Find local businesses on Google Maps and extract their contact details.** Search by business category and location — "plumbers in Milan", "dentists in Berlin", "restaurants in Paris" — and get back business names, addresses, phone numbers, websites, ratings, reviews, and email addresses.

### How It Works

1. **Search** — Queries Google Search, Google Maps, and DuckDuckGo Lite to find Google Maps business pages matching your category and location
2. **Extract** — Scrapes each Google Maps business page for name, address, phone, website, rating, and review count via JSON-LD structured data and HTML parsing
3. **Enrich** — Optionally visits each business website to find email addresses from contact and about pages

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQuery` | string | ✅ | — | Business category (e.g., "plumbers", "dentists", "restaurants") |
| `location` | string | ✅ | — | City or area (e.g., "Milan, Italy", "New York, NY") |
| `maxResults` | integer | — | 50 | Max business listings to extract |
| `includeEmails` | boolean | — | true | Visit business websites and find emails |
| `includePhones` | boolean | — | true | Include phone numbers from listings |

### Output Example

```json
{
  "businessName": "Pizzeria Da Mario",
  "address": "Via Roma 123, 20121 Milan, Italy",
  "phone": "+39 02 1234 5678",
  "website": "https://pizzeriadamario.it",
  "rating": "4.5",
  "totalReviews": "342",
  "category": "Italian restaurant",
  "mapsUrl": "https://www.google.com/maps/place/...",
  "searchQuery": "restaurants",
  "location": "Milan, Italy",
  "emails": ["info@pizzeriadamario.it"]
}
```

### Use Cases

- **Local lead generation** — Build lists of businesses in any city for outbound sales
- **Market research** — Analyze business density, ratings, and categories across neighborhoods
- **Event marketing** — Find businesses near a venue for targeted promotion
- **Real estate** — Map commercial activity in a specific area
- **Field sales** — Prepare territory lists before hitting the road

### Pricing

Pay-per-event: **$0.00189 per business listing** ($1.89 per 1,000 listings). Email enrichment from business websites is included at no extra charge when `includeEmails` is enabled.

### Tips

- Be specific with the search query: "italian restaurants" beats "food"
- Large cities may need multiple runs with different area queries (e.g., "Milan center", "Milan north")
- Review counts and ratings are extracted from Google Maps metadata where available
- Website and email extraction requires the business to have a listed website on Google Maps
- The actor searches Google, Google Maps, and DuckDuckGo Lite for maximum coverage

# Actor input Schema

## `searchQuery` (type: `string`):

Business category to search for (e.g., 'plumbers', 'restaurants', 'dentists')

## `location` (type: `string`):

City or area to search in (e.g., 'Milan, Italy', 'New York, NY')

## `maxResults` (type: `integer`):

Maximum number of business listings to extract

## `includeEmails` (type: `boolean`):

Whether to visit business websites and extract email addresses

## `includePhones` (type: `boolean`):

Whether to include phone numbers from Google Maps listings

## Actor input object example

```json
{
  "searchQuery": "plumbers",
  "location": "Milan, Italy",
  "maxResults": 50,
  "includeEmails": true,
  "includePhones": 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 = {
    "searchQuery": "plumbers",
    "location": "Milan, Italy"
};

// Run the Actor and wait for it to finish
const run = await client.actor("reflective_plagioclase/google-maps-lead-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 = {
    "searchQuery": "plumbers",
    "location": "Milan, Italy",
}

# Run the Actor and wait for it to finish
run = client.actor("reflective_plagioclase/google-maps-lead-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 '{
  "searchQuery": "plumbers",
  "location": "Milan, Italy"
}' |
apify call reflective_plagioclase/google-maps-lead-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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