# Google Maps Scraper — Places, Ratings & Contacts (`hipersoft/google-maps-scraper`) Actor

Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.

- **URL**: https://apify.com/hipersoft/google-maps-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0025 / place scraped

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/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 — Places, Ratings, Contacts & Coordinates

Google Maps Scraper turns any Google Maps search into a clean, structured dataset of local businesses. Query by keyword and location (e.g. "coffee shops in Austin TX") and get each place with its **name, category, full address, phone, website, star rating, Place ID, coordinates and a direct map link**. Export to JSON, CSV, Excel or XML. Fast and reliable, with no account or API key to set up. Reliable enough for bulk lead lists and repeatable market-research runs.

![Google Maps Scraper input — search queries, country, language and place-details toggle in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/google-maps-scraper-input.png?v=2)

### What does the Google Maps Scraper do?

This Google Maps crawler runs your searches, paginates automatically, de-duplicates by Place ID, and returns one structured record per business. Add as many searches as you like and export a fresh local-business dataset for outreach, mapping or market research.

### What data can you scrape from Google Maps?

| Data point | Description |
| --- | --- |
| Identity | `name`, `category`, `categories`, `placeId`, `featureId` |
| Location | `address`, `city`, `countryCode`, `latitude`, `longitude`, `plusCode` |
| Contact | `phone`, `website` |
| Ratings | `rating`, `reviewsCount` |
| Hours | `hours`, `openStatus` |
| Links | `url`, `search` |

### What you get

One record per business. Export the full table to JSON, CSV, Excel or XML.

![Google Maps Scraper output example — business rows with name, address, phone, rating and coordinates as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/google-maps-scraper-output.png?v=5)

```json
{
  "search": "coffee shops in Austin TX",
  "name": "Houndstooth Coffee",
  "category": "Coffee shop",
  "categories": ["Coffee shop", "Espresso bar"],
  "address": "401 Congress Ave #100, Austin, TX 78701",
  "city": "Austin",
  "countryCode": "US",
  "latitude": 30.2681,
  "longitude": -97.7428,
  "rating": 4.6,
  "reviewsCount": 512,
  "phone": "+1 512-394-6051",
  "website": "https://houndstoothcoffee.com/",
  "placeId": "ChIJ_0123456789abcdefghijklmn",
  "featureId": "0x8644b5a1c2d3e4f5:0x1234567890abcdef",
  "plusCode": "76QW+2P Austin, Texas",
  "url": "https://www.google.com/maps/place/?q=place_id:ChIJ_0123456789abcdefghijklmn",
  "hours": ["Monday: 7 AM–7 PM", "Tuesday: 7 AM–7 PM"],
  "openStatus": "Open"
}
```

`reviewsCount`, `hours` and `openStatus` are populated when `scrapePlaceDetails` is enabled.

#### Output schema

| Field | Type | Description |
| --- | --- | --- |
| `search` | string | The search query that produced this place. |
| `name` | string | Business name. |
| `category` | string | Primary category of the business. |
| `categories` | array | All categories the business is listed under. |
| `address` | string | Full street address. |
| `city` | string | City the business is in. |
| `countryCode` | string | Two-letter country code. |
| `latitude` | number | Latitude of the place. |
| `longitude` | number | Longitude of the place. |
| `rating` | number | Average star rating. |
| `reviewsCount` | integer | Total number of reviews (with place details enabled). |
| `phone` | string | Contact phone number, when listed. |
| `website` | string (URL) | Business website, when listed. |
| `placeId` | string | Google Place ID, used to de-duplicate and to chain into reviews. |
| `featureId` | string | Google feature identifier for the place. |
| `plusCode` | string | Google Plus Code location string. |
| `url` | string (URL) | Direct Google Maps link to the place. |
| `hours` | array | Opening hours by day (with place details enabled). |
| `openStatus` | string | Whether the place is currently open or closed (with place details enabled). |

### Use cases

- Build local B2B lead lists (name, phone, website) for a city or niche.
- Map competitor density and ratings across a metro area for market research.
- Enrich a CRM with Place IDs, coordinates and categories.
- Feed Place IDs straight into the Google Maps Reviews Scraper for reputation tracking.
- Analyze category coverage and average ratings across neighborhoods.

### How to scrape Google Maps data

1. Add the Google Maps Scraper to your Apify account and open its input.
2. Enter searches like "\<what> in \<where>" under `searches`, one per line.
3. Set `maxItemsPerSearch`, `country` and `language` for your market.
4. Toggle `scrapePlaceDetails` for review counts and hours, then click **Run**.
5. Export the results as JSON, CSV, Excel or XML, or pull them via the Apify API.

### Input

```json
{
  "searches": ["coffee shops in Austin TX", "plumbers in Austin TX"],
  "maxItemsPerSearch": 60,
  "country": "us",
  "language": "en",
  "scrapePlaceDetails": false
}
```

| Field | Description |
| --- | --- |
| `searches` | List of queries, ideally "\<what> in \<where>". One per line. |
| `maxItemsPerSearch` | Cap on places per search (1–500, ~20 per page). |
| `country` | Google country code (e.g. `us`, `gb`, `de`). |
| `language` | Results language (e.g. `en`, `es`). |
| `scrapePlaceDetails` | Also fetch total review count, hours and open/closed status (slower). |
| `proxyConfiguration` | Optional proxy settings; rotation is recommended for large runs. |

### Need more local & leads data?

- [Google Maps Reviews Scraper](https://apify.com/hipersoft/google-maps-reviews) — reviewer names, ratings, text and dates for any place; chain Place IDs straight from here.
- [Google Maps Email Extractor](https://apify.com/hipersoft/google-maps-email-extractor) — turn Maps results into a lead list with emails, socials and extra phones.
- [Website Contact Scraper](https://apify.com/hipersoft/website-contact-scraper) — enrich the websites you find here with emails, phones and social profiles.

### FAQ

**Do I need an API key or Google account?**
No. Just add your searches and run — no API key, login or Google Cloud billing to set up.

**How many places can I get per run?**
Each search returns up to 500 places (paginated automatically, ~20 per page). You can queue many searches in one run, so a single run can produce thousands of business records.

**Does it collect emails or contact info?**
It returns each business's phone and website when Google exposes them, but it does not visit those websites to extract emails. For emails and social profiles, use the [Google Maps Email Extractor](https://apify.com/hipersoft/google-maps-email-extractor).

**What export formats are supported?**
JSON, CSV, Excel and XML, plus programmatic access through the Apify API.

**How does billing work?**
You pay per item you get, so cost scales with the number of places you actually collect. See the **Pricing** tab for current rates.

**Can I connect this to other tools?**
The Google Maps Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is scraping Google Maps legal?**
The scraper collects only publicly visible listing data — the same information any visitor sees on Google Maps. You are responsible for using it in line with applicable laws and Google's terms.

### Related Actors

- [Google Maps Reviews Scraper](https://apify.com/hipersoft/google-maps-reviews)
- [Google Maps Email Extractor](https://apify.com/hipersoft/google-maps-email-extractor)
- [Website Contact Scraper](https://apify.com/hipersoft/website-contact-scraper)

### Notes

Original clean-room implementation. Collects only publicly visible Google Maps listing data. Not affiliated with, endorsed by or sponsored by Google; Google Maps is a trademark of Google LLC.

# Actor input Schema

## `searches` (type: `array`):

Search queries, ideally "<what> in <where>" (e.g. "restaurants in Chicago", "plumbers in Austin TX"). One per line.

## `maxItemsPerSearch` (type: `integer`):

Cap places per search (~20 per page).

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

Google country code (e.g. us, gb, de).

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

Results language (e.g. en, es).

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

Proxy configuration. Leave the default — it is tuned for reliable results.

## `scrapePlaceDetails` (type: `boolean`):

For each place, fetch its full details to add the total review count, opening hours and open/closed status. Slower and costs a place-details event per place (uses proxy retries for reliability).

## Actor input object example

```json
{
  "searches": [
    "coffee shops in Austin TX"
  ],
  "maxItemsPerSearch": 60,
  "country": "us",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "scrapePlaceDetails": false
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# 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 = {
    "searches": [
        "coffee shops in Austin TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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 = { "searches": ["coffee shops in Austin TX"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/google-maps-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searches": [
    "coffee shops in Austin TX"
  ]
}' |
apify call hipersoft/google-maps-scraper --silent --output-dataset

```

## MCP server setup

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

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uot4N4JEn5Ez9lOd7/builds/jbXd3QtaSnkOFeOyz/openapi.json
