# Google Map Scraper $0.5/1K Places 📍 Verified Data Every Time (`jumbled_falcon/geo-local-business-finder`) Actor

Extract data from hundreds of places fast. Scrape Google Maps by keyword, category, location, URLs & other filters. Get addresses, contact info, opening hours, popular times, prices, menus & more. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

- **URL**: https://apify.com/jumbled\_falcon/geo-local-business-finder.md
- **Developed by:** [Sept Solutions](https://apify.com/jumbled_falcon) (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.50 / 1,000 business leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Leads Scraper — Phone Numbers, Websites & Ratings for Any Local Business**

Stop searching Google Maps by hand. Enter any business type and location, click **Start**, and download a clean, enriched lead list — complete with phone numbers, websites, and ratings — ready to import into your CRM or outreach tool in minutes.

Built for **agencies**, **sales teams**, **founders**, and **marketers** who need accurate local business data at scale.

---

### What makes this different

| Other scrapers | This Actor |
|---|---|
| Names and addresses only | Phone + website fetched from every listing |
| Duplicate rows in export | One clean row per business, auto-deduplicated |
| Single keyword, single city | Many keywords × many cities in one run |
| Breaks on Google blocks | Residential proxy + retries built in |

**Real fill rates from production runs:**
- Phone number: ~99% of businesses
- Website: ~90% of businesses
- Both phone + website: ~89% of businesses

---

### Perfect for

- **Lead gen agencies** building niche lists for clients
- **B2B sales teams** prospecting dentists, lawyers, contractors, restaurants — any local business
- **Cold email & cold calling** — phone + website in every row
- **Market researchers** mapping business density and ratings by city
- **SaaS founders** validating ICP and building prospect lists
- **Recruiters** mapping employers across any region

---

### How it works

1. **Search** — Opens Google Maps for every keyword × location pair you enter
2. **Collect** — Captures business name, rating, reviews, category, and Maps URL
3. **Enrich** — Visits each listing's detail page to fetch phone number and website
4. **Deduplicate** — Delivers one clean row per business in the `deduplicated` dataset

**Always download from the `deduplicated` dataset** — that is your ready-to-use lead list.

---

### What you get per lead

| Field | Example |
|---|---|
| Business name | Studio Smiles NYC |
| Phone number | +16464701376 |
| Website | studiosmilesnyc.com |
| Google rating | 4.9 |
| Review count | 610 reviews |
| Business category | Dentist |
| Address | 209 E 56th St, New York |
| Open/closed status | Open · Closes 6 PM |
| Google Maps URL | Direct link to listing |
| Sponsored flag | Filters out paid ads |
| Wheelchair accessible | Yes/No |
| Business status | Operational / Closed |
| Keyword that found it | dentist near New York |

---

### Sample lead (what one row looks like)

```json
{
  "name": "Studio Smiles NYC",
  "phone": "+16464701376",
  "website": "http://www.studiosmilesnyc.com/",
  "address": "209 E 56th St, New York",
  "rating": "4.9",
  "reviewCount": 610,
  "category": "Dentist",
  "googleMapsUrl": "https://www.google.com/maps/place/Studio+Smiles+NYC/...",
  "keyword": "dentist near New York",
  "isSponsored": false,
  "Business_Status": "OPERATIONAL",
  "enrichmentStatus": "complete"
}
````

Run 5 keywords × 3 cities and collect **thousands of rows like this** — each with a real phone number and website you can act on today.

***

### Quick start

#### Small test run (~8 leads, under 2 minutes)

```json
{
  "keywords": ["dentist"],
  "locations": ["New York"],
  "maxLeads": 8,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

#### Production run (multi-city, thousands of leads)

```json
{
  "keywords": ["dentist", "orthodontist"],
  "locations": ["New York", "Los Angeles", "Chicago"],
  "maxLeads": 2000,
  "maxPagesPerKeyword": 100,
  "maxContactEnrichmentsPerJob": 500,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

***

### Input reference

| Field | What to enter |
|---|---|
| `keywords` | Business types — e.g. `dentist`, `plumber`, `law firm` |
| `locations` | Cities, states, or zip codes — e.g. `New York`, `Texas`, `90210` |
| `maxLeads` | Total leads to collect (default: 1000) |
| `maxLeadsPerJob` | Cap per keyword × location pair |
| `maxPagesPerKeyword` | How deep to scroll per search (default: 20) |
| `maxContactEnrichmentsPerJob` | Set equal to `maxLeads` for full phone + website enrichment |
| `proxyConfiguration` | Residential proxy — required for reliable cloud runs |
| `requestHandlerTimeoutSecs` | Increase to 900 for large runs |

***

### Export anywhere

After the run, go to **Storage → Datasets → `deduplicated`** and export as:

**CSV · Excel · JSON · XML · JSONL**

Import directly into **HubSpot · Salesforce · Apollo · Instantly · Pipedrive · Google Sheets** or any CSV-compatible tool.

***

### Tips for best results

- Set `maxContactEnrichmentsPerJob` equal to `maxLeads` — this ensures every lead gets phone and website data
- Use specific locations — `"Miami, Florida"` outperforms `"Florida"` for accuracy
- Always enable Residential Apify Proxy for uninterrupted cloud runs
- Set actor memory to **4096 MB** for large production runs
- Download from **`deduplicated`** — not the default dataset

***

### FAQ

**How many leads can I get per run?**
Set `maxLeads` to your target — 100, 1000, or 2000+. The actor stops when the cap is reached or Maps runs out of results.

**Why is phone or website missing for some rows?**
Some Google listings simply do not publish contact details. Filter by `enrichmentStatus: "complete"` for the richest rows.

**Can I scrape any business type?**
Any business visible on Google Maps — dentists, lawyers, gyms, restaurants, contractors, agencies, and more.

**Do I need a proxy?**
Yes. Residential Apify Proxy is required for reliable runs on Apify Cloud.

**Which dataset do I download?**
Always use `deduplicated` — one clean row per business, ready for CRM import.

***

### Disclaimer

Use this actor responsibly and only for lawful purposes. Ensure your outreach complies with applicable laws including TCPA, CAN-SPAM, and GDPR. You are responsible for how you use the data collected.

***

**Click Start, enter your keywords and locations, and download enriched local business leads in minutes.**

# Actor input Schema

## `keywords` (type: `array`):

Business types to find. Add one or more — e.g. dentist, plumber, restaurant.

## `locations` (type: `array`):

Cities or regions to search. Add one or more — e.g. New York, Los Angeles, Texas.

## `maxLeads` (type: `integer`):

Maximum total leads to collect for the run. Default is 3 for a quick test; increase for production (e.g. 100–2000).

## `proxyMode` (type: `string`):

Datacenter is faster and cheaper. Use residential or auto if Google blocks your runs.

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

Apify Proxy settings. Enable Apify Proxy for reliable cloud runs.

## Actor input object example

```json
{
  "keywords": [
    "dentist"
  ],
  "locations": [
    "New York"
  ],
  "maxLeads": 3,
  "proxyMode": "datacenter",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `deduplicated` (type: `string`):

One row per business with phone and website when available. Recommended for export.

## `default` (type: `string`):

Same client export as the deduplicated dataset, written to the default dataset alias.

## `processing` (type: `string`):

Internal enrichment pipeline records, including pending and failed rows.

# 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 = {
    "keywords": [
        "dentist"
    ],
    "locations": [
        "New York"
    ],
    "maxLeads": 3,
    "proxyMode": "datacenter",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jumbled_falcon/geo-local-business-finder").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 = {
    "keywords": ["dentist"],
    "locations": ["New York"],
    "maxLeads": 3,
    "proxyMode": "datacenter",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jumbled_falcon/geo-local-business-finder").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 '{
  "keywords": [
    "dentist"
  ],
  "locations": [
    "New York"
  ],
  "maxLeads": 3,
  "proxyMode": "datacenter",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "US"
  }
}' |
apify call jumbled_falcon/geo-local-business-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jumbled_falcon/geo-local-business-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Map Scraper $0.5/1K Places 📍 Verified Data Every Time",
        "description": "Extract data from hundreds of places fast. Scrape Google Maps by keyword, category, location, URLs & other filters. Get addresses, contact info, opening hours, popular times, prices, menus & more. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.",
        "version": "1.0",
        "x-build-id": "Z9AZ5bLNPBcHnxfpR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jumbled_falcon~geo-local-business-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jumbled_falcon-geo-local-business-finder",
                "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/jumbled_falcon~geo-local-business-finder/runs": {
            "post": {
                "operationId": "runs-sync-jumbled_falcon-geo-local-business-finder",
                "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/jumbled_falcon~geo-local-business-finder/run-sync": {
            "post": {
                "operationId": "run-sync-jumbled_falcon-geo-local-business-finder",
                "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": [
                    "keywords",
                    "locations",
                    "maxLeads"
                ],
                "properties": {
                    "keywords": {
                        "title": "What to search",
                        "minItems": 1,
                        "type": "array",
                        "description": "Business types to find. Add one or more — e.g. dentist, plumber, restaurant.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Where to search",
                        "minItems": 1,
                        "type": "array",
                        "description": "Cities or regions to search. Add one or more — e.g. New York, Los Angeles, Texas.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxLeads": {
                        "title": "Max leads",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum total leads to collect for the run. Default is 3 for a quick test; increase for production (e.g. 100–2000).",
                        "default": 3
                    },
                    "proxyMode": {
                        "title": "Proxy mode",
                        "enum": [
                            "auto",
                            "datacenter",
                            "residential"
                        ],
                        "type": "string",
                        "description": "Datacenter is faster and cheaper. Use residential or auto if Google blocks your runs.",
                        "default": "datacenter"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Enable Apify Proxy for reliable cloud runs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
