# Google Advanced Maps Places Scraper (`scrapeai/google-advanced-maps-places-scraper`) Actor

Collect structured place data from Google Maps, including business profiles, contact information, customer ratings, review statistics, operating hours, and map coordinates.

- **URL**: https://apify.com/scrapeai/google-advanced-maps-places-scraper.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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.

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 Places Scraper

Collect structured place data from Google Maps, including business profiles, addresses, phone numbers, websites, customer ratings, reviews, and map coordinates.

### Features

- **Search-driven business extraction** — discover local businesses through keywords, categories, locations, and radius settings
- **Exact area targeting** — use coordinate-based searches to capture data from specific regions
- **Review scraping support** — include ratings, reviews, and customer sentiment data as part of the dataset
- **Scalable cloud support** — works with Apify proxies, schedulers, storage, and webhooks

### Use Cases

- Geographic lead sourcing — generate targeted business leads from specific cities, regions, or service areas
- Competitive intelligence — map competitors and benchmark their visibility, ratings, and market positioning
- Directory and listing management — compile accurate business records for research, marketing, and CRM enrichment
- Customer sentiment analysis — analyze review trends and reputation metrics across brands and locations

#### Example Output

```json
{
	"title": "Sicily Osteria",
	"categoryName": "Sicilian restaurant",
	"categories": [
		"Sicilian restaurant",
		"Italian restaurant"
	],
	"address": "328-330 W 46th St, New York, NY 10036, United States",
	"neighborhood": "Manhattan",
	"street": "328-330 W 46th St",
	"city": "New York, NY 10036",
	"postalCode": "10036",
	"state": "United States",
	"countryCode": "US",
	"plusCode": "87G8Q266+38",
	"plusCodeGlobal": "Q266+38 New York, USA",
	"website": "http://sicilynyc.com/",
	"phone": "+1 646-609-3417",
	"phoneUnformatted": "+16466093417",
	"location": {
		"lat": 40.7601601,
		"lng": -73.9891863
	},
	"totalScore": 4.6,
	"reviewsCount": 3308,
	"reviewsDistribution": {
		"oneStar": 124,
		"twoStar": 81,
		"threeStar": 119,
		"fourStar": 303,
		"fiveStar": 2681
	},
	"permanentlyClosed": false,
	"temporarilyClosed": false,
	"currentStatus": "Closed · Opens 12 pm",
	"timezone": "America/New_York",
	"placeId": "ChIJ03krMjJZwokRYRF15upaCHw",
	"cid": "8937493425452028257",
	"kgmid": "/g/11rvby8wnq",
	"imageUrl": "https://lh3.googleusercontent.com/gps-cs-s/APNQkAHtw_VJWeNAnPayFojlIhTWEvLIpKJ-PFejha5Ck-v3rO8mcBPF5kX0xKh4ci9HLXRhmC9ATT8TZd4mdfWFHfe_gCDqioI3Yg7LcgjoG19vkifqdZb4OGf-wVYCDeFyeUjmZQre4A=w129-h86-k-no",
	"imageUrls": [
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAHtw_VJWeNAnPayFojlIhTWEvLIpKJ-PFejha5Ck-v3rO8mcBPF5kX0xKh4ci9HLXRhmC9ATT8TZd4mdfWFHfe_gCDqioI3Yg7LcgjoG19vkifqdZb4OGf-wVYCDeFyeUjmZQre4A=w129-h86-k-no",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAHtw_VJWeNAnPayFojlIhTWEvLIpKJ-PFejha5Ck-v3rO8mcBPF5kX0xKh4ci9HLXRhmC9ATT8TZd4mdfWFHfe_gCDqioI3Yg7LcgjoG19vkifqdZb4OGf-wVYCDeFyeUjmZQre4A=w408-h271-k-no",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFNryWFzV37XCRiqg_oxw6wmL87mnbVBbUSTBADivRMb3c_GxwlbVo_rFUGnK5oaVSGnXx0GuxuZOkPow53lcw7FirlSNijYx7BmR2Wwhtjq8lDJFAxuh0dkK5RpbbDGcC_jFkL=w180-h120-k-no",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAHtw_VJWeNAnPayFojlIhTWEvLIpKJ-PFejha5Ck-v3rO8mcBPF5kX0xKh4ci9HLXRhmC9ATT8TZd4mdfWFHfe_gCDqioI3Yg7LcgjoG19vkifqdZb4OGf-wVYCDeFyeUjmZQre4A=w203-h135-k-no",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=w203-h203-k-no",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=m18",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=m37",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=m22",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=mm,dash",
		"https://lh3.googleusercontent.com/gps-cs-s/APNQkAFUx4KQLHcqFpzJeaSHz3wqibJzD9q8N4iOu4T9GGzDwMXc7FxZRaFRbQkexQUC4h-RQM6gG5qKGsg-YqDkUK_DFDlnU5jFHepYAeOXbCYM7ns0g2oiYqqKEl2ATaetS7iuer9G-2oYUJCe=mm,hls?ibw=750000"
	],
	"openingHours": {
		"Thursday": "12–11 pm",
		"Friday": "12–11 pm",
		"Saturday": "12–11 pm",
		"Sunday": "12–10 pm",
		"Monday": "12–10 pm",
		"Tuesday": "12–11 pm",
		"Wednesday": "12–11 pm"
	},
	"aboutInfo": {
		"/geo/type/establishment_poi/serves_brunch": {
			"title": "Brunch",
			"attributes": {
				"brunch": {
					"available": false,
					"name": "Brunch",
					"value": "No"
				}
			}
		},
		"service_options": {
			"title": "Service options",
			"attributes": {
				"drive_through": {
					"available": false,
					"name": "Drive-through",
					"value": "No"
				}
			}
		},
		"highlights": {
			"title": "Highlights",
			"attributes": {
				"private_events": {
					"available": true,
					"name": "Private events",
					"value": "Private events"
				},
				"fireplace": {
					"available": false,
					"name": "Fireplace",
					"value": "No"
				},
				"live_music": {
					"available": false,
					"name": "Live music",
					"value": "No"
				},
				"rooftop_seating": {
					"available": false,
					"name": "Rooftop seating",
					"value": "No"
				},
				"sport": {
					"available": false,
					"name": "Sport",
					"value": "No"
				}
			}
		},
		"popular_for": {
			"title": "Popular for",
			"attributes": {
				"dates": {
					"available": true,
					"name": "Dates",
					"value": "Dates"
				}
			}
		},
		"accessibility": {
			"title": "Accessibility",
			"attributes": {
				"wheelchair_accessible_seating": {
					"available": true,
					"name": "Wheelchair-accessible seating",
					"value": "Wheelchair-accessible seating"
				},
				"wheelchair_accessible_car_park": {
					"available": false,
					"name": "Wheelchair-accessible car park",
					"value": "No wheelchair-accessible car park"
				}
			}
		},
		"offerings": {
			"title": "Offerings",
			"attributes": {
				"happy_hour": {
					"available": true,
					"name": "Happy hour",
					"value": "Happy hour"
				},
				"all_you_can_eat": {
					"available": false,
					"name": "All you can eat",
					"value": "No"
				},
				"vegan_options": {
					"available": false,
					"name": "Vegan options",
					"value": "No"
				}
			}
		},
		"dining_options": {
			"title": "Dining options",
			"attributes": {
				"order_ahead": {
					"available": true,
					"name": "Order ahead",
					"value": "Order ahead"
				}
			}
		},
		"amenities": {
			"title": "Amenities",
			"attributes": {
				"bar_on_site": {
					"available": true,
					"name": "Bar on site",
					"value": "Bar on site"
				},
				"restroom": {
					"available": true,
					"name": "Restroom",
					"value": "Restroom"
				}
			}
		},
		"atmosphere": {
			"title": "Atmosphere",
			"attributes": {
				"contemporary": {
					"available": true,
					"name": "Contemporary",
					"value": "Contemporary"
				},
				"festive": {
					"available": true,
					"name": "Festive",
					"value": "Festive"
				},
				"special_occasions": {
					"available": true,
					"name": "Special occasions",
					"value": "Special occasions"
				}
			}
		},
		"crowd": {
			"title": "Crowd",
			"attributes": {
				"business_dinner": {
					"available": true,
					"name": "Business dinner",
					"value": "Good for business dinner"
				},
				"business_lunch": {
					"available": true,
					"name": "Business lunch",
					"value": "Good for business lunch"
				},
				"university_students": {
					"available": false,
					"name": "University students",
					"value": "No"
				}
			}
		},
		"planning": {
			"title": "Planning",
			"attributes": {
				"dinner_reservations_recommended": {
					"available": true,
					"name": "Dinner reservations recommended",
					"value": "Dinner reservations recommended"
				},
				"accepts_reservations": {
					"available": true,
					"name": "Accepts reservations",
					"value": "Accepts reservations"
				}
			}
		},
		"payments": {
			"title": "Payments",
			"attributes": {
				"price_level": {
					"available": false,
					"name": "Price level",
					"value": "No"
				},
				"cash_only": {
					"available": false,
					"name": "Cash only",
					"value": "No"
				}
			}
		},
		"children": {
			"title": "Children",
			"attributes": {
				"good_for_kids_birthday": {
					"available": false,
					"name": "Good for kids birthday",
					"value": "No"
				}
			}
		},
		"parking": {
			"title": "Parking",
			"attributes": {
				"paid_street_parking": {
					"available": true,
					"name": "Paid street parking",
					"value": "Paid street parking"
				},
				"parking": {
					"available": false,
					"name": "Parking",
					"value": "No"
				}
			}
		},
		"pets": {
			"title": "Pets",
			"attributes": {
				"dogs_allowed_outside": {
					"available": true,
					"name": "Dogs allowed outside",
					"value": "Dogs allowed outside"
				}
			}
		},
		"/geo/type/establishment_poi/serves_dine_in": {
			"title": "Dine-in",
			"attributes": {
				"dine_in": {
					"available": false,
					"name": "Dine-in",
					"value": "No"
				}
			}
		},
		"/geo/type/establishment_poi/has_takeout": {
			"title": "Takeaway",
			"attributes": {
				"takeaway": {
					"available": false,
					"name": "Takeaway",
					"value": "No"
				}
			}
		},
		"/geo/type/establishment_poi/has_delivery": {
			"title": "Delivery",
			"attributes": {
				"delivery": {
					"available": false,
					"name": "Delivery",
					"value": "No"
				}
			}
		}
	},
	"reviews": [],
	"priceLevel": "$30–80",
	"url": "https://www.google.com/maps/search/?api=1&query=Sicily%20Osteria&query_place_id=ChIJ03krMjJZwokRYRF15upaCHw",
	"searchPageUrl": "https://www.google.com/maps/search/pizza%20near%20New%20York?hl=en",
	"searchString": "pizza near New York",
	"rank": 2,
	"scrapedAt": "2026-06-11T11:19:30.615Z"
}
````

### Notes

- **Proxy**: Residential proxy is highly recommended — set `proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"] }`
- **Rate limits**: Keep `maxItems` reasonable per run to avoid IP bans or rate throttling
- **Scheduling**: Use Apify Scheduler to run this actor on a recurring basis for a consistently fresh dataset

# Actor input Schema

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

List of search queries for Google Maps (e.g., 'Technology companies in United States', 'Restaurants in New York').

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

Optional location to append to search queries.

## `lat` (type: `string`):

Latitude coordinate for search center (e.g., '40.7128'). Overrides locationQuery if both lat and lng are provided.

## `lng` (type: `string`):

Longitude coordinate for search center (e.g., '-74.0060'). Overrides locationQuery if both lat and lng are provided.

## `zoom` (type: `string`):

Google Maps zoom level (3-21). Supports fractional values like 18.25, 18.5, 18.75. Higher zoom = smaller area. If provided, this overrides the radius setting.

## `radius` (type: `integer`):

Search radius in meters. Used to calculate zoom level if zoom is not provided. Ignored if zoom is explicitly set.

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

Maximum number of places to crawl per search query.

## `includeOpeningHours` (type: `boolean`):

Whether to include opening hours/timing information for each place.

## `includeReviews` (type: `boolean`):

Whether to extract reviews for each place. Note: This may increase scraping time.

## `maxReviewsPerPlace` (type: `integer`):

Maximum number of reviews to extract per place (only used if Include Reviews is enabled).

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

Minimum star rating (1-5) to include places. Leave empty for no filter.

## `closedPlacesFilter` (type: `string`):

Filter for closed places: 'all' = include all places (default), 'skipClosed' = exclude closed places, 'onlyClosed' = include only temporarily/permanently closed places.

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

Results details will show in this language.

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

Proxy settings. Residential proxies are strongly recommended for Google Maps to avoid bot detection. Use Apify Proxy with the RESIDENTIAL or GOOGLE\_SERP group.

## Actor input object example

```json
{
  "searchStringsArray": [
    "Technology companies"
  ],
  "locationQuery": "United States",
  "radius": 50000,
  "maxCrawledPlacesPerSearch": 20,
  "includeOpeningHours": true,
  "includeReviews": false,
  "maxReviewsPerPlace": 10,
  "placeMinimumStars": "",
  "closedPlacesFilter": "all",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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": [
        "Technology companies"
    ],
    "language": "en",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeai/google-advanced-maps-places-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 = {
    "searchStringsArray": ["Technology companies"],
    "language": "en",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapeai/google-advanced-maps-places-scraper").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 '{
  "searchStringsArray": [
    "Technology companies"
  ],
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapeai/google-advanced-maps-places-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapeai/google-advanced-maps-places-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Advanced Maps Places Scraper",
        "description": "Collect structured place data from Google Maps, including business profiles, contact information, customer ratings, review statistics, operating hours, and map coordinates.",
        "version": "1.0",
        "x-build-id": "OTkDSs7YtcaYTwPDD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeai~google-advanced-maps-places-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeai-google-advanced-maps-places-scraper",
                "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/scrapeai~google-advanced-maps-places-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeai-google-advanced-maps-places-scraper",
                "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/scrapeai~google-advanced-maps-places-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeai-google-advanced-maps-places-scraper",
                "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": [
                    "searchStringsArray"
                ],
                "properties": {
                    "searchStringsArray": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "List of search queries for Google Maps (e.g., 'Technology companies in United States', 'Restaurants in New York').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locationQuery": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional location to append to search queries.",
                        "default": "United States"
                    },
                    "lat": {
                        "title": "Latitude",
                        "type": "string",
                        "description": "Latitude coordinate for search center (e.g., '40.7128'). Overrides locationQuery if both lat and lng are provided."
                    },
                    "lng": {
                        "title": "Longitude",
                        "type": "string",
                        "description": "Longitude coordinate for search center (e.g., '-74.0060'). Overrides locationQuery if both lat and lng are provided."
                    },
                    "zoom": {
                        "title": "Zoom Level",
                        "type": "string",
                        "description": "Google Maps zoom level (3-21). Supports fractional values like 18.25, 18.5, 18.75. Higher zoom = smaller area. If provided, this overrides the radius setting."
                    },
                    "radius": {
                        "title": "Search Radius (meters)",
                        "minimum": 100,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Search radius in meters. Used to calculate zoom level if zoom is not provided. Ignored if zoom is explicitly set.",
                        "default": 50000
                    },
                    "maxCrawledPlacesPerSearch": {
                        "title": "Max Places Per Search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of places to crawl per search query.",
                        "default": 20
                    },
                    "includeOpeningHours": {
                        "title": "Include Opening Hours",
                        "type": "boolean",
                        "description": "Whether to include opening hours/timing information for each place.",
                        "default": true
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Whether to extract reviews for each place. Note: This may increase scraping time.",
                        "default": false
                    },
                    "maxReviewsPerPlace": {
                        "title": "Max Reviews Per Place",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of reviews to extract per place (only used if Include Reviews is enabled).",
                        "default": 10
                    },
                    "placeMinimumStars": {
                        "title": "Minimum Stars",
                        "type": "string",
                        "description": "Minimum star rating (1-5) to include places. Leave empty for no filter.",
                        "default": ""
                    },
                    "closedPlacesFilter": {
                        "title": "Closed Places Filter",
                        "enum": [
                            "all",
                            "skipClosed",
                            "onlyClosed"
                        ],
                        "type": "string",
                        "description": "Filter for closed places: 'all' = include all places (default), 'skipClosed' = exclude closed places, 'onlyClosed' = include only temporarily/permanently closed places.",
                        "default": "all"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "af",
                            "az",
                            "id",
                            "ms",
                            "bs",
                            "ca",
                            "cs",
                            "da",
                            "de",
                            "et",
                            "es",
                            "es-419",
                            "eu",
                            "fil",
                            "fr",
                            "gl",
                            "hr",
                            "zu",
                            "is",
                            "it",
                            "sw",
                            "lv",
                            "lt",
                            "hu",
                            "nl",
                            "no",
                            "uz",
                            "pl",
                            "pt-BR",
                            "pt-PT",
                            "ro",
                            "sq",
                            "sk",
                            "sl",
                            "fi",
                            "sv",
                            "vi",
                            "tr",
                            "el",
                            "bg",
                            "ky",
                            "kk",
                            "mk",
                            "mn",
                            "ru",
                            "sr",
                            "uk",
                            "ka",
                            "hy",
                            "iw",
                            "ur",
                            "ar",
                            "fa",
                            "am",
                            "ne",
                            "hi",
                            "mr",
                            "bn",
                            "pa",
                            "gu",
                            "ta",
                            "te",
                            "kn",
                            "ml",
                            "si",
                            "th",
                            "lo",
                            "my",
                            "km",
                            "ko",
                            "ja",
                            "zh-CN",
                            "zh-TW"
                        ],
                        "type": "string",
                        "description": "Results details will show in this language.",
                        "default": "en"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are strongly recommended for Google Maps to avoid bot detection. Use Apify Proxy with the RESIDENTIAL or GOOGLE_SERP group."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
