# Google Maps Scraper (No API Key) (`admo-solutions/google-maps-scraper-direct`) Actor

Scrape Google Maps business listings including name, address, phone, website, ratings, reviews, hours, and photos. No API key required - scrapes directly from Google Maps.

- **URL**: https://apify.com/admo-solutions/google-maps-scraper-direct.md
- **Developed by:** [Admo Solutions](https://apify.com/admo-solutions) (community)
- **Categories:**
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### What does Google Maps Scraper do?

Scrape **Google Maps business listings** without any API key. Extract names, addresses, phone numbers, websites, ratings, reviews, hours, and coordinates from Google Maps. Just enter your search queries and get structured data in seconds.

This Actor uses **Playwright browser automation** to scrape Google Maps directly - no Google API key required. Works for any business type, anywhere in the world.

### Why use Google Maps Scraper?

- **No API key needed** - Unlike Google Places API ($32/1K requests), this scraper works without any billing setup
- **Cheap pricing** - $2.00 per 1,000 places vs $64+ with Google Places API
- **Complete data** - Name, address, phone, website, rating, reviews, hours, coordinates
- **Multi-query** - Search multiple queries in one run
- **Proxy rotation** - Built-in Apify proxy support for reliability
- **Structured output** - Clean JSON data ready for analysis

#### Use cases

- **Lead generation** - Find local businesses for outreach
- **Market research** - Analyze competitors in specific areas
- **SEO auditing** - Check business listings and citations
- **Data enrichment** - Add business data to your CRM
- **Location analysis** - Map business density by category

### How to use Google Maps Scraper

1. Go to the Actor's Input tab
2. Enter your search queries (e.g., "restaurants in New York", "plumbers in London")
3. Set max results per query (default: 20)
4. Click **Start** and wait for results
5. Download your data in JSON, CSV, or Excel format

#### Example input

```json
{
    "queries": ["coffee shops in San Francisco", "gyms in Los Angeles"],
    "maxResults": 50,
    "getDetails": true,
    "language": "en"
}
```

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `queries` | array | Yes | - | Search queries to find businesses |
| `maxResults` | integer | No | all | Max results per query (1-1000). Leave empty to get ALL available results. |
| `getDetails` | boolean | No | true | Click into each result for full details (hours, website). Slower. |
| `language` | string | No | en | Google Maps interface language |

### Output

The Actor outputs a dataset with structured business data. You can download in JSON, CSV, HTML, or Excel.

#### Example output

```json
{
    "name": "Blue Bottle Coffee",
    "category": "Coffee shop",
    "address": "315 Linden St, San Francisco, CA 94102",
    "phone": "(510) 555-1234",
    "website": "https://bluebottlecoffee.com",
    "rating": 4.5,
    "reviews_count": 234,
    "google_maps_url": "https://maps.google.com/?cid=...",
    "latitude": 37.7764,
    "longitude": -122.4266,
    "search_query": "coffee shops in San Francisco"
}
```

### Data table

| Field | Description |
|-------|-------------|
| `name` | Business name |
| `category` | Business type/category |
| `address` | Full street address |
| `phone` | Phone number |
| `website` | Business website URL |
| `rating` | Google Maps rating (1-5) |
| `reviews_count` | Number of reviews |
| `google_maps_url` | Direct link to Google Maps |
| `latitude` | GPS latitude |
| `longitude` | GPS longitude |
| `hours` | Opening hours (if available) |
| `search_query` | Original search query |

### Pricing

This Actor uses **pay-per-event pricing**:

| Event | Price |
|-------|-------|
| Place scraped | $2.00 per 1,000 places |

**Free tier**: $5 credits = ~2,500 free places. No credit card required.

#### Cost comparison

| Method | Cost per 1,000 places |
|--------|----------------------|
| **This scraper** | **$2.00** |
| Google Places API | $64+ (API fees) |
| Other Apify scrapers | $3-6 |

### Tips

- **Start small** - Test with 10-20 results first to verify output format
- **Use specific queries** - "pizza restaurants in Manhattan" works better than "food"
- **Enable getDetails** - Set to `true` for full address, phone, and website data
- **Disable getDetails** - Set to `false` for faster runs (less data per result)
- **Multiple queries** - Add several queries to run them all in one batch
- **Use webhooks** - Enter a Zapier webhook URL to auto-trigger workflows when scraping completes

### Zapier Integration

Connect Google Maps Scraper to 5,000+ apps via Zapier. Two ways to integrate:

#### Option 1: Webhook (Recommended)

Trigger any Zap automatically when scraping completes.

**Setup:**

1. In Zapier, create a new Zap
2. Choose **Webhooks by Zapier** as the trigger
3. Select **Catch Hook** and copy the webhook URL
4. Paste the webhook URL into the Actor's **Webhook URL** input field
5. Run the Actor
6. Zapier receives the results and can send them to Google Sheets, HubSpot, Slack, etc.

**Webhook payload:**

```json
{
    "event": "google_maps_scrape_complete",
    "query": "restaurants in New York",
    "totalResults": 50,
    "results": [
        {
            "name": "Blue Bottle Coffee",
            "category": "Coffee shop",
            "address": "315 Linden St, San Francisco, CA 94102",
            "phone": "(510) 555-1234",
            "website": "https://bluebottlecoffee.com",
            "rating": 4.5,
            "reviews_count": 234,
            "latitude": 37.7764,
            "longitude": -122.4266,
            "google_maps_url": "https://maps.google.com/?cid=...",
            "search_query": "restaurants in New York"
        }
    ]
}
```

#### Option 2: Apify Native Integration

Use Apify's built-in Zapier connector for more advanced workflows.

**Setup:**

1. In Zapier, search for **Apify** in the app directory
2. Connect your Apify account (OAuth)
3. Choose a trigger: **Finished Actor Run** or **Finished Task Run**
4. Select **Google Maps Scraper** as the Actor
5. Add an action (Google Sheets, HubSpot, Slack, etc.)

**Available Zapier actions:**

- **Run Actor** - Start a scrape from Zapier
- **Fetch Dataset Items** - Get results from a completed run
- **Find Last Run** - Get the most recent run data

#### Example Zapier Workflows

**Lead Generation Pipeline:**

1. Schedule (daily/weekly) → Run Google Maps Scraper → Add to Google Sheets → Send to CRM

**Real-time Notifications:**

1. Webhook → Filter (rating > 4.0) → Send Slack message

**Data Enrichment:**

1. Webhook → Lookup in Apollo.io → Enrich with email → Add to Instantly campaign

### n8n Integration

Connect to [n8n](https://n8n.io) (open-source workflow automation) via webhook or API.

#### Quick Setup

1. In n8n, create a new workflow
2. Add a **Webhook** node (trigger)
3. Copy the webhook URL
4. Paste it into the Actor's **Webhook URL** field
5. Run the scraper → results flow into n8n

#### Pre-built Workflows

Download ready-to-import workflows from the `n8n-integration/` folder:

- **webhook-receiver-workflow.json** - Receive results via webhook
- **api-caller-workflow.json** - Run scraper on a schedule

#### Example n8n Workflows

**Lead Pipeline:**

```
Webhook → Filter (rating >= 4) → Google Sheets → Email
```

**Slack Alerts:**

```
Webhook → Filter (has phone) → Slack (#leads)
```

**CRM Auto-Create:**

```
Webhook → Split Results → HubSpot (create contact)
```

Full documentation: See `n8n-integration/README.md`

### Make Integration (formerly Integromat)

Connect to [Make](https://make.com) with native Apify integration (7 modules).

#### Quick Setup

1. In Make, go to Settings → Connections
2. Add **Apify** connection with your API token
3. Create a new scenario
4. Add **Apify → Run an Actor** → Select "Google Maps Scraper"
5. Add output module (Google Sheets, Airtable, etc.)
6. Activate

#### Pre-built Blueprints

Download from `make-integration/` folder:

- **blueprint-run-scraper.json** - Run scraper on schedule, save to Google Sheets
- **blueprint-webhook-receiver.json** - Receive results via webhook

#### Example Workflows

**Lead Pipeline:**

```
Schedule → Run Actor → Get Items → Google Sheets
```

**Real-time Alerts:**

```
Webhook → Filter (4+ stars) → Slack
```

**CRM Auto-Create:**

```
Webhook → Parse JSON → HubSpot (create contact)
```

Full documentation: See `make-integration/README.md`

### FAQ

#### Do I need a Google API key?

No. This scraper works without any API key. Just enter your search queries and start scraping.

#### Is this legal?

This Actor scrapes publicly available business listing data from Google Maps. Users are responsible for ensuring their use complies with Google's Terms of Service and applicable laws.

#### How fast is it?

Typical speed is 5-10 seconds per query for basic results, or 10-15 seconds per query with detailed information enabled.

#### What if Google blocks the scraper?

The Actor includes stealth techniques and uses Apify's proxy infrastructure. If you experience issues, enable proxy configuration in the Actor input.

### Support

Found a bug or need a feature? Open an issue on the Issues tab. For custom solutions, contact me directly.

# Actor input Schema

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

Search queries to find businesses on Google Maps

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

Maximum number of results per query. Leave empty to extract ALL available results.

## `getDetails` (type: `boolean`):

Click into each result for full details (phone, website, hours, address). Recommended for lead generation.

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

Language for Google Maps interface

## `webhookUrl` (type: `string`):

URL to POST results when scraping completes. Use this to trigger Zapier Zaps, Make scenarios, or any webhook endpoint. Leave empty to disable.

## Actor input object example

```json
{
  "queries": [
    "restaurants in New York"
  ],
  "getDetails": true,
  "language": "en",
  "webhookUrl": ""
}
```

# Actor output Schema

## `results` (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 = {
    "queries": [
        "restaurants in New York"
    ],
    "webhookUrl": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("admo-solutions/google-maps-scraper-direct").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 = {
    "queries": ["restaurants in New York"],
    "webhookUrl": "",
}

# Run the Actor and wait for it to finish
run = client.actor("admo-solutions/google-maps-scraper-direct").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 '{
  "queries": [
    "restaurants in New York"
  ],
  "webhookUrl": ""
}' |
apify call admo-solutions/google-maps-scraper-direct --silent --output-dataset

```

## MCP server setup

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

```

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/vBaJ31lCPBKqpXiMt/builds/wwJigy69ZkEhg1mkE/openapi.json
