# Free Google Maps Scraper - Low-cost & Extensive (`blueorion/free-google-maps-scraper-extensive`) Actor

Reliable Actor to Extract Google Maps data using Free Credit or $3 per 1000 results. Extensive Data Outputs include `addresses`, `coordinates`, `reviews`, `menus`, `opening hours`, `gas station info`, `EV charging station info`, `tours and activities`, `admission and tickets`, and `hotel deals`

- **URL**: https://apify.com/blueorion/free-google-maps-scraper-extensive.md
- **Developed by:** [Blue Orion](https://apify.com/blueorion) (community)
- **Categories:** Developer tools, Lead generation, AI
- **Stats:** 211 total users, 2 monthly users, 94.7% runs succeeded, 7 bookmarks
- **User rating**: 4.86 out of 5 stars

## Pricing

from $2.30 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Free Google Maps Scraper - Fast & Cheap & Reliable

### 📍What is Google Maps Scraper

Scrape detailed place information from Google Maps — including `addresses`, `coordinates`, `reviews`, `menus`, `opening hours`, `gas station info`, `EV charging station info`, `tours and activities info`, `admission and ticket info`, and `hotel deals`. This Apify actor lets you automate location-based data extraction for research, analytics, or business intelligence. You can use FREE credit to scrape more than 1500 locations each month or you can use paid service for only $3 per 1000 results.

If you dont need `tours and activities info`, `admission and ticket info`, `menu info` and `menu URL`, consider to use our cheaper and faster version at 👉 [Free Google Maps Scraper - Simplified Version](https://apify.com/blueorion/free-google-maps-scraper-simplified)

***

### 🚀 Overview

This actor searches Google Maps for places matching your **search terms** in one or more **starting locations**. When you search for places on Google Maps, our tool doesn’t just look around a single point — it intelligently expands the search across a wider area. It automatically divides large areas into smaller grids, handles pagination and scrolling, and extracts all visible place details into structured JSON output while managing Google Maps’ dynamic interface.

> **💡 Tips to Maximize Search Results**
>
> - Start with a **small dataset** to test and validate your results.
> - Use precise location names, such as **Manhattan, NY, USA** instead of **NY, USA**.
> - Keep at least **3 km** of distance between each location.
> - Set a reasonable maximum number of places to scrape per location and search term.\
>   For example, when searching for restaurants in **Manhattan, NY**, you might set the limit to **100 or more**,\
>   while in less populated areas like **Nebraska**, it should be much lower.

***

### 📦 Outputs

Each place becomes one JSON record containing (depending on availability):

- `title`, `subTitle`
- `address`, `street`, `city`, `state`, `postalCode`, `countryCode`
- `website`, `phone`, `phoneUnformatted`
- `location`: `{ lat, lng }`
- `openingHours`, `timeZone`
- `categoryName`, `categories`
- `placeId`, `cid`, `fid`, `kgmid`
- `url`, `searchPageUrl`
- `reviewScore`, `reviewsCount`, `reviewsDistribution`
- `imageUrl`, `imagesCount`
- `hotelPrices`, `menu`, `menuUrl`
- `orderOnlineUrls`, `reserveTableUrls`
- `tickets`, `tours`
- `gasPrices`, `chargingStations`
- `additionalInfo`: flexible attributes like accessibility or amenities
- `scrapedAt`: ISO timestamp

#### Example Outputs

##### General Output Structure

```json

{
	"title": "Hyatt Place New York/Yonkers",
	"subTitle": null,
	"price": null,
	"address": "7000 Mall Walk, Yonkers, NY 10704, United States",
	"neighborhood": "Southeast Yonkers",
	"street": "7000 Mall Walk",
	"city": "Yonkers",
	"postalCode": "10704",
	"state": "New York",
	"countryCode": "US",
	"website": "https://www.hyatt.com/hyatt-place/en-US/lgazy-hyatt-place-new-york-yonkers?src=corp_lclb_google_seo_lgazy&utm_source=google&utm_medium=organic&utm_campaign=lmr",
	"phone": "+1 914-377-1400",
	"phoneUnformatted": "+19143771400",
	"location": {
		"lat": 40.9273149,
		"lng": -73.8536824
	},
	"timeZone": "America/New_York",
	"openingHours": [],
	"imageUrl": "https://lh3.googleusercontent.com/p/AF1QipNsdJF9kDj78RzHQpLAI1Giina7pifpIKhh07pS=w408-h272-k-no",
	"url": "https://www.google.com/maps/preview/place/Hyatt+Place+New+York%2FYonkers,+7000+Mall+Walk,+Yonkers,+NY+10704,+United+States/@40.9273149,-73.8536824,3014a,13.1y/data=!4m2!3m1!1s0x89c2f2a451f2a037:0x3e1c4b877a059200",
	"language": "en",
	"claimThisBusiness": false,
	"permanentlyClosed": false,
	"categoryName": "Hotel",
	"categories": [
		"Hotel"
	],
	"fid": "0x89c2f2a451f2a037:0x3e1c4b877a059200",
	"cid": "4475535174939283968",
	"placeId": "ChIJN6DyUaTywokRAJIFeodLHD4",
	"kgmid": "/g/11bymvpmrn",
	"searchPageUrl": "https://www.google.com/maps/search/hotel+near+New+York",
	"reviewsCount": 1200,
	"reviewScore": 4.2,
	"reviewsDistribution": {
		"oneStar": 74,
		"twoStar": 36,
		"threeStar": 106,
		"fourStar": 310,
		"fiveStar": 674
	},
	"imagesCount": 908,
	"hotelPrices": [],
	"peopleAlsoSearch": [],
	"additionalInfo": {},
	"tours": [],
	"tickets": [],
	"gasPrices": null,
	"chargingStations": [],
	"menu": null,
	"menuUrl": null,
	"reserveTableUrls": [],
	"orderOnlineUrls": [],
	"scrapedAt": "2025-10-16T06:41:44.851Z"
}

```

##### EV Charging Station or Gas Station Output Structure (if available)

This section is included for places that operate as **fuel stations or EV charging locations**.\
It provides structured details on available **charging connectors**, **power capacity**, and **fuel prices**, depending on the station type.

**Fields include:**

- **`chargingStations`** – A list of EV charging options with details such as:
  - `connectorType` – Type of charging connector (e.g., CCS, Type 2, CHAdeMO).
  - `total` – Number of available connectors of that type.
  - `power_kW` – Maximum charging power in kilowatts.
  - `note` – Additional notes (e.g., *Fast*, *Medium*, *Slow*).

- **`gasPrices`** – A list of available fuel types and their current prices, including:
  - `gasType` – Type of fuel (e.g., Regular, Diesel, Premium).
  - `priceTag` – Price as displayed on Google Maps.
  - `price` – Numeric value of the price.
  - `currency` – Currency code (e.g., USD, EUR).
  - `unit` – Unit of measurement (e.g., per gallon, per liter).
  - `updatedAt` – Timestamp of the last price update.

This structure helps identify stations offering EV charging services or fuel prices, enabling data-driven insights into energy and mobility infrastructure.

```json
	
{
	"chargingStations": [
		{
			"connectorType": "CCS",
			"total": 2,
			"power_kW": 110,
			"note": "Fast"
		},
		{
			"connectorType": "Type 2",
			"total": 1,
			"power_kW": 22,
			"note": "Medium"
		}
	],

}

{
	"gasPrices": [
		{
			"priceTag": "$3.10",
			"updatedAt": "2025-10-15T07:30:00.000Z",
			"unit": "gallon",
			"currency": "USD",
			"price": 3.1,
			"gasType": "Regular"
		},
		{
			"priceTag": "$4.06",
			"updatedAt": "2025-10-15T07:30:00.000Z",
			"unit": "gallon",
			"currency": "USD",
			"price": 4.06,
			"gasType": "Diesel"
		}
	]
}
```

##### Food & Service Business Output Structure (if available)

This section appears for places that provide **menus, online ordering, or table reservations—such as restaurants, cafés, bars, and other food or service businesses.**
It includes structured details about available **menu sections**, **categories**, and **individual items**, along with **links to external ordering or booking platforms**.

**Fields include:**

- `menuUrl` – Link to the business’s main menu page.

- `reserveTableUrls` – URLs for table reservations (e.g., OpenTable, Resy).

- `orderOnlineUrls` – Online food ordering links (e.g., Uber Eats, DoorDash, Toast).

- `menu` – Full menu data structured by sections, categories, and items, including name, description, price, and optional image.

This data helps identify businesses offering food services or online ordering options directly from their Google Maps listings.

```json
{
	"menuUrl": "https://sicilynyc.com/menus",
	"reserveTableUrls": [
		"https://www.opentable.com/restaurant/profile/1214629?ref=1068"
	],
	"orderOnlineUrls": [
		"https://www.seamless.com/menu/sicily-328-w-46th-st-new-york/3032457",
		"https://www.postmates.com/store/sicily-osteria/DuSJB_1_Ug2Sy4k946YuqA",
		"https://www.doordash.com/store/sicily-osteria-new-york-24044493/",
		"https://www.grubhub.com/restaurant/sicily-328-w-46th-st-new-york/3032457",
		"https://www.ubereats.com/store/sicily-osteria/DuSJB_1_Ug2Sy4k946YuqA",
		"https://order.toasttab.com/online/sicily-328-330-w-46th-street",
		"https://www.toasttab.com/local/order/sicily-328-330-w-46th-street/r-5a0ef539-f1e7-4e0b-999e-8c1b985c24d1"
	],
	"menu": [
		{
			"section": "Sicily",
			"categories": [
				{
					"category": "La Strada",
					"items": [
						{
							"name": "Arancini",
							"description": "Saffron rice, Nduja, Mozzarella, Peas",
							"price": "$15.00",
							"image": null
						},
						{
							"name": "Crocche",
							"description": "Potato, Smoked Provola, Pistachio Pesto",
							"price": "$13.00",
							"image": null
						}
					]
				},
				{
					"category": "Pasta",
					"items": [
						{
							"name": "Paccheri Alla Norma",
							"description": "Eggplant, Tomato, Ricotta Salata",
							"price": "$24.00",
							"image": null
						},
						{
							"name": "Spaghetti Chitarra",
							"description": "Crab, Pistacchio, Lemon, Cream, Marjoram",
							"price": "$32.00",
							"image": null
						}
					]
				},
				{
					"category": "Pizza",
					"items": [
						{
							"name": "Margherita",
							"description": "San Marzano Tomatoes, Mozzarella, Fresh Basil",
							"price": "$22.00",
							"image": null
						},
						{
							"name": "Fichi",
							"description": "Fig, Four Cheese, Rosemary, Hot Honey",
							"price": "$24.00",
							"image": null
						}
					]
				},
				{
					"category": "Secondi",
					"items": [
						{
							"name": "Melanzane",
							"description": "Whole Eggplant, Mozzarella, Tomato",
							"price": "$26.00",
							"image": null
						},
						{
							"name": "Polletto",
							"description": "Roasted Chicken Breast, Squash, Red Pepper, Olive, Mint",
							"price": "$33.00",
							"image": null
						}
					]
				},
				{
					"category": "Dessert",
					"items": [
						{
							"name": "Due Cannoli",
							"description": "House Made Shell, Sweet Ricotta, Amarena Cherry, Chocolate",
							"price": "$12.00",
							"image": null
						},
						{
							"name": "Torta Setteveli",
							"description": "Seven Layer Chocolate, Hazelnut Mousse Cake",
							"price": "$17.00",
							"image": null
						}
					]
				}
			]
		}
	]
}
```

##### Attraction Output Structure (if available)

This section appears for **tourist attractions, landmarks, or entertainment venues** that offer **tickets** or **guided tours**.\
It provides structured information about available booking options, prices, and external providers.

**Fields include:**

- **`tickets`** – A list of direct ticket offers, including:
  - `provider` – Name of the ticket provider or attraction.
  - `name` – Type or title of the ticket (e.g., *General Admission*, *Crown Reserve*).
  - `link` – URL to purchase or learn more about the ticket.
  - `price` – Displayed ticket price.

- **`tours`** – A list of guided or third-party tours related to the attraction, including:
  - `name` – Tour title.
  - `link` – URL to the booking or information page (e.g., Viator, Groupon).
  - `price` – Tour price (if available).
  - `images` – Example images of the tour or destination.
  - `time` – Duration of the tour (e.g., *4h 5m*).

This structure helps identify attractions that provide **ticketed entry or guided experiences**, supporting tourism analytics, travel apps, or price comparison tools.

```json
{
	"tickets": [
		{
			"provider": "Statue of Liberty",
			"name": "New York General Admission",
			"link": "https://www.cityexperiences.com/new-york/city-cruises/statue/new-york-reserve/",
			"price": "$25.05"
		},
		{
			"provider": "Statue of Liberty",
			"name": "New York Crown Reserve",
			"link": "https://www.cityexperiences.com/new-york/city-cruises/statue/new-york-crown-reserve/",
			"price": "$25.08"
		}
	],
	"tours": [
		{
			"name": "New York Statue of Liberty and Ellis Island Guided Tour",
			"link": "https://www.viator.com/New-York-City/d687/p-5250LIBERTYELLIS",
			"price": "$69",
			"images": [
				"https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRSACpNPzTLWECCtvIwBSJ5ErcN4iznCcotPjVa5IaADY0f0F0d",
				"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTLklExv-o68ILMxJZ8neVUb7rB4HsDWPexW9xzwJFm5ycXGjVD"
			],
			"time": "4h 5m"
		},
		{
			"name": "Statue of Liberty and Ellis Island Tour: All Options",
			"link": "https://www.groupon.com/deals/viator-new-york-tour1-6",
			"price": "$69",
			"images": [
				"https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRldH8-KO5sLSApjy4SfGqSNXV5d3evu3uv00nC07C9qfgSx8Xt",
				"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTwXxNn9mT-7CX7Q1JE7ZJS3XEQMyveJoU07_rNSIWjWpuZ45Ki"
			],
			"time": null
		}
	]
}
```

##### Additional Information Output Structure (if available)

This section provides **detailed descriptive attributes** about a place, collected from Google Maps’ `About` and `Details` panels.
It captures a wide range of optional metadata that describes **services, accessibility, atmosphere, and visitor experience.**

```json
{
	"additionalInfo": {
		"Service options": [
			{
				"Onsite services": true
			}
		],
		"Accessibility": [
			{
				"Wheelchair accessible entrance": true
			},
			{
				"Wheelchair accessible parking lot": true
			}
		],
		"Planning": [
			{
				"Getting tickets in advance recommended": true
			}
		],
		"Children": [
			{
				"Good for kids": true
			}
		]
	}
}
```

***

### ⚙️ Inputs

| Field | Type | Description |
|-------|------|-------------|
| **searchTerms** | `array<string>` | List of search terms (e.g., `hotel`, `cafe`, `gym`, `things to do`, `restaurant`). |
| **startingLocations** | `array<string>` | Locations to start searching from (e.g., `South Bronx, New York, USA`, `Manhattan, New York, USA`). |
| **maxItems** | `integer` | Maximum number of places to scrape per location. Default: `10`. |
| **language** | `string` | Language code for Google Maps (e.g., `en`, `fr`, `ja`). |
| **mode** | `string` | Either `aggressive` (fast, proxy recommended) or `slow` (human-like). |

**Required:** `searchTerms`, `startingLocations`, and `language`.

***

### 💡 Advanced data

Some extra sections appear only when available:

- **Menus & orders:** `menu`, `menuUrl`, `orderOnlineUrls`, `reserveTableUrls`
- **Tickets & tours:** extracted from attraction listings
- **Fuel & EV info:** `gasPrices`, `chargingStations` for stations
- **Additional info:** structured lists of attributes such as accessibility, service options, or planning notes

***

### ⚖️ Legal & ethical note

Google Maps data is subject to Google’s Terms of Service.\
Use scraped data responsibly, and ensure compliance with local regulations and platform rules.

### Other Actors:

Check out our other Apify actors:
👉 [Comprehensive Google Maps Reviews Scraper](https://apify.com/blueorion/fast-google-maps-reviews-scraper)
👉 [Free Google Maps Scraper - Simplified Version](https://apify.com/blueorion/free-google-maps-scraper-simplified)

# Actor input Schema

## `searchTerms` (type: `array`):

Use distinct search terms and broad, well-chosen categories to maximize relevant results and minimize duplicates.

## `startingLocations` (type: `array`):

Enter the starting locations (e.g. `Paris`) to define where the search begins on Google Maps.

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

Results will be localized to this country or region.

## `maxItems` (type: `integer`):

The maximum number of place to extract per input location (between 10 and 10,000).

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

Results details will show in this language.

## `mode` (type: `string`):

Choose how aggressively to scrape Google Maps Places. Aggressive mode is faster but may trigger blocks; slow mode will query google server much slower.

## Actor input object example

```json
{
  "searchTerms": [
    "bar",
    "cafe",
    "restaurant"
  ],
  "startingLocations": [
    "South Bronx, New York",
    "Manhattan, New York"
  ],
  "countryCode": "US",
  "maxItems": 10,
  "language": "en",
  "mode": "aggressive"
}
```

# 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 = {
    "searchTerms": [
        "bar",
        "cafe",
        "restaurant"
    ],
    "startingLocations": [
        "South Bronx, New York",
        "Manhattan, New York"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("blueorion/free-google-maps-scraper-extensive").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 = {
    "searchTerms": [
        "bar",
        "cafe",
        "restaurant",
    ],
    "startingLocations": [
        "South Bronx, New York",
        "Manhattan, New York",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("blueorion/free-google-maps-scraper-extensive").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 '{
  "searchTerms": [
    "bar",
    "cafe",
    "restaurant"
  ],
  "startingLocations": [
    "South Bronx, New York",
    "Manhattan, New York"
  ]
}' |
apify call blueorion/free-google-maps-scraper-extensive --silent --output-dataset

```

## MCP server setup

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

```

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/r6FpAsM4daafqvYPJ/builds/am2hCQI1m1rNdrciZ/openapi.json
