# Google Maps Scraper (`igview-owner/google-maps-scraper`) Actor

Scrape Google Maps search results in minutes. extracts business names, addresses, phone numbers, websites, ratings, reviews, and coordinates from Google Maps for any keyword or location.

- **URL**: https://apify.com/igview-owner/google-maps-scraper.md
- **Developed by:** [Sachin Kumar Yadav](https://apify.com/igview-owner) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 253 total users, 27 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 4.70 out of 5 stars

## Pricing

from $5.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

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

Extract business data from Google Maps with a simple keyword search. Get business names, addresses, phone numbers, ratings, reviews, and location coordinates in seconds. Perfect for lead generation, local SEO research, and market analysis. 🚀

---

### 📋 Table of Contents
- [What You Get](#-what-you-get)
- [How to Use](#-how-to-use)
- [Input Parameters](#-input-parameters)
- [Output Data](#-output-data)
- [Use Cases](#-use-cases)
- [Tips & Best Practices](#-tips--best-practices)
- [FAQ](#-faq)

---

### 🎯 What You Get

This Google Maps scraper extracts comprehensive business information:

- **Business Details**: Name, business ID, place ID
- **Contact Information**: Phone numbers, websites
- **Location Data**: Full address, latitude, longitude, timezone
- **Ratings & Reviews**: Star ratings, review counts
- **Business Categories**: Types of business (restaurant, cafe, etc.)
- **Price Level**: Price range indicators
- **Photos**: Business photo URLs
- **Operating Hours**: Working hours information
- **Verification Status**: Claimed and verified status

---

### 🚀 How to Use

1. **Enter Search Query**: Type what you're looking for (e.g., "pizza in New York", "dentist near me")
2. **Set Parameters**: Choose number of results, country, language, and zoom level
3. **Run the Actor**: Click start and wait for results
4. **Download Data**: Export as JSON, CSV, or Excel

No coding required! Simple form-based interface.

---

### ⚙️ Input Parameters

| Parameter | Type | Required | Description | Default |
|-----------|------|----------|-------------|---------|
| **query** | string | ✅ Yes | Search keyword or phrase (e.g., "coffee shop", "hotels in Paris") | `pizza in New York` |
| **limit** | integer | No | Maximum number of results to return (max: 500) | `20` |
| **country** | string | No | ISO country code for regional results (e.g., "us", "gb", "fr") | `us` |
| **lang** | string | No | Language code for results (e.g., "en", "es", "fr") | `en` |
| **zoom** | integer | No | Map zoom level (12-15 recommended, higher = closer view) | `13` |

#### Example Input

```json
{
  "query": "pizza in New York",
  "limit": 20,
  "country": "us",
  "lang": "en",
  "zoom": 13
}
````

***

### 📊 Output Data

Each place is saved as a separate result with the following fields:

```json
{
  "business_id": "0x89c259ab3c1ef289:0x3b67a41175949f55",
  "place_id": "ChIJifIePKtZwokRVZ-UdRGkZzs",
  "name": "Joe's Pizza Broadway",
  "phone_number": "+16465594878",
  "full_address": "Joe's Pizza Broadway, 1435 Broadway, New York, NY 10018",
  "latitude": 40.754679499999995,
  "longitude": -73.9870291,
  "rating": 4.5,
  "review_count": 23804,
  "website": "https://www.joespizzanyc.com/",
  "types": ["Pizza restaurant", "Pizza delivery", "Restaurant"],
  "price_level": "$",
  "timezone": "America/New_York",
  "city": "New York, NY",
  "is_claimed": true,
  "verified": true,
  "place_link": "https://www.google.com/maps/place/data=!3m1!4b1!4m2!3m1!1s0x89c259ab3c1ef289:0x3b67a41175949f55",
  "photos": [
    {
      "src": "https://lh3.googleusercontent.com/...",
      "max_size": [3213, 5712],
      "min_size": [203, 100]
    }
  ],
  "working_hours": [],
  "description": ["Classic NYC slice shop", "Modern outpost..."]
}
```

#### Export Formats

- **JSON**: Full structured data
- **CSV**: Spreadsheet-friendly format
- **Excel**: Ready for analysis

***

### 💼 Use Cases

#### Lead Generation

- Find potential customers in specific locations
- Build targeted contact lists for sales outreach
- Discover new business opportunities

#### Local SEO Research

- Analyze competitor locations and ratings
- Research market saturation in specific areas
- Track business performance metrics

#### Market Analysis

- Study business distribution by category
- Compare pricing across regions
- Identify market gaps and opportunities

#### Data Enrichment

- Add location data to existing databases
- Verify business information
- Update contact details automatically

#### Business Intelligence

- Monitor competitor presence
- Track new business openings
- Analyze customer review trends

***

### 💡 Tips & Best Practices

#### Search Queries

- **Be Specific**: "Italian restaurants in Manhattan" works better than just "restaurants"
- **Include Location**: Add city or neighborhood names for better targeting
- **Use Categories**: Try "dentist", "plumber", "hotel" for business types

#### Optimize Results

- **Adjust Limit**: Start with 20-50 results, increase if needed
- **Set Country**: Use country codes for regional accuracy
- **Choose Language**: Match your target audience's language
- **Zoom Level**: Use 12-15 for city-level, 15+ for neighborhood-level

#### Data Management

- **Save IDs**: Keep `business_id` and `place_id` for future reference
- **Regular Updates**: Re-run periodically to get fresh data
- **Export Smart**: Use CSV for spreadsheets, JSON for databases

#### Performance

- **Batch Processing**: Run multiple searches with different queries
- **Schedule Runs**: Automate data collection with Apify scheduling
- **Monitor Limits**: Stay within API rate limits for consistent results

***

### ❓ FAQ

#### What data can I extract?

You can extract business names, addresses, phone numbers, websites, ratings, review counts, coordinates, business categories, price levels, photos, and operating hours.

#### Do I need coding skills?

No! This is a no-code solution. Just fill in the search query and parameters in the simple form interface.

#### How many results can I get?

You can extract up to 500 results per run. Set the `limit` parameter to control the number of results.

#### Is this legal?

Yes. This scraper extracts publicly available data from Google Maps that anyone can see. Always comply with Google's Terms of Service and applicable laws.

#### How do I export the data?

After the run completes, go to the dataset tab and click "Export" to download as JSON, CSV, or Excel format.

#### Can I automate this?

Yes! Use Apify's scheduling feature to run the scraper automatically at set intervals (daily, weekly, etc.).

#### What if I get no results?

- Check your search query for typos
- Try broader keywords
- Verify the country code matches your search location
- Increase the zoom level for wider coverage

#### How accurate is the data?

The data comes directly from Google Maps and is as accurate as what Google displays. However, business information can change, so regular updates are recommended.

#### Can I search multiple locations?

Yes! Run the actor multiple times with different queries, or use Apify's batch processing features to automate multiple searches.

#### What's the difference between business\_id and place\_id?

Both are unique identifiers for places. `business_id` is Google's internal ID, while `place_id` is the public Google Places API identifier. Keep both for maximum compatibility.

***

### 🏷️ Find Me

Google Maps scraper, Google Maps data extraction, scrape Google Maps, Google Maps business scraper, Google Maps lead generation, extract Google Maps data, Google Maps API alternative, business data scraper, local business scraper, Google Maps places scraper, Google Maps search scraper, Google Maps data mining, Google Maps business listings, scrape business information, Google Maps contact scraper, Google Maps phone numbers, Google Maps email scraper, local SEO tool, competitor analysis tool, market research scraper, business directory scraper, location data scraper, Google Maps automation, Apify Google Maps, no-code scraper, web scraping tool, data extraction tool, business intelligence tool, lead finder, prospect finder, B2B lead generation, local business data, Google Maps to Excel, Google Maps to CSV, export Google Maps data, Google Maps bulk export

# Actor input Schema

## `query` (type: `string`):

📝 Search keyword or phrase. Examples: 'pizza in New York', 'dentist near me', 'hotels in Paris'. You can include location in the query for best results.

## `limit` (type: `integer`):

Maximum number of results to return (max: 500). Default: 20.

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

Optional ISO country code filter. Examples: 'us', 'fr', 'gb', 'in'.

## `lang` (type: `string`):

Response language code. Examples: 'en', 'fr', 'es', 'de'.

## `zoom` (type: `integer`):

Map zoom level (larger = closer view). Range: 1-20. Default: 13.

## `lat` (type: `number`):

Optional latitude for the search center point. Example: 40.7128 (New York).

## `lng` (type: `number`):

Optional longitude for the search center point. Example: -74.0060 (New York).

## Actor input object example

```json
{
  "query": "pizza in New York",
  "limit": 20,
  "country": "us",
  "lang": "en",
  "zoom": 13
}
```

# Actor output Schema

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

Quick view of essential business information including name, address, contact details, ratings, and categories.

## `contact_details` (type: `string`):

Complete contact information with phone numbers, website URLs, addresses, and GPS coordinates.

## `ratings_reviews` (type: `string`):

Customer ratings, review counts, price levels, and business reputation metrics.

## `media_photos` (type: `string`):

Business photos, featured images, and visual content with photo counts.

## `business_hours` (type: `string`):

Business working hours, schedules, timezone information, and contact details.

# 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 = {
    "query": "pizza in New York",
    "limit": 20,
    "country": "us",
    "lang": "en",
    "zoom": 13
};

// Run the Actor and wait for it to finish
const run = await client.actor("igview-owner/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 = {
    "query": "pizza in New York",
    "limit": 20,
    "country": "us",
    "lang": "en",
    "zoom": 13,
}

# Run the Actor and wait for it to finish
run = client.actor("igview-owner/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 '{
  "query": "pizza in New York",
  "limit": 20,
  "country": "us",
  "lang": "en",
  "zoom": 13
}' |
apify call igview-owner/google-maps-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Scraper",
        "description": "Scrape Google Maps search results in minutes. extracts business names, addresses, phone numbers, websites, ratings, reviews, and coordinates from Google Maps for any keyword or location.",
        "version": "1.0",
        "x-build-id": "hR2dHdwwxz7s0zXup"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/igview-owner~google-maps-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-igview-owner-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/igview-owner~google-maps-scraper/runs": {
            "post": {
                "operationId": "runs-sync-igview-owner-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/igview-owner~google-maps-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-igview-owner-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",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "🔍 Search Query",
                        "type": "string",
                        "description": "📝 Search keyword or phrase. Examples: 'pizza in New York', 'dentist near me', 'hotels in Paris'. You can include location in the query for best results.",
                        "default": "pizza in New York"
                    },
                    "limit": {
                        "title": "📊 Max Results",
                        "type": "integer",
                        "description": "Maximum number of results to return (max: 500). Default: 20.",
                        "default": 20
                    },
                    "country": {
                        "title": "🌍 Country Code",
                        "type": "string",
                        "description": "Optional ISO country code filter. Examples: 'us', 'fr', 'gb', 'in'."
                    },
                    "lang": {
                        "title": "🗣️ Language",
                        "type": "string",
                        "description": "Response language code. Examples: 'en', 'fr', 'es', 'de'.",
                        "default": "en"
                    },
                    "zoom": {
                        "title": "🗺️ Zoom Level",
                        "type": "integer",
                        "description": "Map zoom level (larger = closer view). Range: 1-20. Default: 13.",
                        "default": 13
                    },
                    "lat": {
                        "title": "📐 Latitude",
                        "type": "number",
                        "description": "Optional latitude for the search center point. Example: 40.7128 (New York)."
                    },
                    "lng": {
                        "title": "📐 Longitude",
                        "type": "number",
                        "description": "Optional longitude for the search center point. Example: -74.0060 (New York)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
