# Google Maps Scraper (`scrapedrift/google-maps-scraper`) Actor

Google Maps Scraper extracts business data from locations, keywords, categories, URLs, GPS coordinates, and place IDs. Collect names, addresses, phones, websites, ratings, reviews, hours, coordinates, attributes, emails, social links, and team contacts in structured output.

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

## Pricing

from $2.99 / 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

Google Maps Scraper extracts structured business data from Google Maps based on locations, keywords, categories, URLs, GPS coordinates, or place IDs. You can collect business names, addresses, phone numbers, websites, ratings, categories, coordinates, opening hours, and available place attributes.

Need more than basic listing data? The Actor can also visit business websites to find emails, phone numbers, social media links, and team contacts. This makes it useful for Google Maps data extraction, local lead generation, business research, competitor analysis, and market research.

You can process multiple locations and search terms in one run, with duplicate places merged automatically. The results appear in a structured dataset, making the Actor practical for Google Maps bulk scraping, business data collection, and location-based prospecting.

### What does Google Maps Scraper do?

Google Maps Scraper extracts structured business listings from Google Maps based on locations, keywords, categories, search URLs, GPS coordinates, or exact place IDs. It can collect business names, addresses, phone numbers, websites, ratings, categories, coordinates, opening hours, place IDs, and available attributes.

Our Google Maps data scraper also supports contact enrichment. When enabled, it visits each business's own website to find available email addresses, phone numbers, social media profiles, and named team contacts.

You can search across multiple locations and keywords in one run, making it useful for Google Maps data extraction, local business research, lead generation, market research, and business intelligence. Results appear in the live output table and a merged maps.json copy is saved to the Key-Value Store.

### What can Google Maps Scraper extract?

The Google Maps business scraper can collect business listing information and, when contact enrichment is enabled, additional contact data from business websites.

| Data field | Description |
| --- | --- |
| name | Business or place name |
| street\_address | Street-level business address |
| city | Business city |
| state | State or region |
| zip | Postal or ZIP code |
| country\_code | Country code |
| full\_address | Complete formatted address |
| website | Business website URL |
| phone | Primary phone number |
| avg\_rating | Available average rating |
| total\_reviews | Available review count |
| tags | Business categories or tags |
| place\_id | Google place identifier |
| lat | Latitude coordinate |
| long | Longitude coordinate |
| hours | Available opening hours |
| attributes | Accessibility, service, and amenity attributes |
| emails | Emails found during website enrichment |
| phones | Additional phone numbers found |
| facebooks | Facebook links found |
| instagrams | Instagram links found |
| linkedIns | LinkedIn links found |
| twitters | Twitter/X links found |
| youtubes | YouTube links found |
| tiktoks | TikTok links found |
| pinterests | Pinterest links found |
| teamContacts | Named team or staff contacts found |
| success | Indicates successful processing |

The available data depends on what Google provides for a place and what the business website exposes.

### 🔑 Key Features of Google Maps Scraper

Google Maps Scraper combines business search, location targeting, data extraction, and optional contact enrichment in one workflow. You can collect structured Google Maps business data from different search inputs and prepare it for research, analysis, local lead generation, or sales workflows.

#### 🗺️ Google Maps Data Scraping

The Actor performs Google Maps scraping to collect structured information from supported business listings. Depending on the available listing data, results can include business names, addresses, websites, phone numbers, ratings, categories, coordinates, hours, and place IDs.

This makes it useful for Google Maps data extraction, business discovery, and local market research.

#### 🔎 Keyword-Based Search

Search for businesses using specific terms such as coffee shops, dentists, or hotels near airport. The Actor combines your keywords with selected locations to find relevant Google Maps search results.

You can add multiple keywords when building a broader Google Maps search scraper workflow.

#### 📍 Location-Based Search

Enter cities, regions, districts, or neighborhoods to control where the Actor searches. Each location can work with multiple keywords or business categories.

This supports Google Maps location data collection for local businesses, nearby businesses, and geographic market research.

#### 🏷️ Business Category Search

Search for specific business types such as restaurants, hair salons, hotels, or auto repair shops. Categories can work together with keywords or replace them when appropriate.

This provides a practical Google Maps business scraper workflow for finding businesses within specific industries.

#### 🔗 Google Maps URL Scraping

You can provide Google Maps search-result URLs instead of creating every search manually. This is useful when you already have bookmarked searches or predefined Maps queries.

The Actor processes these URLs as part of its Google Maps listings scraper workflow.

#### 🆔 Place ID Lookup

Fetch a specific business using its Google place ID or a full Google Maps place-page URL. This provides a direct way to perform Google Maps place data extraction without running a location-based keyword search.

It is useful when you already know which businesses you want to collect.

#### 🎯 GPS-Based Search

Search around an exact geographic point by providing latitude and longitude. This gives you more precise control than searching only by city or neighborhood.

The feature supports Google Maps geo coordinates, location-based discovery, and geographic business data collection.

#### 📏 Custom Search Radius

Set a search radius between 0.1 km and 50 km when using GPS coordinates. This controls the geographic area around your selected point.

For example, you can search for businesses within a specific distance from a store, office, or other location.

#### 📊 Bulk Location Processing

Add multiple locations and keywords to one run instead of processing each combination separately. The Actor combines the supplied search inputs and removes duplicate places from the final results.

This makes it suitable for Google Maps bulk scraping, batch data collection, and multi-location research.

#### 📇 Contact Enrichment

Enable contact enrichment to visit each business's own website and search for available contact information. The Actor can return available emails, phone numbers, social media links, and named team contacts.

This adds a Google Maps contact scraper workflow to the business data collection process.

#### 📧 Email Filtering

You can keep only businesses where at least one email address was found on the business website. This helps narrow a large business dataset into more specific prospecting lists.

It is particularly useful for Google Maps email extraction and local lead generation workflows.

#### 🌐 Website Filtering

Enable the website filter to exclude businesses that do not have a website listed. This keeps the results focused on places where the contact enrichment process has a website to visit.

It can help create cleaner business website data for prospecting and research.

#### ⭐ Ratings Data

The Actor can collect available business ratings and review counts from supported listings. These fields help you compare businesses based on their public rating information.

You can use this data for Google Maps ratings scraping, competitor research, and local market analysis.

#### 🕐 Opening Hours

Available business opening hours can be included in the extracted results. The output can contain the day, opening time, closing time, and related hour information.

This makes the dataset useful for analyzing Google Maps business hours and operating schedules.

#### ♿ Place Attributes

The Actor can include available accessibility, service-option, and amenity information returned with the place data. Examples include wheelchair accessibility, delivery options, and outdoor seating when available.

These attributes add more context to the extracted Google Maps structured business data.

#### 🖼️ Cover Photos

You can optionally retrieve a business's cover photo URL. Photo collection is disabled by default and can be enabled when visual business information is useful.

The Actor supports a configurable maximum of 1–10 photos per place when photo collection is enabled.

#### 📦 Structured Output

Results are returned as organized business and contact data instead of requiring manual copying from individual listings. Available fields can include names, addresses, websites, phone numbers, ratings, categories, coordinates, hours, attributes, and contact information.

This makes the output suitable for Google Maps data analysis, business databases, JSON workflows, CSV exports, and other processing tasks.

#### 🔄 Duplicate Merging

The Actor automatically merges duplicate places found across different locations, keywords, URLs, or place IDs. This helps prevent the same business from appearing repeatedly in the final dataset.

It is especially useful for Google Maps multiple locations scraper workflows where search inputs overlap.

#### 📤 Live Results

Results appear in the output table as businesses are found during the Actor run. You can monitor the collected data instead of waiting until the entire process finishes.

A merged copy is also saved to the Key-Value Store as maps.json.

Together, these features make the Actor useful as a Google Maps scraper tool, Google Maps extraction tool, and Google Maps data collection tool for business discovery, local research, competitor analysis, and lead workflows.

### ⚙️ How Does Google Maps Scraper Work?

Google Maps Scraper collects Google Maps business data based on locations, keywords, categories, Maps URLs, GPS coordinates, or exact place IDs. It then returns structured business information and can optionally visit each business website to find contact details.

#### 1. 📍 Choose Where to Search

Start by entering one or more locations, such as cities, regions, neighborhoods, or districts. You can combine multiple locations with multiple keywords for broader Google Maps data extraction.

You can also search around an exact latitude and longitude by setting a search radius.

#### 2. 🔎 Add Keywords or Business Categories

Enter what you want to find, such as coffee shops, dentists, hotels, restaurants, contractors, or agencies. Each location is combined with the selected keywords or categories.

This makes the Actor useful for Google Maps search scraping, local business discovery, and location-based lead generation.

#### 3. 🔗 Use Google Maps URLs or Place IDs

You can also skip a regular keyword search. Add Google Maps search-result URLs for reusable searches or provide exact Google place IDs or place URLs.

Place IDs let the Actor fetch specific businesses without running a location or keyword search.

#### 4. 📊 Set the Result Limit

Choose how many unique places you want to collect. The Actor supports up to 10,000 results per run.

Duplicate businesses found through different locations, keywords, URLs, or place IDs are merged automatically.

#### 5. 🕵️ Enrich Business Contact Data

Enable the contact finder to turn the workflow into a Google Maps business data scraper and lead-generation tool.

The Actor can visit each business's own website and look for available:

- 📧 Email addresses

- ☎️ Phone numbers

- 🔗 Social media links

- 👤 Named team or staff contacts

You can also require a website or keep only businesses where an email address was found.

#### 6. 📌 Collect Business Details

The Actor extracts available Google Maps business information, including:

- Business name

- Address

- Website

- Phone number

- Rating

- Review count

- Business categories

- Latitude and longitude

- Place ID

- Opening hours

- Accessibility and amenity attributes

Depending on your configuration, it can also collect a cover photo URL.

#### 7. 📤 Review and Export the Results

Results appear in the live output table as the Actor processes businesses. A merged copy is also saved to the Key-Value Store as maps.json.

You can use the structured dataset for Google Maps business intelligence, market research, competitor research, local SEO, sales prospecting, or business directory data collection.

#### 🔄 The Workflow at a Glance

Location / Keyword / Category / Maps URL / Place ID\
↓\
Google Maps search or direct place lookup\
↓\
Business information extraction\
↓\
Optional website contact enrichment\
↓\
Duplicate removal\
↓\
Structured business dataset\
↓\
Live output + maps.json

### How to use Google Maps Scraper

Using the Google Maps search scraper is straightforward. You can start with a location and keyword, or provide a more specific search source.

#### 1. Add locations

Enter one or more cities, regions, districts, or neighborhoods.

For example:

Austin, Texas

You can add multiple locations when performing Google Maps multiple locations scraper tasks.

#### 2. Add keywords

Enter the businesses or services you want to find.

For example:

coffee shops

dentists

coworking spaces

hotels near airport

Each location can be combined with every keyword.

#### 3. Set the result limit

Choose how many unique places the Actor collects.

The current configuration supports between 1 and 10,000 results, with a default of 20.

#### 4. Enable contact enrichment

Turn on contact scraping when you also want business website information.

The Google Maps contact scraper can look for:

- Email addresses

- Phone numbers

- Facebook profiles

- Instagram profiles

- LinkedIn profiles

- Twitter/X profiles

- YouTube profiles

- TikTok profiles

- Pinterest profiles

- Team contacts

#### 5. Start the Actor

Run the Actor and monitor results as they appear in the output table.

#### 6. Review and export the data

After processing, review the structured dataset and use the resulting data in your preferred workflow.

A merged copy is also stored as:

maps.json

### Google Maps Scraper output format

The Google Maps data extractor returns structured JSON records for each processed place. Business information and website contact enrichment appear in separate fields within the same record.

#### ⬇️ Input

A typical input can look like this:

```json
{

  "locations": \[

    "Austin, Texas"

  \],

  "keywords": \[

    "coffee shops"

  \],

  "maxResults": 1,

  "scrapeContacts": true,

  "onlyWithWebsite": false,

  "onlyWithEmail": false,

  "contactFetchTimeoutSecs": 15,

  "radiusKm": 5,

  "openNowOnly": false,

  "includePlaceAttributes": true,

  "includePhotos": false,

  "maxPhotosPerPlace": 3

}
```

You can also use Google Maps search URLs, place IDs, GPS coordinates, and business categories depending on your search workflow.

#### ⬆️ Output

A processed place can return information similar to this:

```json
{

  "street\_address": "220 Ralph Ablanedo Dr Suite 110",

  "city": "Austin",

  "zip": "78748",

  "state": "Texas",

  "country\_code": "US",

  "full\_address": "220 Ralph Ablanedo Dr Suite 110 Austin Texas 78748 US",

  "website": "https://www.switchbackcoffeebeer.com/",

  "avg\_rating": 4.9,

  "total\_reviews": null,

  "name": "Switchback Coffee and Beer",

  "tags": \[

    "Coffee shop",

    "Bar"

  \],

  "notes": null,

  "place\_id": "ChIJn-xFGOJNW4YRYl5vSE6S-LA",

  "phone": "(512) 666-4751",

  "lat": 30.174719399999997,

  "long": -97.7903376,

  "hours": \[

    {

      "day": "Friday",

      "hours": "7 AM-10 PM",

      "open24Hour": 7,

      "close24Hour": 22

    }

  \],

  "attributes": {

    "accessibility": {

      "label": "Accessibility",

      "items": \[

        "Wheelchair accessible entrance",

        "Wheelchair accessible parking lot",

        "Wheelchair accessible restroom",

        "Wheelchair accessible seating"

      \]

    }

  },

  "success": true,

  "emails": \[\],

  "phones": \[

    "748 (512) 666-4751"

  \],

  "facebooks": \[

    "http://www.facebook.com/2008/fbml"

  \],

  "instagrams": \[

    "https://www.instagram.com/switchbackcoffeebeer"

  \],

  "linkedIns": \[\],

  "twitters": \[\],

  "youtubes": \[\],

  "tiktoks": \[\],

  "pinterests": \[\],

  "teamContacts": \[\]

}
```

This example demonstrates the type of structured Google Maps business data the Actor can return. Actual results vary by place and available source information.

### 🎯 Use Cases of Google Maps Scraper

The Google Maps lead scraper supports several practical business and research workflows.

#### Local Lead Generation

Build lists of local businesses using location and keyword combinations. This works for agencies, sales teams, recruiters, and other organizations researching potential prospects.

#### Google Maps Lead Generation

Use business names, websites, phone numbers, addresses, categories, and available contact information to create targeted prospect lists.

The Actor can function as a Google Maps lead generation tool, Google Maps lead finder, or Google Maps prospecting tool depending on how you use the extracted data.

#### Local Business Research

Collect Google local business data to understand businesses operating within specific cities, regions, or neighborhoods.

#### Market Research

Use Google Maps market research to identify businesses, categories, locations, ratings, and local market patterns.

#### Competitor Research

Collect business listings for Google Maps competitor research and compare businesses across locations, categories, ratings, websites, and other available attributes.

#### Local SEO Research

Use Google Maps local SEO data to study local businesses, categories, ratings, addresses, websites, and geographic coverage.

#### Sales Prospecting

Create targeted Google Maps sales leads, local leads, or B2B prospect lists from relevant business categories and locations.

#### Business Directory Building

Create structured datasets containing business listings, contact information, websites, categories, addresses, and location data.

#### Location Intelligence

Use Google Maps location data, coordinates, business categories, and geographic information for local market analysis and geographic research.

#### Industry-Specific Research

The Actor can support searches for businesses such as:

- Restaurants

- Hotels

- Dentists

- Law firms

- Contractors

- Marketing agencies

- Real estate businesses

- Retail stores

- Service businesses

This makes it suitable for workflows involving a restaurant data scraper, hotel data scraper, dentist business scraper, law firm business scraper, or contractor business scraper.

### 💰 How much will Google Maps Scraper cost you?

Google Maps Scraper costs from $2.99 per 1,000 results, making it suitable for both small tests and larger Google Maps data extraction workflows.

You can control your spending by setting the maximum result count before starting a run. Start with a smaller dataset to review the output, then increase the limit when you are ready for larger Google Maps bulk scraping.

Contact enrichment can add website requests because the Actor visits each business's own website when contact scraping is enabled. Photo collection also adds an extra request per place when enabled.

For larger Google Maps data collection jobs, check the Actor's current pricing configuration before running a high-volume extraction.

### Is it legal to scrape Google Maps?

The legality of Google Maps scraping depends on factors such as your location, intended use, the data involved, and applicable laws or contractual terms.

Publicly accessible business information can still be subject to platform terms, privacy requirements, intellectual property rules, and other legal restrictions. Contact information requires additional care, particularly when used for marketing or outreach.

Use the extracted information responsibly, respect applicable laws and platform policies, and avoid treating scraped data as permission for unsolicited communication.

This Actor is an independent third-party tool and is not affiliated with or endorsed by Google.

### Google Maps Scraper input parameters

The Actor provides several ways to define what you want to collect.

| Input | Required | Description |
| --- | --- | --- |
| locations | No | Cities, regions, districts, or neighborhoods to search |
| keywords | No | Search phrases such as coffee shops or dentists |
| urls | No | Google Maps search-result URLs |
| maxResults | No | Number of unique places to collect, from 1 to 10,000 |
| proxyConfiguration | No | Optional Apify Proxy configuration |
| scrapeContacts | No | Enables website contact enrichment |
| onlyWithWebsite | No | Keeps places that have a website |
| onlyWithEmail | No | Keeps places where an email was found |
| contactFetchTimeoutSecs | No | Website fetch timeout from 1 to 60 seconds |
| placeIds | No | Exact Google place IDs or place-page URLs |
| lat | No | Latitude for coordinate-based searches |
| lng | No | Longitude for coordinate-based searches |
| radiusKm | No | Search radius from 0.1 km to 50 km |
| categories | No | Business categories to search |
| openNowOnly | No | Adds an open-now preference to the search |
| includePlaceAttributes | No | Includes available accessibility and amenity attributes |
| includePhotos | No | Retrieves cover photo URLs |
| maxPhotosPerPlace | No | Limits returned photo URLs when photos are enabled |

#### Search by location and keyword

This is the simplest workflow for a Google Maps keyword scraper.

For example:

Location: Austin, Texas

Keyword: coffee shops

#### Search from a Maps URL

You can provide a Google Maps search-result URL when you already have a specific search bookmarked or prepared.

This supports a practical Google Maps URL scraper workflow without recreating the search manually.

#### Search by place ID

Use a Google place ID or full place-page URL when you want to retrieve a specific business.

This works well for precise Google Maps place ID scraper workflows.

#### Search by GPS coordinates

Set latitude and longitude to search around an exact geographic point.

The radiusKm value controls the search area.

This makes the Actor useful for Google Maps coordinates scraper, Google Maps latitude longitude scraper, and Google Maps geo coordinates workflows.

#### Search by category

Use categories such as:

restaurant

hair salon

auto repair

Categories can be combined with keywords or used instead of keywords.

### ⚙️ During the Actor Run

The Actor processes your configured searches and adds discovered businesses to the output as they become available.

#### 📍 Searches Are Processed Together

The Actor can work with locations, keywords, Google Maps search URLs, place IDs, GPS coordinates, and business categories. These inputs can be combined within the same run to expand your Google Maps data extraction.

For example, you can search multiple cities for the same business category instead of running separate jobs.

#### 🔄 Duplicate Places Are Merged

When the same business appears through different searches, the Actor automatically merges duplicate places. This keeps the final Google Maps business dataset cleaner and reduces repeated records.

This is particularly useful when running Google Maps bulk data extraction across overlapping locations or keywords.

#### 📊 Results Appear in Real Time

As businesses are discovered, their records stream into the live output table. You can monitor the extracted business data while the Actor continues processing the remaining searches.

The final results can include business details such as names, addresses, phone numbers, websites, ratings, categories, coordinates, hours, and place IDs.

#### 📇 Contact Enrichment Runs Separately

When contact scraping is enabled, the Actor visits each business's own website to look for available contact information.

The enrichment process can find:

- Email addresses

- Phone numbers

- Social media links

- Named team or staff contacts

This turns a basic Google Maps business listing scraper into a broader business data and contact enrichment workflow.

#### 🌐 Website-Based Data Enrichment

The Actor uses the business website for additional contact discovery rather than treating Google Maps as the only data source.

This means your results can combine Google Maps business information with website-based contact details in the same dataset.

#### 🛡️ Optional Proxy Configuration

For heavier or more demanding runs, you can configure Apify Proxy. Proxy settings are optional, so they can remain disabled for lighter extraction jobs.

#### ⏱️ Run and Resource Limits

The current Actor configuration provides a maximum run timeout of 3,600 seconds and uses 4 GB of memory.

These settings define the available runtime and memory for the Actor while processing your Google Maps scraping tasks.

### Final Note

Google Maps Scraper is designed for collecting structured business listing and location data from Google Maps searches. You can search by location, keyword, category, Maps URL, GPS coordinates, or exact place ID.

The contact enrichment option adds another layer by checking business websites for available emails, phone numbers, social profiles, and team contacts. That makes the Actor useful for Google Maps data mining, business intelligence, local market research, lead generation, competitor research, and location-based data collection.

Use the result fields that matter to your workflow, start with a smaller run, and increase the result limit when you are ready for broader Google Maps bulk data extraction.

### FAQ

#### What is Google Maps Scraper?

Google Maps Scraper is a data extraction tool for collecting structured business and place information from Google Maps searches. It can also enrich listings with contact information found on business websites.

#### What data can I extract from Google Maps?

Depending on the available listing data, you can extract business names, addresses, phone numbers, websites, ratings, review counts, categories, coordinates, place IDs, opening hours, and available attributes.

#### Can Google Maps Scraper find business emails?

Yes. When contact scraping is enabled, the Actor visits the business's own website and looks for available email addresses.

#### Can I extract phone numbers from Google Maps?

Yes. The Actor can return the available business phone number and can also collect additional phone numbers found during website contact enrichment.

#### Can I scrape multiple Google Maps locations?

Yes. You can provide multiple locations and keywords in one run. The Actor combines those inputs and merges duplicate places.

#### Can I scrape Google Maps using keywords?

Yes. You can provide search terms such as coffee shops, dentists, hotels, or other business-related queries.

#### Can I search Google Maps by coordinates?

Yes. Provide latitude and longitude, then define a search radius between 0.1 km and 50 km.

#### Can I scrape specific Google Maps places?

Yes. You can provide exact Google place IDs or full Google Maps place-page URLs for specific places.

#### Can I collect Google Maps reviews?

The Actor's documented output includes available rating and review-count fields. It is primarily designed for business listing and contact data extraction rather than dedicated review-text extraction.

#### Can I collect Google Maps business websites?

Yes. Available business website URLs are returned in the website field.

#### Can I collect business social media profiles?

When contact enrichment finds social links on a business website, the Actor can return available Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok, and Pinterest links.

#### Can I filter businesses without websites?

Yes. Enable onlyWithWebsite to exclude places without an available website.

#### Can I keep only businesses with email addresses?

Yes. Enable onlyWithEmail to keep only places where at least one email address was found during contact enrichment.

#### Does Google Maps Scraper support photos?

Yes. You can enable cover photo collection with includePhotos. The maxPhotosPerPlace parameter controls the photo URL limit.

#### What output format does Google Maps Scraper provide?

The Actor produces structured records that can be viewed in the output dataset. A merged maps.json copy is also saved to the Key-Value Store.

#### What is the maximum number of results?

The current maxResults parameter supports up to 10,000 unique places per run.

#### Does Google Maps Scraper support API access?

Actors can be started and their results retrieved programmatically through the platform's API. API inputs can be supplied according to the Actor's configured input schema.

#### Is Google Maps Scraper an official Google API?

No. It is an independent third-party scraping tool and should not be described as an official Google Maps API.

#### Is Google Maps scraping legal?

The answer depends on applicable laws, platform terms, the type of data collected, and how you use the data. Users are responsible for ensuring their workflows comply with applicable requirements.

#### Can I use the extracted data for lead generation?

The data can support lead-generation workflows, but you remain responsible for using contact information in accordance with applicable privacy, marketing, and communication laws.

#### What industries can use Google Maps business data?

Common applications include restaurants, hotels, contractors, dentists, law firms, agencies, retailers, real estate businesses, and other local service providers.

# Actor input Schema

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

🏙️ One or more place names, e.g. *New York*, *Texas*, *Downtown Chicago*. Every location is combined with every keyword/category below.

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

☕ What you're looking for — *coffee shops*, *dentists*, *coworking spaces*, *hotels near airport*. Add several to multiply your search coverage in one run.

## `urls` (type: `array`):

🌐 Bulk-friendly list of Google Maps search-result URLs — handy for reusing searches you've already bookmarked.

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

🔢 Total unique places to collect across every location, keyword/category, URL and place ID combined (duplicates are merged automatically). ✨ Start small for a quick test, then raise it for a full export.

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

🎛️ Optional Apify Proxy. Leave off for quick, light runs; switch on for heavier jobs or picky networks.

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

📮 Turn this Actor into a Google Maps email scraper and lead-finder: visits each place's own website and pulls contact details from it. Turn off to run exactly like a base Maps-only scraper.

## `onlyWithWebsite` (type: `boolean`):

🔗 Skip places with no website on file — there's nothing for the email/contact finder to visit, so this keeps results limited to businesses that could actually be enriched.

## `onlyWithEmail` (type: `boolean`):

✅ Keep only places where at least one email address was actually found on their website — useful when you want a ready-to-contact lead list and nothing else.

## `contactFetchTimeoutSecs` (type: `integer`):

⏲️ How many seconds to wait when fetching a single business's website during contact enrichment before giving up on that site.

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

🆔 One entry per exact place — a raw Google place ID (e.g. `ChIJn7B6JQVRW4YRkgk-CShaqNQ`) or a full Google Maps place-page URL (not a search-results URL — those go in the link list above). Each is fetched precisely, with no location or keyword search needed.

## `lat` (type: `number`):

🎯 Search around this exact GPS coordinate instead of geocoding a place name. Pair with Longitude below, plus at least one keyword or category.

## `lng` (type: `number`):

🎯 Pairs with Latitude above to pin the exact center point of a GPS-based search.

## `radiusKm` (type: `number`):

⭕ How far out from the Latitude/Longitude point to search. Only applies when both Latitude and Longitude are set.

## `categories` (type: `array`):

🗂️ Business types to search for — *restaurant*, *hair salon*, *auto repair* — searched together with (or instead of) the keywords above. ℹ️ Google's own search always needs some text to work with, so there's no true zero-input "browse everything nearby" mode — pick or type categories here if you'd rather not compose a keyword phrase, and leave Keywords empty.

## `openNowOnly` (type: `boolean`):

🕐 Best-effort nudge toward currently-open places by adding "open now" to the search text. NOT a guaranteed hard filter — it's Google's own ranking call — so always cross-check the `hours` field for anything time-sensitive.

## `includePlaceAttributes` (type: `boolean`):

♿ Include accessibility, service-option and amenity details (e.g. wheelchair access, delivery, outdoor seating) already present in Google's own response — free, no extra requests.

## `includePhotos` (type: `boolean`):

📷 Fetch each place's cover photo URL. Adds one real extra request per place (same cost as the contact finder) — off by default.

## `maxPhotosPerPlace` (type: `integer`):

🖼️ Cap on photo URLs returned per place when photos are on. In practice this surfaces the business's own cover photo, not the full user-submitted gallery.

## Actor input object example

```json
{
  "locations": [
    "New York"
  ],
  "keywords": [
    "coffee shops"
  ],
  "urls": [],
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "scrapeContacts": true,
  "onlyWithWebsite": false,
  "onlyWithEmail": false,
  "contactFetchTimeoutSecs": 15,
  "placeIds": [],
  "radiusKm": 5,
  "categories": [],
  "openNowOnly": false,
  "includePlaceAttributes": true,
  "includePhotos": false,
  "maxPhotosPerPlace": 3
}
```

# Actor output Schema

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

All scraped items in the Actor's default dataset.

## `mapsJson` (type: `string`):

A single JSON file with every place collected this run, written once at the end to the Key-Value Store.

## `contacts` (type: `string`):

Same rows, viewed as an outreach-ready contact sheet: emails, phones, social links and team contacts per place.

## `details` (type: `string`):

Same rows, viewed for accessibility/amenity attributes and each place's cover photo.

# 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 = {
    "locations": [
        "New York"
    ],
    "keywords": [
        "coffee shops"
    ],
    "urls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "placeIds": [],
    "categories": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapedrift/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 = {
    "locations": ["New York"],
    "keywords": ["coffee shops"],
    "urls": [],
    "proxyConfiguration": { "useApifyProxy": False },
    "placeIds": [],
    "categories": [],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapedrift/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 '{
  "locations": [
    "New York"
  ],
  "keywords": [
    "coffee shops"
  ],
  "urls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "placeIds": [],
  "categories": []
}' |
apify call scrapedrift/google-maps-scraper --silent --output-dataset

```

## MCP server setup

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