# Google Maps Business Scraper — Cheap Lead Generation (`joyouscam35875/google-maps-scraper`) Actor

Scrape Google Maps business data. Get names, addresses, phone numbers, websites, ratings, reviews, coordinates. Uses the official Places API ($200/month free from Google). Perfect for lead generation. $0.002/result.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Business Scraper — Extract Leads at Scale 🗺️

Scrape business data from Google Maps: **names, phones, websites, ratings, reviews, hours, and GPS coordinates**. Build lead lists in minutes, not days.

> 💡 **50-75% cheaper** than competing scrapers. No proxy costs — uses Google's own APIs.

***

### ✨ Key Features

- 📞 **Complete business data** — name, phone, website, address, hours, categories
- ⭐ **Ratings & reviews** — average rating + review count for lead qualification
- 📍 **GPS coordinates** — latitude/longitude for mapping and geo-analysis
- 💰 **$0.002/result** — 50-75% cheaper than alternatives
- ⚡ **Fast** — 100 results in under 1 minute
- 🌍 **Global coverage** — any country, any language

***

### 💰 How Much Does It Cost?

| Results | This Actor | Competitors |
|---|---|---|
| 100 | **$0.20** | $0.50 – $1.00 |
| 500 | **$1.00** | $2.50 – $5.00 |
| 1,000 | **$2.00** | $5.00 – $10.00 |

**You save 50-75% on every run.** No extra proxy costs — everything is included.

***

### 🚀 Getting Started (3 Steps)

1. **Enter your search** — e.g., "plumbers in London", "restaurants in Paris"
2. **Set max results** — up to 500 per search query
3. **Run** — structured business data ready to export

***

### 📥 Input Example

```json
{
    "searchQuery": "restaurants in Paris",
    "maxResults": 100,
    "language": "en",
    "countryCode": "fr"
}
```

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQuery` | string | *required* | Search query (e.g., "dentists near Lyon") |
| `maxResults` | integer | 100 | Max results (1-500) |
| `language` | string | "en" | Language code for results |
| `zoom` | integer | 14 | Map zoom (1=world, 21=building) |
| `countryCode` | string | "" | Country code to bias results |

***

### 📤 Example Output

```json
{
    "name": "Le Comptoir du Panthéon",
    "address": "5 Rue Soufflot, 75005 Paris, France",
    "phone": "+33 1 43 54 75 56",
    "website": "https://www.lecomptoirdupantheon.fr/",
    "rating": 4.3,
    "reviewsCount": 2847,
    "priceLevel": 2,
    "latitude": 48.8462,
    "longitude": 2.3464,
    "placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
    "category": ["French restaurant"],
    "openingHours": {
        "Monday": "12:00–23:00",
        "Tuesday": "12:00–23:00",
        "Wednesday": "12:00–23:00",
        "Thursday": "12:00–23:00",
        "Friday": "12:00–00:00",
        "Saturday": "12:00–00:00",
        "Sunday": "12:00–23:00"
    },
    "imageUrl": "https://lh5.googleusercontent.com/p/...",
    "searchQuery": "restaurants in Paris",
    "scrapedAt": "2026-03-27T19:00:00Z"
}
```

***

### 🎯 Use Cases

| Who | Use Case |
|---|---|
| 📞 **Sales teams** | Lead generation — build prospect lists with phone numbers and websites |
| 📊 **Market researchers** | Competitor mapping — analyze business density, ratings, pricing by area |
| 🏢 **Agencies** | Local SEO audits — audit client and competitor Google Maps presence |
| 🏠 **Real estate** | Amenity mapping — score neighborhoods by nearby services |
| 📈 **Data teams** | Enrich existing datasets with location data, ratings, and contact info |

***

### ❓ FAQ

**Q: Do I need a Google API key?**
No. The actor scrapes Google Maps directly — no API key required.

**Q: How many results can I get per query?**
Google Maps typically returns up to ~120 results per search. For broader coverage, run multiple searches with different sub-areas (e.g., "plumbers in Paris 1er", "plumbers in Paris 2e").

**Q: What export formats?**
JSON, CSV, Excel (XLSX), XML, RSS — all from the Apify console.

**Q: How do I get better results?**
Be specific. "Italian restaurants in Manhattan, New York" gives better results than "restaurants". Set `countryCode` and `language` to match your target area.

***

### 📋 Output Fields

| Field | Type | Description |
|---|---|---|
| `name` | string | Business name |
| `address` | string | Full street address |
| `phone` | string | Phone number |
| `website` | string | Website URL |
| `rating` | float | Average rating (1.0–5.0) |
| `reviewsCount` | integer | Total number of reviews |
| `priceLevel` | integer | Price level (1-4, where 1=cheap) |
| `latitude` | float | GPS latitude |
| `longitude` | float | GPS longitude |
| `placeId` | string | Google Place ID |
| `category` | string\[] | Business categories |
| `openingHours` | object | Opening hours by day |
| `imageUrl` | string | Business photo URL |
| `searchQuery` | string | Original search query |
| `scrapedAt` | string | Scraping timestamp |

***

### 💡 Tips for Best Results

- **Be specific** — "Italian restaurants in Manhattan" > "restaurants"
- **Use country codes** — `countryCode: "fr"` focuses results on France
- **Adjust zoom** — lower (10-12) for wide area, higher (16-18) for a neighborhood
- **Run multiple queries** — split large areas into sub-searches for complete coverage

### 🔗 Integration Examples

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("joyouscam35875/google-maps-scraper").call(run_input={"searchQuery": "restaurants Paris", "googleApiKey": "YOUR_KEY"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('joyouscam35875/google-maps-scraper').call({"searchQuery": "restaurants Paris", "googleApiKey": "YOUR_KEY"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Make / Zapier / n8n

Use the Apify integration — search for this actor by name in the Apify app connector. No code needed.

***

### 🔗 More Scrapers by Ken Digital

| Scraper | What it does | Price |
|---------|-------------|-------|
| [YouTube Channel Scraper](https://apify.com/joyouscam35875/youtube-channel-scraper) | Videos, stats, metadata via official API | $0.001/video |
| [France Job Scraper](https://apify.com/joyouscam35875/france-job-scraper) | WTTJ + France Travail + Hellowork | $0.005/job |
| [France Real Estate Scraper](https://apify.com/joyouscam35875/france-real-estate-scraper) | 5 sources + DVF price analysis | $0.008/listing |
| [Website Content Crawler](https://apify.com/joyouscam35875/website-content-crawler) | HTML to Markdown for AI/RAG | $0.001/page |
| [Google Trends Scraper](https://apify.com/joyouscam35875/google-trends-scraper) | Keywords, regions, related queries | $0.002/keyword |
| [GitHub Repo Scraper](https://apify.com/joyouscam35875/github-repo-scraper) | Stars, forks, languages, topics | $0.002/repo |
| [RSS News Aggregator](https://apify.com/joyouscam35875/rss-news-aggregator) | Multi-source feed parsing | $0.0005/article |
| [Instagram Profile Scraper](https://apify.com/joyouscam35875/instagram-profile-scraper) | Followers, bio, posts | $0.0015/profile |
| [Google Maps Scraper](https://apify.com/joyouscam35875/google-maps-scraper) | Businesses, reviews, contacts | $0.002/result |
| [TikTok Scraper](https://apify.com/joyouscam35875/tiktok-scraper) | Videos, likes, shares | $0.001/video |
| [Google SERP Scraper](https://apify.com/joyouscam35875/google-serp-scraper) | Search results, PAA, snippets | $0.003/search |
| [Trustpilot Scraper](https://apify.com/joyouscam35875/trustpilot-scraper) | Reviews, ratings, sentiment | $0.001/review |

👉 [View all scrapers](https://apify.com/joyouscam35875)

### ⚠️ Important: Residential Proxies Required

This actor targets platforms with strict anti-bot protection (Cloudflare, fingerprinting).
To successfully scrape data, you must enable **Apify Residential Proxies** in the actor settings.
Go to the Apify Console → Actor → Settings → Proxy configuration → select **Residential proxy pool**.
Without residential proxies, the actor will return 0 results or errors.
✅ Pro tip: The actor is configured for pay-per-event pricing, so you only pay for successful results.

# Actor input Schema

## `searchQuery` (type: `string`):

What to search for on Google Maps (e.g. 'restaurants in Paris', 'plumbers near London').

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

Maximum number of results to scrape. Google Maps typically returns up to 120 results per search.

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

Language code for results (e.g. 'en', 'fr', 'de', 'es').

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

Map zoom level (1-21). Higher = more local results. 14 is city-level, 17 is street-level.

## `countryCode` (type: `string`):

Two-letter country code to bias results (e.g. 'us', 'fr', 'gb'). Optional.

## `googleApiKey` (type: `string`):

Your Google API key with Places API (New) enabled. Get one free at https://console.cloud.google.com — includes $200/month free credits (covers ~6000 searches).

## Actor input object example

```json
{
  "searchQuery": "restaurants in Paris",
  "maxResults": 100,
  "language": "en",
  "zoom": 14,
  "countryCode": ""
}
```

# 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 = {
    "searchQuery": "restaurants in Paris"
};

// Run the Actor and wait for it to finish
const run = await client.actor("joyouscam35875/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 = { "searchQuery": "restaurants in Paris" }

# Run the Actor and wait for it to finish
run = client.actor("joyouscam35875/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 '{
  "searchQuery": "restaurants in Paris"
}' |
apify call joyouscam35875/google-maps-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,joyouscam35875/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/FuOWX2VDTRMzbygyh/builds/xGHDzoJ36WWhUhRki/openapi.json
