# Google Maps B2B Lead Extractor PRO (`zackmiel/google-maps-b2b-leads-agency-audit-scraper`) Actor

Extract Google Maps businesses and enrich them with website emails, social profiles, and automated lead scoring. Built specifically to power high-volume digital marketing and email outreach pipelines.

- **URL**: https://apify.com/zackmiel/google-maps-b2b-leads-agency-audit-scraper.md
- **Developed by:** [Zack Miel](https://apify.com/zackmiel) (community)
- **Categories:**
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Ultimate Google Maps B2B Lead Extractor & Scorer

Stop paying for dead leads, empty rows, and corporate franchises. This Actor is a hybrid Playwright/Cheerio pipeline built specifically for B2B sales teams, marketing agencies, and local SEO professionals. It extracts localized Google Maps data, bypasses GDPR cookie walls, visits every target business website to hunt down contact info, and automatically grades each lead so your sales team knows exactly who to call first.

### Core Premium Features

- **Algorithmic Lead Scoring (0-100):** Stop manually sorting spreadsheets. The scraper automatically calculates a `leadScore` for every business based on its digital footprint (e.g., +30 points for missing a website, +15 for a valid email, -40 for a dead lead). Sort by highest score and start pitching immediately.
- **Anti-Franchise Filter:** Flip the `excludeChains` toggle to automatically skip global corporate chains (like Starbucks, Subway, or Marriott). Ensure your sales team is only spending time pitching independent, local business owners without corporate gatekeepers.
- **Hybrid Speed Architecture:** Uses Playwright's headless browser strictly to navigate Google Maps and bypass complex GDPR walls, while offloading the heavy website email extraction to a lightning-fast HTTP crawler.
- **Bulletproof Error Handling:** Local business websites are notorious for broken SSL certificates, dead links, and basic Cloudflare blocks. This Actor catches 403s and 502s gracefully—if a website firewall blocks the email extraction, the scraper securely saves the core Maps data (hours, photos, rating, phone number) instead of crashing.

### Input Configuration

| Parameter | Type | Description |
| :--- | :--- | :--- |
| **Search Terms** | `Array` | The keywords to search (e.g., `["dentists in Miami"]`). *Pro-tip: To bypass Google's 200-result hard limit, use granular zip-code arrays (e.g., `["plumbers in 33101", "plumbers in 33102"]`).* |
| **Target Country** | `String` | Forces Google to localize the search map to a specific country code to bypass regional blocks. |
| **Exclude Chains** | `Boolean` | Filters out major corporate franchises from the final dataset. |
| **Maximum Places** | `Integer` | The maximum number of results to scrape per search query. |

### Enriched Output Data

The scraper delivers a clean, sanitized JSON/CSV payload ready for instant CRM import.

| Data Point | Description |
| :--- | :--- |
| `leadScore` | Integer (0-100) ranking the lead's viability and digital needs. |
| `email` | Sanitized array of extracted emails (ignores `.js` files and CDN false positives). |
| `operatingHours` | The current daily schedule or "Temporarily Closed" status. |
| `photoUrl` | High-resolution Google CDN image link for the primary storefront photo. |
| `socials` | Extracted Facebook, Instagram, LinkedIn, TikTok, and X/Twitter handles. |
| `isClaimed` | Boolean indicating if the owner has claimed the Google Business Profile. |

### Compute & Resource Requirements

- **Memory Allocation:** Set your Actor memory to at least **4 GB RAM**. Playwright requires sufficient memory to manage headless browser tabs, especially when rotating through complex proxy sessions.
- **Proxy Usage:** Apify Automatic Residential Proxies are highly recommended to prevent Google Maps from returning empty results or blocking the container.

# Actor input Schema

## `searchTerms` (type: `array`):

Google Maps searches, for example dentists in Miami or restaurants Paris.

## `countryCode` (type: `string`):

Country used by Google Maps to localize search results.

## `maxPlacesPerQuery` (type: `integer`):

Maximum number of unique businesses collected for each search term.

## `extractContacts` (type: `boolean`):

Visit business websites to find emails and social profiles.

## `onlyWithEmail` (type: `boolean`):

Discard businesses for which no valid email was found.

## `excludeChains` (type: `boolean`):

Automatically skips global corporate chains like Starbucks, McDonald's, Subway, etc.

## `minRating` (type: `number`):

Discard businesses below this Google Maps rating.

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

Apify Proxy or custom proxy settings used for Maps and website requests.

## Actor input object example

```json
{
  "countryCode": "US",
  "maxPlacesPerQuery": 50,
  "extractContacts": true,
  "onlyWithEmail": false,
  "excludeChains": false,
  "minRating": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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("zackmiel/google-maps-b2b-leads-agency-audit-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("zackmiel/google-maps-b2b-leads-agency-audit-scraper").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 zackmiel/google-maps-b2b-leads-agency-audit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zackmiel/google-maps-b2b-leads-agency-audit-scraper"
        }
    }
}

```

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/vaTO6zN4VDZa587N4/builds/LMPFGSlCiz8gqCGG0/openapi.json
