# Maps Scraper Fast (`knowten/maps-scraper-fast`) Actor

Scrape Google Maps fast: names, phones, websites, addresses, ratings, reviews count, opening hours and coordinates of every place in any city or country. Optional emails and social profiles. Export to Excel, CSV or JSON.

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

## Pricing

from $0.50 / 1,000 place scrapeds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 📍 Maps Scraper Fast — Google Maps Scraper

Extract **businesses and places from Google Maps** in seconds: names, phone numbers, websites, addresses, ratings, opening hours, categories, coordinates and much more. Turn any Google Maps search into a clean, ready-to-use list of leads.

- ⚡ **Fast and light** — around **1,000 places in under 2 minutes**, using only 256 MB of memory.
- 🌎 **Search any area** — a city, a region, a whole country or your own custom shape on the map.
- 🎯 **Get past Google's limits** — Google Maps only shows ~120 results per search; Maps Scraper Fast automatically covers the whole area so you get **every place**, not just the first page.
- 📇 **Lead generation ready** — phones, websites and optional **emails and social media profiles** from each business website.
- 💰 **Affordable** — $0.50 per 1,000 places, details included; contacts enrichment +$0.25 per 1,000.
- 📤 Export to **Excel, CSV, JSON, HTML or XML**, or connect it to Google Sheets, Zapier, Make, n8n and your own app via API.

***

### 🤔 What can Maps Scraper Fast do?

Type what you are looking for (e.g. *restaurant*, *dentist*, *hotel*) and where (e.g. *New York, USA*), and Maps Scraper Fast returns every matching place on Google Maps as a structured table.

**Popular use cases:**

- 🧲 **Lead generation** — build lists of local businesses with phone, website, email and social profiles for sales and outreach.
- 📊 **Market research** — count, map and compare businesses by category, rating or neighborhood.
- 🕵️ **Competitor tracking** — monitor ratings, review counts, opening hours and new locations of your competitors.
- 🗺️ **Location intelligence** — find the best spot for a new store, analyze coverage, or enrich your CRM with coordinates.
- 🏨 **Travel & hospitality** — collect hotels, restaurants and attractions with ratings and booking links.
- 🤖 **AI & automation** — feed fresh, structured local business data to your AI agents, dashboards and workflows.

***

### 📦 What data does Maps Scraper Fast extract?

| | Data |
| --- | --- |
| 🏢 | Place name, category and all categories, description |
| 📍 | Full address split into street, neighborhood, city, postal code, state and country |
| 🛰️ | Exact coordinates (latitude / longitude) and plus code |
| ☎️ | Phone number (formatted and international) |
| 🌐 | Website |
| ⭐ | Average rating, number of reviews and **star distribution** (1★ to 5★) |
| 🕒 | Opening hours for every day, plus special hours (delivery, takeout…) |
| 🚦 | Open / temporarily closed / permanently closed status |
| ✅ | Amenities and attributes (accessibility, payments, service options, highlights…) |
| 🍽️ | Menu link, price level, table reservation and online ordering links *(when available)* |
| 🏨 | Hotel booking links |
| 👥 | "People also search for" and review keywords *(with place detail page)* |
| 🖼️ | Main image and image count |
| 🔗 | Google Maps URL, Place ID, CID and other identifiers |
| 📧 | **Add-on:** emails, extra phones and social profiles (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest, Discord) from the business website |
| 🗺️ | **Bonus:** an interactive map with all scraped places |

> 💬 **Need the reviews?** Maps Scraper Fast includes a sample of each place's latest reviews. To download the **complete review history** of any place (thousands of reviews, with text, translations, owner responses and photos), use our companion actor **[Maps Reviews Fast](https://apify.com/knowten/maps-reviews-fast)**.

***

### 💰 How much does it cost?

Simple pay-per-result pricing — no subscription, no monthly fee:

| | Price |
| --- | --- |
| 📍 Place | **$0.50 per 1,000 places** ($0.0005 each) |
| 📧 Company contacts enrichment add-on (optional) | **+$0.25 per 1,000 places** — charged only when contacts are found |

- ✅ **Details included** — the place detail page costs **nothing extra**.
- ✅ **Pay only for results** — you are charged per place delivered, never for empty searches.
- ✅ **Stay in control** — set a maximum cost per run and the scraper stops exactly there.

With the Apify Free plan's monthly credits you can scrape thousands of places for free.

***

### 🚀 How to scrape Google Maps

1. Click **Try for free**.
2. Enter one or more **search terms** — e.g. `restaurant`, `coffee shop`, `plumber`.
3. Enter the **location** — e.g. `Miami, USA` or `Madrid, Spain`.
4. Choose how many places you want per search term (leave empty to get them all).
5. *(Optional)* Add filters: minimum rating, with/without website, skip closed places, categories.
6. *(Optional)* Turn on **Company contacts enrichment** to get emails and social profiles.
7. Click **Start** and download your data in the format you need.

That's it — no coding needed.

#### 💡 Tips for the best results

- **One idea per search term.** Use `dentist` and `orthodontist` as two terms instead of `dentists and orthodontists`.
- **Keep the location in the Location field**, not in the search term (`pizza` + `Chicago, USA` rather than `pizza in Chicago`). Maps Scraper Fast then covers the whole city automatically.
- **Need a very specific area?** Use **Custom search area** to draw a polygon or a circle (see below).
- **Already have the places?** Paste Google Maps URLs or Place IDs to get their data directly.

***

### ⬇️ Input

The most important fields:

| Field | What it does | Example |
| --- | --- | --- |
| 🔍 Search terms | What you would type into Google Maps | `["restaurant", "cafe"]` |
| 📍 Location | City, region or country | `New York, USA` |
| 💯 Number of places | Max places per search term (empty = all) | `500` |
| 🌍 Language | Language of the results | `en` |
| ⭐ Minimum stars | Skip places rated below this | `4` |
| 🌐 Website filter | Only places with / without a website | `withoutWebsite` |
| 🎢 Place categories | Keep only places in these categories | `["dentist"]` |
| 🔗 Google Maps URLs / Place IDs | Scrape specific places or searches | `https://www.google.com/maps/place/...` |
| 📧 Company contacts enrichment | Emails and social profiles from websites | `true` |

Example input:

```json
{
  "searchStringsArray": ["restaurant"],
  "locationQuery": "New York, USA",
  "maxCrawledPlacesPerSearch": 500,
  "language": "en",
  "placeMinimumStars": "four",
  "scrapeContacts": true
}
```

Already using another Google Maps scraper? **Your existing input works as-is** — just paste it.

***

### ⬆️ Output

You get one row per place. Preview it as a table in the **Overview** or **Contacts** view, or download it. Example item:

```json
{
  "title": "The Battery Urban Farm",
  "categoryName": "Garden",
  "address": "State St &, Battery Pl, New York, NY 10004",
  "neighborhood": "Manhattan",
  "city": "New York",
  "postalCode": "10004",
  "state": "NY",
  "countryCode": "US",
  "website": "http://www.thebattery.org/projects/urban-farm/",
  "phone": "(212) 344-3491",
  "phoneUnformatted": "+12123443491",
  "location": { "lat": 40.7028339, "lng": -74.0150933 },
  "totalScore": 4.6,
  "reviewsCount": 2064,
  "reviewsDistribution": { "oneStar": 8, "twoStar": 20, "threeStar": 122, "fourStar": 453, "fiveStar": 1461 },
  "openingHours": [{ "day": "Monday", "hours": "8 AM to 3 PM" }],
  "additionalInfo": { "Accessibility": [{ "Wheelchair accessible entrance": true }] },
  "placeId": "ChIJF_GzrxNawokR20ZFHpJIVR8",
  "url": "https://www.google.com/maps/search/?api=1&query=The%20Battery%20Urban%20Farm&query_place_id=ChIJF_GzrxNawokR20ZFHpJIVR8",
  "imageUrl": "https://lh3.googleusercontent.com/...",
  "emails": ["info@thebattery.org"],
  "instagrams": ["https://www.instagram.com/thebatterynyc"]
}
```

#### 🗺️ Map view

At the end of every run you also get an **interactive map** with all scraped places (key-value store → `results-map`). Perfect for a quick visual check of your area.

***

### 📍 Choosing the search area

#### Location, country, state, county, city and postal code

The easiest way is the **Location** field (`Berlin, Germany`). You can also combine **Country**, **State**, **County**, **City** and **Postal code** for more precision — e.g. country `us` + state `Texas` to cover the whole state.

#### 🛰️ Custom search area

Draw exactly the area you need with **Custom search area**. Coordinates are `[longitude, latitude]`.

**💠 Polygon**

```json
{
  "type": "Polygon",
  "coordinates": [[
    [-0.322813, 51.597165], [-0.314990, 51.388023], [0.060493, 51.389199],
    [0.051936, 51.600360], [-0.322813, 51.597165]
  ]]
}
```

**💠💠 MultiPolygon** — several areas in one run:

```json
{
  "type": "MultiPolygon",
  "coordinates": [
    [[[-74.02, 40.70], [-73.97, 40.70], [-73.97, 40.75], [-74.02, 40.75], [-74.02, 40.70]]],
    [[[-73.96, 40.67], [-73.92, 40.67], [-73.92, 40.70], [-73.96, 40.70], [-73.96, 40.67]]]
  ]
}
```

**🔘 Circle** — a point and a radius:

```json
{ "type": "Point", "coordinates": [-73.9857, 40.7484], "radiusKm": 2 }
```

***

### ⚙️ Add-ons

#### 📧 Company contacts enrichment

Turn on **Add-on: Company contacts enrichment** and Maps Scraper Fast visits each business website to collect **emails, additional phone numbers and social media profiles** (Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest, Discord). Ideal for outreach campaigns. It costs **+$0.25 per 1,000 places**, charged only for places where contacts are found. 💡 Tip: set the run memory to **1 GB** for about 3x faster runs with this add-on.

#### 🔎 Place detail page

Turn on **Scrape place detail page** for extra information such as the owner's description, plus code, "located in", "people also search for", review keywords and reservation links.

***

### ❓ FAQ

#### How does Maps Scraper Fast work?

It searches Google Maps the same way you would, splits large areas into smaller zones so no place is missed, removes duplicates and delivers every result as a structured dataset.

#### Why not use the official Google Maps API?

The official Places API is expensive, returns a limited set of fields, caps results per search and requires a billing account and API keys. Maps Scraper Fast gives you more data per place, covers whole cities and countries, and needs no setup.

#### How many places can I get?

As many as Google Maps has for your search and area. Leave **Number of places** empty to get them all — large cities often return thousands of results per category.

#### Can I scrape several locations or categories at once?

Yes. Add as many search terms as you want; each one is searched in the whole area. For several separate regions use **Custom search area** with a MultiPolygon, or run the actor once per location.

#### How fast is it?

Typically around **1,000 places in under 2 minutes**. Enabling contacts enrichment visits every business website, so it takes longer: about 1,000 places in 9 minutes with the default 256 MB, or **under 3 minutes with 1 GB** of memory (Run options → Memory); the place detail page also adds a bit of time per place.

#### Can I get Google Maps reviews?

Maps Scraper Fast includes the rating, review count, star distribution and a sample of the latest reviews. For the **full list of reviews** of any place, use **[Maps Reviews Fast](https://apify.com/knowten/maps-reviews-fast)**.

#### Can I integrate it with other apps?

Yes. Connect Maps Scraper Fast to Google Sheets, Google Drive, Slack, Zapier, Make, n8n, Airbyte, GitHub and more through Apify integrations, or receive results via webhooks.

#### Can I use it as an API, or from Python / JavaScript?

Yes. Every run is available through the Apify API. Use the official Apify clients for Python and JavaScript, or call it from any language — see the **API** tab for ready-to-copy code.

#### Can I schedule it?

Yes. Use Apify Schedules to run it daily, weekly or monthly and keep your lists always up to date.

#### Is it legal to scrape Google Maps?

Maps Scraper Fast only collects publicly available business information. Personal data is protected by regulations such as GDPR; only collect it if you have a legitimate reason, and consult a lawyer if you are unsure.

#### I have a question or found a problem

Open an issue in the **Issues** tab — we answer quickly and are always happy to add features you need.

# Actor input Schema

## `searchStringsArray` (type: `array`):

What you would type into the Google Maps search bar, e.g. <code>restaurant</code>, <code>dentist</code> or <code>coffee shop</code>. Each term is searched separately. Tip: keep the location in the Location field below, not here, to cover the whole area.

## `locationQuery` (type: `string`):

City, region or country, e.g. <code>New York, USA</code> or <code>Bogotá, Colombia</code>. The whole area is covered automatically, so you get far more than the ~120 results Google Maps shows per search.

## `maxCrawledPlacesPerSearch` (type: `integer`):

Maximum number of places per search term or URL. Leave empty to get every place in the area.

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

Language of the results (categories, opening hours, attributes).

## `categoryFilterWords` (type: `array`):

Keep only places whose Google category contains one of these words (e.g. <code>dentist</code>). If you leave Search terms empty, these categories are searched instead.

## `searchMatching` (type: `string`):

Keep only places whose name matches the search term.

## `placeMinimumStars` (type: `string`):

Skip places rated below this.

## `website` (type: `string`):

Great for lead generation: keep only places with a website, or only those without one.

## `skipClosedPlaces` (type: `boolean`):

Skip places marked as temporarily or permanently closed.

## `scrapePlaceDetailPage` (type: `boolean`):

Get extra information for each place: owner's description, plus code, 'located in', 'people also search for', review keywords, reservation links and a sample of reviews and photos. Takes a bit longer.

## `scrapeTableReservationProvider` (type: `boolean`):

Add table reservation providers (OpenTable, Resy...) to the output.

## `maxReviews` (type: `integer`):

Number of latest reviews to include per place (a short sample). For the complete review history of any place, use our Maps Reviews Fast actor.

## `reviewsStartDate` (type: `string`):

Only include reviews newer than this date.

## `reviewsSort` (type: `string`):

Order of the included reviews.

## `reviewsFilterString` (type: `string`):

Only include reviews containing this text.

## `reviewsOrigin` (type: `string`):

Source of the included reviews.

## `scrapeReviewsPersonalData` (type: `boolean`):

Include the reviewer's name, ID, profile URL and photo. Personal data is protected by GDPR and similar laws; only enable it if you have a legitimate reason.

## `maxImages` (type: `integer`):

Number of image URLs per place.

## `scrapeImageAuthors` (type: `boolean`):

Include the author of each image when available.

## `scrapeContacts` (type: `boolean`):

Visit each business website and collect emails, extra phone numbers and social media profiles (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest, Discord). Perfect for outreach. Costs +$0.25 per 1,000 places, charged only when contacts are found.

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

Two-letter country code (e.g. <code>us</code>). Used when Location is empty, together with the fields below.

## `city` (type: `string`):

City name, e.g. <code>Pittsburgh</code>.

## `state` (type: `string`):

State or region, e.g. <code>Texas</code>.

## `county` (type: `string`):

County, e.g. <code>Madison</code>.

## `postalCode` (type: `string`):

Postal code, e.g. <code>10001</code>.

## `customGeolocation` (type: `object`):

Draw your own search area: GeoJSON <code>Polygon</code>, <code>MultiPolygon</code> or <code>Point</code> with <code>radiusKm</code> for a circle. Coordinates are \[longitude, latitude]. See the README for examples.

## `startUrls` (type: `array`):

Already have the places or searches? Paste Google Maps place URLs, search URLs or short links (maps.app.goo.gl).

## `placeIds` (type: `array`):

Google Place IDs (e.g. <code>ChIJjaFpo0ZawokRBcOFUZ13CaE</code>).

## `maxConcurrency` (type: `integer`):

How many requests run in parallel. The default is the best balance of speed and reliability.

## `fullViewRetries` (type: `integer`):

With the place detail page on, how many times to retry a place when Google returns incomplete details (missing price, menu or popular times). Higher = more complete data, slightly slower.

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

Apify Proxy is recommended and used by default.

## `scrapeSocialMediaProfiles` (type: `object`):

Accepted for input compatibility. Social links come from scrapeContacts.

## `includeWebResults` (type: `boolean`):

Accepted for input compatibility; not supported.

## `scrapeDirectories` (type: `boolean`):

Accepted for input compatibility; not supported.

## `maxQuestions` (type: `integer`):

Accepted for input compatibility; not supported.

## `maximumLeadsEnrichmentRecords` (type: `integer`):

Accepted for input compatibility; not supported.

## `verifyLeadsEnrichmentEmails` (type: `boolean`):

Accepted for input compatibility; not supported.

## `enableCompetitorAnalysis` (type: `boolean`):

Accepted for input compatibility; not supported.

## `maxCompetitorsToAnalyze` (type: `integer`):

Accepted for input compatibility; not supported.

## `scrapeOrderOnline` (type: `boolean`):

Accepted for input compatibility; googleFoodUrl is always included when available.

## `allPlacesNoSearchAction` (type: `string`):

Accepted for input compatibility; not supported.

## Actor input object example

```json
{
  "searchStringsArray": [
    "restaurant"
  ],
  "locationQuery": "New York, USA",
  "maxCrawledPlacesPerSearch": 50,
  "language": "en",
  "searchMatching": "all",
  "placeMinimumStars": "",
  "website": "allPlaces",
  "skipClosedPlaces": false,
  "scrapePlaceDetailPage": false,
  "scrapeTableReservationProvider": false,
  "maxReviews": 0,
  "reviewsSort": "newest",
  "reviewsOrigin": "all",
  "scrapeReviewsPersonalData": true,
  "maxImages": 0,
  "scrapeImageAuthors": false,
  "scrapeContacts": false,
  "maxConcurrency": 20,
  "fullViewRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `resultsMap` (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 = {
    "searchStringsArray": [
        "restaurant"
    ],
    "locationQuery": "New York, USA",
    "maxCrawledPlacesPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("knowten/maps-scraper-fast").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 = {
    "searchStringsArray": ["restaurant"],
    "locationQuery": "New York, USA",
    "maxCrawledPlacesPerSearch": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("knowten/maps-scraper-fast").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 '{
  "searchStringsArray": [
    "restaurant"
  ],
  "locationQuery": "New York, USA",
  "maxCrawledPlacesPerSearch": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call knowten/maps-scraper-fast --silent --output-dataset

```

## MCP server setup

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

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/3wT6NyPfxgVhf3ylX/builds/jGMmQmvJ87r4TVirD/openapi.json
