# Google Maps Business Scraper (`travelmonitorlab/google-maps-scraper`) Actor

Scrape Google Maps business listings at scale. Extract business names, addresses, phone numbers, ratings, reviews, websites, opening hours, categories, and GPS coordinates. Perfect for lead generation, market research, and local SEO analysis.

- **URL**: https://apify.com/travelmonitorlab/google-maps-scraper.md
- **Developed by:** [Travel Monitor Lab](https://apify.com/travelmonitorlab) (community)
- **Categories:** Lead generation, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

Extract business data from Google Maps at scale. Get names, addresses, phone numbers, ratings, reviews, websites, and GPS coordinates for any location and search query.

### What does Google Maps Business Scraper do?

This scraper lets you extract structured business data from Google Maps, helping you:

- **Generate qualified leads**: Extract business names, phone numbers, and websites to build prospect lists
- **Analyze competitors**: Monitor ratings, review counts, and categories in your market
- **Build location databases**: Get GPS coordinates and full addresses for mapping applications
- **Research markets**: Identify business density, popular categories, and service gaps

### What data can you extract?

| Field | Description | Example |
|-------|-------------|---------|
| 🏢 Business name | Official name | "Le Petit Bistrot" |
| 📍 Address | Full street address | "12 Rue de Rivoli, Paris" |
| 📞 Phone | Phone number | "+33 1 42 36 12 34" |
| ⭐ Rating | Google rating (1-5) | 4.5 |
| 💬 Reviews | Number of reviews | 234 |
| 🏷️ Category | Business type | "French restaurant" |
| 🌐 Website | Business URL | "https://lepetitbistrot.fr" |
| 📐 GPS | Latitude & Longitude | 48.8566, 2.3522 |

### How to use

1. Enter your **search query** (e.g., "restaurants Paris", "hotels London")
2. Set the **maximum results** you want (default: 10)
3. Click **Start** and wait for results
4. Download your data as **JSON, CSV, or Excel**

#### Input example

```json
{
  "queries": ["restaurants Lyon", "hotels Marseille"],
  "maxResults": 20
}
````

#### Output example

```json
{
  "name": "Brasserie Georges",
  "category": "French restaurant",
  "address": "30 Cours de Verdun Perrache, 69002 Lyon",
  "phone": "+33 4 72 56 54 54",
  "website": "https://brasseriegeorges.com",
  "rating": 4.2,
  "reviewCount": 8547,
  "latitude": 45.7485,
  "longitude": 4.8267,
  "url": "https://maps.google.com/..."
}
```

### Use cases

#### Lead Generation

Extract contact details of businesses in your target market. Filter by location, category, and rating to find the best prospects.

#### Market Research

Analyze the competitive landscape in any area. Count businesses by category, compare ratings, and identify underserved markets.

#### Local SEO

Monitor your competitors' Google Maps presence. Track their ratings, review counts, and categories over time.

#### Data Enrichment

Add location data and contact details to your existing business database.

### Integrations

Connect Google Maps Scraper with your favorite tools:

- **Zapier** — Automate workflows with scraped data
- **Google Sheets** — Export directly to spreadsheets
- **Slack** — Get notifications when scraping completes
- **Webhooks** — Send data to your own API

### API access

Use the Apify API to run this scraper programmatically:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("travelmonitorlab/google-maps-scraper").call(
    run_input={"queries": ["restaurants Paris"], "maxResults": 10}
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["phone"])
```

### FAQ

**How many results can I get?**
Up to 100 results per search query. Use multiple queries to get more data.

**Is this legal?**
This scraper extracts publicly available data from Google Maps. Always comply with applicable laws and Google's Terms of Service.

**How often is the data updated?**
Data is scraped in real-time every time you run the actor. You always get the latest information.

**What locations are supported?**
Any location worldwide that appears on Google Maps.

# Actor input Schema

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

What to search on Google Maps (e.g., 'restaurants Paris', 'plumbers London', 'hotels New York')

## `queries` (type: `array`):

Array of search queries to scrape. Use this for multiple searches in one run.

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

Maximum number of businesses to extract per query

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

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

## `includeReviews` (type: `boolean`):

Whether to extract user reviews for each business

## `maxReviews` (type: `integer`):

Maximum number of reviews to extract per business

## Actor input object example

```json
{
  "searchQuery": "restaurants Paris",
  "queries": [
    "restaurants Paris",
    "hotels Lyon"
  ],
  "maxResults": 20,
  "language": "fr",
  "includeReviews": true,
  "maxReviews": 5
}
```

# 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": "restaurants Paris",
    "queries": [
        "restaurants Paris",
        "hotels Lyon"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("travelmonitorlab/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 = {
    "searchQuery": "restaurants Paris",
    "queries": [
        "restaurants Paris",
        "hotels Lyon",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("travelmonitorlab/google-maps-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 '{
  "searchQuery": "restaurants Paris",
  "queries": [
    "restaurants Paris",
    "hotels Lyon"
  ]
}' |
apify call travelmonitorlab/google-maps-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Business Scraper",
        "description": "Scrape Google Maps business listings at scale. Extract business names, addresses, phone numbers, ratings, reviews, websites, opening hours, categories, and GPS coordinates. Perfect for lead generation, market research, and local SEO analysis.",
        "version": "1.0",
        "x-build-id": "feJXGVE46hU0knXRy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/travelmonitorlab~google-maps-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-travelmonitorlab-google-maps-scraper",
                "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/travelmonitorlab~google-maps-scraper/runs": {
            "post": {
                "operationId": "runs-sync-travelmonitorlab-google-maps-scraper",
                "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/travelmonitorlab~google-maps-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-travelmonitorlab-google-maps-scraper",
                "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",
                "properties": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "What to search on Google Maps (e.g., 'restaurants Paris', 'plumbers London', 'hotels New York')"
                    },
                    "queries": {
                        "title": "Multiple Search Queries",
                        "type": "array",
                        "description": "Array of search queries to scrape. Use this for multiple searches in one run."
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of businesses to extract per query",
                        "default": 20
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code for Google Maps results (e.g., 'fr', 'en', 'de', 'es')",
                        "default": "fr"
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Whether to extract user reviews for each business",
                        "default": true
                    },
                    "maxReviews": {
                        "title": "Max Reviews per Business",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of reviews to extract per business",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
