# Google Maps Scraper 2026 (`dev-sinior/google-maps-scraper-premium`) Actor

Extract unlimited business listings from Google Maps. Bypass the 120-result limit with smart grid search. Get name, address, phone, website, emails, rating, reviews, social media links and GPS coordinates. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/dev-sinior/google-maps-scraper-premium.md
- **Developed by:** [DEV-SINIOR](https://apify.com/dev-sinior) (community)
- **Categories:** E-commerce, Lead generation, Social media
- **Stats:** 49 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 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

## 📍 Google Maps Scraper 2026 — Premium Edition

Extract **unlimited business listings** from Google Maps. Bypass the 120-result limit with smart grid search. Perfect for lead generation, market research and competitive analysis.

***

### 🚀 What You Get

- **No limits** — bypass the 120-result cap with automatic grid subdivision
- **Full contact data** — name, address, phone, website, GPS coordinates
- **Email enrichment** — automatically visits business websites to find contact emails
- **Reviews** — extract recent customer reviews with ratings and dates
- **Social media** — LinkedIn, Instagram, Facebook, Twitter/X links
- **Export** — JSON, CSV, Excel, XML or HTML

***

### 📊 Data Fields

| Category | Fields |
|----------|--------|
| **Identity** | Name, Place ID, Category, Google Maps URL |
| **Location** | Full address, Street, City, Postal Code, Country, Latitude, Longitude |
| **Contact** | Phone, Website, Email (enriched) |
| **Reputation** | Rating (1–5), Review count, Price level ($ to $$$$) |
| **Operations** | Opening hours, Is open now, Description |
| **Social** | LinkedIn, Instagram, Facebook, Twitter/X |
| **Reviews** | Author, Star rating, Review text, Date |

***

### ⚙️ Input Configuration

#### Basic example

```json
{
  "searchTerms": ["restaurant", "coffee shop"],
  "location": "Paris, France",
  "maxResultsPerSearch": 200
}
```

#### Full example with all options

```json
{
  "searchTerms": ["dentist", "orthodontist"],
  "location": "London, UK",
  "maxResultsPerSearch": 500,
  "language": "en",
  "country": "gb",
  "includeReviews": true,
  "maxReviewsPerPlace": 10,
  "enrichEmails": true,
  "gridSubdivisions": 2,
  "proxyCountry": "GB"
}
```

#### Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | array | — | Keywords to search (e.g. `["plumber", "electrician"]`) |
| `location` | string | — | City, region or country (e.g. `"Paris, France"`) |
| `maxResultsPerSearch` | integer | 200 | Max results per keyword |
| `language` | string | `en` | Google Maps UI language |
| `country` | string | `us` | Google region code |
| `includeReviews` | boolean | false | Extract customer reviews |
| `maxReviewsPerPlace` | integer | 5 | Reviews per business |
| `enrichEmails` | boolean | false | Visit websites to find emails |
| `gridSubdivisions` | integer | 1 | Grid cells to bypass 120-limit (2 = 4 cells, 3 = 9 cells) |
| `proxyCountry` | string | `US` | Residential proxy country |

***

### 🗺️ Bypassing the 120-Result Limit

Google Maps shows a maximum of ~120 results per search area. To get more:

**Set `gridSubdivisions: 2`** → divides the area into 4 sub-zones → up to **480 results**\
**Set `gridSubdivisions: 3`** → divides the area into 9 sub-zones → up to **1,080 results**

Results are automatically deduplicated by Place ID.

***

### 📤 Output & Export

Once the run completes, export your data from the **Storage** tab:

- 📄 **JSON** — for developers and APIs
- 📊 **CSV / Excel** — import into CRM (Salesforce, HubSpot, Pipedrive)
- 🗺️ **Map view** — visualize businesses on an interactive map (via Apify integrations)

***

### 🔗 Integrations

Connect results automatically via the **Integrations** tab:

- **Google Sheets** — live spreadsheet updates
- **Zapier / Make** — trigger workflows
- **Webhooks** — push to your own backend

***

### 💡 Use Cases

- **Lead Generation** — build targeted prospect lists for sales teams
- **Market Research** — analyze competitor density and ratings by area
- **Directory Building** — create local business directories
- **Review Monitoring** — track ratings and reviews over time
- **Real Estate** — identify nearby amenities for property analysis

***

### ❓ FAQ

**Is this legal?**\
Yes. This tool extracts publicly available data from Google Maps. Always comply with GDPR when handling personal data.

**Why do some fields appear empty?**\
Not all businesses have all information on Google Maps. Email enrichment requires the business to have a website with a visible email address.

**How do I get more than 500 results?**\
Use `gridSubdivisions: 3` or `4`, or split your search across multiple narrower locations (e.g., search by arrondissement instead of full city).

***

*Built with ❤️ on [Apify](https://apify.com) — Web Scraping & Automation Platform*

# Actor input Schema

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

Business types or keywords to search. Example: \["restaurant", "dentist", "plumber"]

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

City, region or country to search in. Example: 'Paris, France' or 'New York, NY'

## `maxResultsPerSearch` (type: `integer`):

Maximum number of businesses to extract per keyword. Use grid search to go beyond 120.

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

Results language code (e.g. 'en', 'fr', 'es'). Affects Google Maps UI language.

## `country` (type: `string`):

Country code for Google Maps region (e.g. 'us', 'fr', 'de').

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

Extract the most recent reviews for each business.

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

Maximum number of reviews to collect per business (if Include Reviews is on).

## `enrichEmails` (type: `boolean`):

Visit each business website to find contact email addresses. Slower but finds more leads.

## `gridSubdivisions` (type: `integer`):

Divide search area into N×N grid cells to bypass the 120-result limit. Use 2 for 4 cells, 3 for 9 cells, etc.

## `proxyCountry` (type: `string`):

Country code for residential proxy. Match the target location for best results.

## Actor input object example

```json
{
  "searchTerms": [
    "restaurant"
  ],
  "location": "Paris, France",
  "maxResultsPerSearch": 200,
  "language": "en",
  "country": "us",
  "includeReviews": false,
  "maxReviewsPerPlace": 5,
  "enrichEmails": false,
  "gridSubdivisions": 1,
  "proxyCountry": "US"
}
```

# Actor output Schema

## `name` (type: `string`):

Name of the business

## `placeId` (type: `string`):

Google Maps unique place identifier

## `category` (type: `string`):

Primary business category

## `subcategories` (type: `string`):

Additional categories

## `address` (type: `string`):

Complete street address

## `street` (type: `string`):

Street name and number

## `city` (type: `string`):

City name

## `postalCode` (type: `string`):

ZIP / postal code

## `country` (type: `string`):

Country name

## `latitude` (type: `string`):

GPS latitude coordinate

## `longitude` (type: `string`):

GPS longitude coordinate

## `phone` (type: `string`):

Phone number

## `website` (type: `string`):

Business website URL

## `email` (type: `string`):

Contact email (enriched from website)

## `rating` (type: `string`):

Average star rating (1-5)

## `reviewCount` (type: `string`):

Total number of reviews

## `priceLevel` (type: `string`):

Price range ($, $$, $$$, $$$$)

## `openingHours` (type: `string`):

Weekly opening hours

## `isOpenNow` (type: `string`):

Currently open or closed

## `description` (type: `string`):

Business description / editorial note

## `googleMapsUrl` (type: `string`):

Direct Google Maps link

## `thumbnailUrl` (type: `string`):

Business photo thumbnail URL

## `linkedin` (type: `string`):

LinkedIn profile URL

## `instagram` (type: `string`):

Instagram profile URL

## `facebook` (type: `string`):

Facebook page URL

## `twitter` (type: `string`):

Twitter/X profile URL

## `reviews` (type: `string`):

Array of recent review objects

## `keyword` (type: `string`):

Search term that found this business

## `scrapedAt` (type: `string`):

ISO timestamp of extraction

# 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 = {
    "searchTerms": [
        "restaurant"
    ],
    "location": "Paris, France"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dev-sinior/google-maps-scraper-premium").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 = {
    "searchTerms": ["restaurant"],
    "location": "Paris, France",
}

# Run the Actor and wait for it to finish
run = client.actor("dev-sinior/google-maps-scraper-premium").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 '{
  "searchTerms": [
    "restaurant"
  ],
  "location": "Paris, France"
}' |
apify call dev-sinior/google-maps-scraper-premium --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dev-sinior/google-maps-scraper-premium"
        }
    }
}

```

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/dX8MfI0TidU3mtdqD/builds/kFU7LC7GU0T1kk1cE/openapi.json
