# Google Maps Search Scraper (`web_wanderer/google-business-search-scraper`) Actor

Easily scrape Google Maps search results at scale. This Google Maps Scraper extracts business names, addresses, phone numbers, websites, ratings, reviews count, business hours, service options, place attributes, and coordinates for any business type. Export data in JSON, CSV, Excel, or via API.

- **URL**: https://apify.com/web\_wanderer/google-business-search-scraper.md
- **Developed by:** [Billy](https://apify.com/web_wanderer) (community)
- **Categories:** Lead generation, SEO tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 places

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

Search Google Maps for businesses and get structured place data, including names, addresses, phone numbers, websites, ratings, business hours, and more.

#### Why use this actor?

- Get **complete business listings** from Google Maps search results in seconds.
- Extract **35+ data fields** per place, including phone numbers, websites, coordinates, business hours, service options, and place attributes.
- Works with **all business types**: restaurants, hotels, dentists, hospitals, museums, gas stations, and more.
- Filter results by **minimum rating** (2.0 to 4.5 stars).
- Paginate through **up to 10,000 pages** per query for comprehensive coverage.
- Automatic **deduplication** across pages and queries.
- Clean, structured **JSON output** ready for analysis or integration.

---

#### Features

- Search by **keyword queries** or **Google Maps search URLs**
- Target searches to a **specific city or coordinates**
- Filter by **minimum rating threshold**
- Extracts per place:
  - Place name, Place ID, Feature ID
  - Full address with street, city, state, postal code, country
  - Latitude and longitude coordinates
  - Phone number (local and international)
  - Website URL and domain
  - Rating and review count
  - Price range
  - Business category and subcategories
  - Business hours (7-day schedule)
  - Current status (e.g., "Open", "Closed · Opens 9 AM")
  - Service options (dine-in, takeout, delivery, etc.)
  - Place attributes (accessibility, amenities, offerings, parking, atmosphere, etc.)
  - Hotel info (star class, amenities, check-in/check-out times)
  - Photo URLs and photo count
  - Owner name, timezone, and more

---

#### Example input

```json
{
  "search": ["restaurants"],
  "rating": "4.0",
  "search_limit": 2,
  "search_location": "New York",
  "search_coordination": ""
}
````

#### Example output

```json
{
  "place_id": "ChIJoTXWl8dbwokRpKA2BJFVsGA",
  "fid": "0x89c25bc797d635a1:0x60b055910436a0a4",
  "place_name": "Manhatta",
  "google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJoTXWl8dbwokRpKA2BJFVsGA",
  "knowledge_graph_id": "/g/11gh9qhb9q",
  "address": ["28 Liberty St 60th floor", "New York, NY 10005"],
  "full_address": "Manhatta, 28 Liberty St 60th floor, New York, NY 10005",
  "street": "28 Liberty St 60th floor",
  "city": "New York",
  "postal_code": "10005",
  "state": "New York",
  "country": "US",
  "city_state": "New York, NY",
  "neighborhood": "Manhattan",
  "latitude": 40.707997,
  "longitude": -74.008882,
  "timezone": "America/New_York",
  "rating": 4.7,
  "reviews_count": 3795,
  "price_range": "$100+",
  "category": "New American restaurant",
  "categories": ["New American restaurant", "Fine dining restaurant", "Lounge bar"],
  "website": "https://www.manhattarestaurant.com/restaurant-menu/",
  "website_domain": "manhattarestaurant.com",
  "phone": "(212) 230-5788",
  "phone_international": "+12122305788",
  "photo_url": "https://lh3.googleusercontent.com/gps-cs-s/...",
  "photos_count": 11600,
  "profile_photo_url": "https://lh3.googleusercontent.com/...",
  "business_hours": [
    {"day": "Saturday", "hours": "11:30 AM–10:30 PM"},
    {"day": "Sunday", "hours": "11:30 AM–9:30 PM"},
    {"day": "Monday", "hours": "11:30 AM–9:30 PM"},
    {"day": "Tuesday", "hours": "11:30 AM–9:30 PM"},
    {"day": "Wednesday", "hours": "11:30 AM–9:30 PM"},
    {"day": "Thursday", "hours": "11:30 AM–10:30 PM"},
    {"day": "Friday", "hours": "11:30 AM–10:30 PM"}
  ],
  "current_status": "Closed · Opens 11:30 AM",
  "service_options": ["Onsite services", "Dine-in", "Delivery"],
  "place_attributes": {
    "highlights": ["Fast service", "Great cocktails", "Great coffee"],
    "accessibility": ["Wheelchair accessible entrance", "Wheelchair accessible restroom"],
    "offerings": ["Alcohol", "Coffee", "Organic dishes", "Vegan options"],
    "dining_options": ["Lunch", "Dinner", "Dessert", "Table service"],
    "amenities": ["Bar onsite", "Restroom"],
    "atmosphere": ["Cozy", "Romantic", "Trendy", "Upscale"],
    "crowd": ["Family-friendly", "Groups", "LGBTQ+ friendly"],
    "planning": ["Dinner reservations recommended", "Accepts reservations"],
    "payments": ["Debit cards", "NFC mobile payments", "Credit cards"],
    "parking": ["Paid street parking"]
  },
  "hotel_info": null,
  "owner_name": "Manhatta (Owner)",
  "language": "en",
  "scraped_at": "2025-01-15T10:30:00.000Z"
}
```

<details>
<summary><b>Hotel output example</b></summary>

```json
{
  "place_id": "ChIJw_JUgvhYwokRIgBAxZdF4eA",
  "place_name": "The Manhattan at Times Square Hotel",
  "category": "Hotel",
  "rating": 3.0,
  "reviews_count": 9928,
  "business_hours": [
    {"day": "Saturday", "hours": "Open 24 hours"},
    {"day": "Sunday", "hours": "Open 24 hours"}
  ],
  "current_status": "Open 24 hours",
  "service_options": ["Onsite services"],
  "place_attributes": {
    "crowd": ["friendly"]
  },
  "hotel_info": {
    "stars": 4,
    "class": "4-star hotel",
    "amenities": ["Free Wi-Fi"],
    "check_in": "Check-in time: 4:00 PM"
  }
}
```

</details>

***

#### Use cases

- **Lead generation**: Build prospect lists with phone numbers, websites, and addresses.
- **Market research**: Analyze business density, ratings, and categories across locations.
- **Competitive analysis**: Compare businesses by rating, review count, and service options.
- **Location intelligence**: Map business coordinates for geographic analysis.
- **Data enrichment**: Enrich your CRM with verified business details from Google Maps.

***

#### Your responsibility

This actor extracts publicly available data from Google Maps search results. You are responsible for ensuring that your use of the data complies with all applicable laws and regulations, including data protection laws (such as GDPR) and the terms of service of the source website.

***

#### Tips

- Use **specific queries** like "pizza restaurants in Brooklyn" for more relevant results.
- Combine **search\_location** with general queries (e.g., search: "dentist", location: "London") to target a specific area.
- Use **search\_coordination** with longitude,latitude for precise geographic targeting.
- Set a **rating** filter to focus on top-rated businesses only.
- Increase **search\_limit** to get more results.

***

#### Support

If you run into any issues, please open an issue or contact the developer. Sharing your run logs helps with troubleshooting.

# Actor input Schema

## `search` (type: `array`):

Provide one or more search queries (e.g., 'restaurants in Paris') or Google Maps search URLs. URLs must include the `maps/search` path to be valid.

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

Filter out places below a specific average rating. For example, selecting '4.0 and up' will only include places rated 4.0 or higher. Select 'All' to disable rating filtering.

## `search_limit` (type: `integer`):

Maximum number of search result pages to process per query or URL. Each page typically contains up to 40 places.

## `search_location` (type: `string`):

Specify a location to search within, such as a city name (e.g., 'Paris', 'Berlin', 'New York'). Useful for general queries like 'restaurants' without geographic context.

## `search_coordination` (type: `string`):

Specify a geographic coordinate in the format '<longitude>,<latitude>' (e.g., '2.3522,48.8566' for Paris). This allows for precise location targeting when used with general queries.

## Actor input object example

```json
{
  "search": [
    "restaurants"
  ],
  "rating": "0.0",
  "search_limit": 1,
  "search_location": "",
  "search_coordination": ""
}
```

# Actor output Schema

## `dataset` (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 = {
    "search": [
        "restaurants"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("web_wanderer/google-business-search-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 = { "search": ["restaurants"] }

# Run the Actor and wait for it to finish
run = client.actor("web_wanderer/google-business-search-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 '{
  "search": [
    "restaurants"
  ]
}' |
apify call web_wanderer/google-business-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Search Scraper",
        "description": "Easily scrape Google Maps search results at scale. This Google Maps Scraper extracts business names, addresses, phone numbers, websites, ratings, reviews count, business hours, service options, place attributes, and coordinates for any business type. Export data in JSON, CSV, Excel, or via API.",
        "version": "0.1",
        "x-build-id": "yk7gHwcX7yorrGWHF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/web_wanderer~google-business-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-web_wanderer-google-business-search-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/web_wanderer~google-business-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-web_wanderer-google-business-search-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/web_wanderer~google-business-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-web_wanderer-google-business-search-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": [
                    "search"
                ],
                "properties": {
                    "search": {
                        "title": "Search queries & Google Maps URLs",
                        "type": "array",
                        "description": "Provide one or more search queries (e.g., 'restaurants in Paris') or Google Maps search URLs. URLs must include the `maps/search` path to be valid.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "rating": {
                        "title": "Rating",
                        "enum": [
                            "0.0",
                            "2.0",
                            "2.5",
                            "3.0",
                            "3.5",
                            "4.0",
                            "4.5"
                        ],
                        "type": "string",
                        "description": "Filter out places below a specific average rating. For example, selecting '4.0 and up' will only include places rated 4.0 or higher. Select 'All' to disable rating filtering.",
                        "default": "0.0"
                    },
                    "search_limit": {
                        "title": "Page limit per search",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of search result pages to process per query or URL. Each page typically contains up to 40 places.",
                        "default": 1
                    },
                    "search_location": {
                        "title": "Search location",
                        "type": "string",
                        "description": "Specify a location to search within, such as a city name (e.g., 'Paris', 'Berlin', 'New York'). Useful for general queries like 'restaurants' without geographic context.",
                        "default": ""
                    },
                    "search_coordination": {
                        "title": "Search coordinates",
                        "type": "string",
                        "description": "Specify a geographic coordinate in the format '<longitude>,<latitude>' (e.g., '2.3522,48.8566' for Paris). This allows for precise location targeting when used with general queries.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
