# Google Maps Scraper: Fast Lead Generator & Emails (`as33/google-maps-scraper`) Actor

Google Maps Scraper: Fast Lead Generator & Emails
Extract verified business leads, emails, phone numbers and websites from Google Maps instantly. Fast, lightweight, and structured data export in CSV, Excel, or JSON. Built for high-scale B2B outreach and local market research. Try Google Maps scraper

- **URL**: https://apify.com/as33/google-maps-scraper.md
- **Developed by:** [Abu Sufian](https://apify.com/as33) (community)
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 33.3% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.70 / 1,000 google maps place 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Maps Scraper — Fast Lead Generator, Emails & Business Data Extractor

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com)
[![Pricing](https://img.shields.io/badge/Base%20Pricing-$0.70%20/%201K%20places-brightgreen)](https://apify.com)
[![Email Add-on](https://img.shields.io/badge/Email%20Enrichment-$1.50%20/%201K%20leads-blue)](https://apify.com)
[![Free Tier](https://img.shields.io/badge/Free%20Plan-100%20places%20included-green)](https://apify.com)
[![Rating](https://img.shields.io/badge/Rating-5.0%20%E2%98%85-yellow)](https://apify.com)

> The highest-performing **Google Maps scraper** and **B2B lead generator** on the Apify Store. Effortlessly extract structured local business listings, verified company emails, phone numbers, ratings, operating hours, coordinates, and reviews at a fraction of the cost of competitors.

***

### ⚡ Pricing & Free Tier Plan

| Scraper Action / Plan | Cost Rate | What's Included |
| :--- | :--- | :--- |
| **Free Tier Plan** | **$0.00 (FREE)** 🎁 | Scrape up to **100 places per search** with full emails and phones. No credit card required. |
| **Google Maps Base Data** | **$0.70 / 1,000 places** 🔥 | Title, category, address, city, zip, phone, website, coordinates, ratings, reviews count, hours. |
| **Email & Social Enrichment** | **$1.50 / 1,000 places** 📧 | Crawls company website to find verified emails, direct telephones, LinkedIn, Instagram, and Facebook profiles. |

***

### 🎯 Key Features & Capabilities

- 🔍 **Multi-Keyword & Multi-Location**: Pass multiple keywords (e.g. `plumber`, `dentist`) and multiple cities in one run.
- 📧 **Built-in Google Maps Email Finder**: Automatically scans company websites for verified decision-maker emails.
- 📱 **Social Media Profiles**: Captures LinkedIn company URLs, Instagram, Facebook, X/Twitter, and YouTube channels.
- 🛡️ **Anti-Blocking Residential Proxies**: Automatically rotates residential IPs with Playwright stealth headers.
- 🚀 **100 Place Free Cap**: Test and build proof-of-concepts with our generous 100 places free tier before upgrading.
- 📍 **Clean Standardized Dataset**: Ready for 1-click import into HubSpot, Salesforce, Apollo, Instantly, or Excel/CSV.

***

### 🛠️ Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `searchStringsArray` | `Array<String>` | `["coffee shop"]` | Search keywords (e.g. `["personal injury lawyer", "dentist"]`). |
| `locationQueries` | `Array<String>` | `["New York, NY"]` | Target cities or regions (e.g. `["Austin, Texas, United States"]`). |
| `maxCrawledPlacesPerSearch` | `Integer` | `100` | Max places to scrape per search. *(Capped at 100 on free tier; up to 5,000 on paid tier)*. |
| `extractContactsFromWebsite` | `Boolean` | `true` | Scrapes company websites for verified emails & social profiles ($1.50/1k). |
| `extractPlaceDetails` | `Boolean` | `true` | Extracts full opening hours, price range, plusCode, and detailed categories. |
| `isPaidUser` | `Boolean` | `false` | Set to `true` on paid plans to bypass the 100 places free tier limit. |

***

### 💻 Programmatic API Usage

#### Python (apify-client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
    "searchStringsArray": ["dentist"],
    "locationQueries": ["Chicago, IL, USA"],
    "maxCrawledPlacesPerSearch": 100,
    "extractContactsFromWebsite": True,
}
run = client.actor("your_username/google-maps-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item.get('title')} | Phone: {item.get('phone')} | Email: {item.get('emails')}")
```

# Actor input Schema

## `searchStringsArray` (type: `array`):

One or more search terms (e.g. 'dentist', 'plumber', 'italian restaurant', 'real estate agent'). Each keyword is searched across every provided location.

## `locationQueries` (type: `array`):

Target cities, zip codes, or regions (e.g. 'Austin, Texas, United States', 'Miami, Florida').

## `maxCrawledPlacesPerSearch` (type: `integer`):

Maximum number of places to collect per search. ⚠️ NOTE: Free tier is capped at 100 places per search. Paid accounts can scrape up to 5,000+ places.

## `extractContactsFromWebsite` (type: `boolean`):

Turn ON: Visits company websites to extract verified business emails, LinkedIn, Instagram, Facebook, and Twitter. Billed at +$1.50 per 1,000 places with emails.
Turn OFF: ULTRA-FAST MODE! Only scrapes Google Maps directly (Title, Phone, Category, Address, Website URL, Rating, Reviews, Hours, Coordinates) in seconds at base price ($0.70 / 1,000 places) with ZERO email charges.

## `extractPlaceDetails` (type: `boolean`):

Extracts 7-day operating hours, live status, price level, amenities, and categories. Base rate: $0.70 / 1,000 places.

## `maxReviewsPerPlace` (type: `integer`):

Number of customer reviews to capture per business (0 to disable).

## `reviewsSort` (type: `string`):

Order in which customer reviews will be sorted and extracted.

## `skipClosedPlaces` (type: `boolean`):

Automatically filters out businesses that Google marks as permanently or temporarily closed.

## `skipPlacesNotMatchingSearch` (type: `boolean`):

Drops irrelevant places that Google returns when an area runs out of direct category matches.

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

Two-letter country code for local Google Maps results (e.g., 'us', 'gb', 'ca', 'au', 'de').

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

Two-letter language code for place descriptions, labels, and categories (e.g., 'en', 'es', 'de', 'fr').

## `isPaidUser` (type: `boolean`):

Set to true if you are on a paid Apify plan. Free tier runs without this flag are automatically capped at 100 places.

## `customGeolocation` (type: `object`):

Define a custom polygon or circle area using GeoJSON (Point with radiusKm, Polygon, or MultiPolygon). Overrides named locations.

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

Select Apify residential proxies to avoid rate limits and anti-bot bans during high-volume scraping.

## Actor input object example

```json
{
  "searchStringsArray": [
    "dentist",
    "plumber"
  ],
  "locationQueries": [
    "Austin, Texas, United States",
    "Dallas, Texas, United States"
  ],
  "maxCrawledPlacesPerSearch": 100,
  "extractContactsFromWebsite": false,
  "extractPlaceDetails": true,
  "maxReviewsPerPlace": 5,
  "reviewsSort": "newest",
  "skipClosedPlaces": true,
  "skipPlacesNotMatchingSearch": true,
  "countryCode": "us",
  "language": "en",
  "isPaidUser": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Direct API link to the dataset containing all scraped Google Maps leads and business records (JSON format).

## `overview` (type: `string`):

View run metrics and browse results in Apify Console.

# 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 = {
    "searchStringsArray": [
        "dentist",
        "plumber"
    ],
    "locationQueries": [
        "Austin, Texas, United States",
        "Dallas, Texas, United States"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("as33/google-maps-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 = {
    "searchStringsArray": [
        "dentist",
        "plumber",
    ],
    "locationQueries": [
        "Austin, Texas, United States",
        "Dallas, Texas, United States",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("as33/google-maps-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 '{
  "searchStringsArray": [
    "dentist",
    "plumber"
  ],
  "locationQueries": [
    "Austin, Texas, United States",
    "Dallas, Texas, United States"
  ]
}' |
apify call as33/google-maps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,as33/google-maps-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/NVmMcoqeQoxQ8vHcM/builds/PXcK8gUaetkb8aecg/openapi.json
