Google Maps Area Scanner
Pricing
from $3.99 / 1,000 results
Google Maps Area Scanner
Extract rich Google Maps places for bounded keyword searches centered on a location or explicit coordinates and zoom.
Google Maps Area Scanner
Pricing
from $3.99 / 1,000 results
Extract rich Google Maps places for bounded keyword searches centered on a location or explicit coordinates and zoom.
You can access the Google Maps Area Scanner programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.1", "x-build-id": "F0CXnOy6TZDCCxTKy" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/googleapi~google-maps-area-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-googleapi-google-maps-area-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/googleapi~google-maps-area-scraper/runs": { "post": { "operationId": "runs-sync-googleapi-google-maps-area-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/googleapi~google-maps-area-scraper/run-sync": { "post": { "operationId": "run-sync-googleapi-google-maps-area-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", "properties": { "searchStringsArray": { "title": "Search queries (legacy)", "maxItems": 50, "type": "array", "description": "Legacy alias for queries. Each query is searched on Google Maps; values are merged with the other query aliases.", "items": { "type": "string", "minLength": 3, "maxLength": 200 } }, "searchKeywords": { "title": "Search keywords", "maxItems": 50, "type": "array", "description": "One or more public Google Maps searches. Alias: queries.", "items": { "type": "string", "minLength": 3, "maxLength": 200 } }, "queries": { "title": "Queries", "maxItems": 50, "type": "array", "description": "Additional search queries. Queries are deduplicated before crawling.", "items": { "type": "string", "minLength": 3, "maxLength": 200 } }, "searchQuery": { "title": "Single search query", "maxLength": 200, "type": "string", "description": "Single-query alias for searchKeywords." }, "locationQuery": { "title": "Location text", "maxLength": 200, "type": "string", "description": "Optional city, region, or country appended to generated queries and geocoded through public OpenStreetMap Nominatim when coordinates are not supplied." }, "lat": { "title": "Latitude", "type": "string", "description": "Optional latitude from -90 to 90. Must be supplied with lng." }, "lng": { "title": "Longitude", "type": "string", "description": "Optional longitude from -180 to 180. Must be supplied with lat." }, "zoom": { "title": "Map zoom", "type": "string", "description": "Optional Google Maps zoom from 3 to 21. If omitted, a bounded zoom is derived from radius." }, "radius": { "title": "Search radius (meters)", "minimum": 100, "maximum": 1000000, "type": "integer", "description": "Used only to derive a zoom when zoom is omitted.", "default": 50000 }, "startUrls": { "title": "Google Maps search or place URLs", "maxItems": 25, "type": "array", "description": "Optional public Google Maps search or place URLs. When supplied, they take precedence over generated query URLs while filters and limits still apply. Consent/login/access responses are blocked, not business records.", "items": { "type": "object", "properties": { "url": { "title": "Search URL", "type": "string", "description": "Public Google Maps search or place URL.", "minLength": 1 } }, "required": [ "url" ], "additionalProperties": false } }, "sourceUrls": { "title": "Source URL aliases", "maxItems": 25, "type": "array", "description": "Compatibility alias for startUrls. URLs must be public Google Maps search or place routes.", "items": { "type": "string", "minLength": 1 } }, "searchUrls": { "title": "Search URL aliases", "maxItems": 25, "type": "array", "description": "Compatibility alias for startUrls.", "items": { "type": "string", "minLength": 1 } }, "urls": { "title": "URL aliases", "maxItems": 25, "type": "array", "description": "Compatibility alias for startUrls.", "items": { "type": "string", "minLength": 1 } }, "url": { "title": "Single source URL alias", "type": "string", "description": "Compatibility alias for one public Google Maps search or place URL." }, "maxItems": { "title": "Maximum places", "minimum": 1, "maximum": 100, "type": "integer", "description": "Global maximum of normal place records across all queries and source URLs.", "default": 20 }, "maxCrawledPlacesPerSearch": { "title": "Maximum places (legacy)", "minimum": 1, "maximum": 100, "type": "integer", "description": "Legacy alias for maxItems with the same global semantics." }, "maxPages": { "title": "Last result batch per source", "minimum": 1, "maximum": 25, "type": "integer", "description": "Maximum one-based rendered result batch to traverse per source, including batches scrolled through before page. page must not exceed maxPages. Google Maps uses an infinite-scroll feed rather than numbered result pages.", "default": 3 }, "page": { "title": "Starting result batch", "minimum": 1, "maximum": 25, "type": "integer", "description": "One-based starting batch in the Google Maps infinite-scroll results. The Actor scrolls to this batch before collecting results.", "default": 1 }, "deduplicate": { "title": "Deduplicate places", "type": "boolean", "description": "Deduplicate globally by Google place ID, CID, KGMID, canonical URL, or title plus address.", "default": true }, "sortBy": { "title": "Sort results", "enum": [ "recommended", "rating_desc", "reviews_desc", "name_asc" ], "type": "string", "description": "Recommended preserves source order; other choices sort the bounded collected candidate set globally.", "default": "recommended" }, "minRating": { "title": "Minimum rating", "minimum": 1, "maximum": 5, "type": "number", "description": "Exclude records with a public rating below this value; records without a rating do not match." }, "placeMinimumStars": { "title": "Minimum rating (legacy)", "type": "string", "description": "Legacy alias for minRating." }, "minReviews": { "title": "Minimum review count", "minimum": 0, "maximum": 10000000, "type": "integer", "description": "Exclude records with fewer than this public review count." }, "categoryFilter": { "title": "Category contains", "maxLength": 200, "type": "string", "description": "Case-insensitive text filter applied to the public category fields." }, "closedPlacesFilter": { "title": "Closed place filter", "enum": [ "all", "skipClosed", "onlyClosed" ], "type": "string", "description": "Include all places, skip closed places, or keep only closed places based on public listing text.", "default": "all" }, "includeDetails": { "title": "Open public place details", "type": "boolean", "description": "Open public place pages only when enabled; this adds source-backed profile details to search-card records.", "default": false }, "maxDetailItems": { "title": "Maximum detail pages", "minimum": 0, "maximum": 25, "type": "integer", "description": "Maximum number of selected places whose public detail pages may be opened. Defaults to up to 20 for richer business records.", "default": 20 }, "includeOpeningHours": { "title": "Include opening hours", "type": "boolean", "description": "Include public weekly hours and current opening label when exposed.", "default": true }, "includeReviews": { "title": "Include visible review snippets", "type": "boolean", "description": "Include bounded public review text, ratings, and date labels; expand visible review text when Maps offers a more control, without reviewer profile data or avatars.", "default": false }, "maxReviewsPerPlace": { "title": "Maximum review snippets", "minimum": 1, "maximum": 20, "type": "integer", "description": "Bound the number of public review text snippets returned per place.", "default": 5 }, "includeMedia": { "title": "Include place media", "type": "boolean", "description": "Include only deduplicated lh3.googleusercontent.com place photos associated with the card/detail page.", "default": true }, "includeAttributes": { "title": "Include public attributes", "type": "boolean", "description": "Include public accessibility and amenity attributes when exposed.", "default": true }, "renderJavaScript": { "title": "Render JavaScript", "type": "boolean", "description": "Use the public browser page. Google Maps result feeds normally require JavaScript." }, "useBrowser": { "title": "Use browser (legacy alias)", "type": "boolean", "description": "Compatibility alias for renderJavaScript; both values must agree when supplied." }, "requestDelayMs": { "title": "Delay between scroll requests (ms)", "minimum": 0, "maximum": 10000, "type": "integer", "description": "Delay between rendered scroll batches to keep traffic bounded.", "default": 750 }, "requestTimeoutSecs": { "title": "Request timeout (seconds)", "minimum": 10, "maximum": 180, "type": "integer", "description": "Timeout for a browser navigation or source request.", "default": 60 }, "requestTimeoutMs": { "title": "Request timeout (milliseconds alias)", "minimum": 10000, "maximum": 180000, "type": "integer", "description": "Millisecond alias for requestTimeoutSecs; both values must agree when supplied." }, "maxResponseBytes": { "title": "Maximum static response bytes", "minimum": 10000, "maximum": 20000000, "type": "integer", "description": "Maximum response size for static HTTP mode.", "default": 5000000 }, "browserWaitMs": { "title": "Browser settle wait (ms)", "minimum": 0, "maximum": 15000, "type": "integer", "description": "Bounded wait after a browser navigation before reading the rendered page.", "default": 1500 }, "proxyConfiguration": { "title": "Apify Proxy configuration", "type": "object", "description": "Optional Apify Proxy or explicit proxyUrls used by the browser transport. Proxy routing is transparent and does not bypass CAPTCHAs or access controls." }, "userAgent": { "title": "User agent", "maxLength": 256, "type": "string", "description": "Optional honest browser user agent. Do not use this to impersonate another person or evade access controls." }, "locale": { "title": "Locale", "type": "string", "description": "Short locale such as en or en-US." }, "language": { "title": "Language (legacy alias)", "type": "string", "description": "Compatibility alias for locale; both values must agree when supplied." } } }, "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 }, "PROXY_UNBLOCKER_UNITS": { "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 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Google Maps Area Scanner from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: