Google Places Search
Pricing
from $1.50 / 1,000 place scrapeds
Google Places Search
Extract business and place data for any area or free-text query — names, addresses, phones, websites, opening hours, ratings, and review counts.
Google Places Search
Pricing
from $1.50 / 1,000 place scrapeds
Extract business and place data for any area or free-text query — names, addresses, phones, websites, opening hours, ratings, and review counts.
You can access the Google Places Search 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": "0.1", "x-build-id": "HCNdOLf0TU7Bbhifq" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/harpoon~google-places-search/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-harpoon-google-places-search", "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/harpoon~google-places-search/runs": { "post": { "operationId": "runs-sync-harpoon-google-places-search", "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/harpoon~google-places-search/run-sync": { "post": { "operationId": "run-sync-harpoon-google-places-search", "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": { "ai_prompt": { "title": "Describe what you want", "type": "string", "description": "e.g. \"Restaurants and cafes in Brooklyn rated above 4 stars\" or \"Cheap hostels within 5 km of Bondi Beach\"." }, "search_terms": { "title": "Search terms", "type": "array", "description": "What to look for, e.g. restaurant, cafe, bar. Each term is searched separately; results are merged and duplicates removed.", "items": { "type": "string" } }, "categories": { "title": "Place types", "type": "array", "description": "Only keep places of these types. Leave empty for all types. If no search term is given, each type is used as the term too.", "items": { "type": "string", "enum": [ "restaurant", "cafe", "bar", "hotel", "hospital", "pharmacy", "gym", "supermarket", "gas_station", "parking", "bank", "school", "museum", "park", "night_club", "bakery" ], "enumTitles": [ "Restaurant", "Cafe", "Bar", "Hotel", "Hospital", "Pharmacy", "Gym", "Supermarket", "Gas station", "Parking", "Bank", "School", "Museum", "Park", "Night club", "Bakery" ] } }, "bounds": { "title": "Bounds", "type": "string", "description": "A rectangle as lowLat,lowLng,highLat,highLng. E.g. 48.80,2.25,48.90,2.40" }, "circle": { "title": "Circle", "type": "string", "description": "A point plus a radius in km: lat,lng,radiusKm. E.g. 48.8566,2.3522,5" }, "region": { "title": "Region", "type": "string", "description": "A region reference as country:ADMtype:shapeID, e.g. FRA:ADM1:12345." }, "polygon": { "title": "Polygon", "type": "string", "description": "A GeoJSON polygon — the coordinates array (rings of [lng,lat], longitude first) as a JSON string." }, "place_ids": { "title": "Place IDs", "type": "array", "description": "Google place IDs (e.g. ChIJ...) to fetch directly. Results are merged and duplicates removed.", "items": { "type": "string" } }, "min_rating": { "title": "Minimum rating", "minimum": 0, "maximum": 5, "type": "number", "description": "Only keep places rated this high or higher (0 to 5, in 0.5 steps)." }, "open_now": { "title": "Open now only", "type": "boolean", "description": "Only keep places that are currently open.", "default": false }, "price_levels": { "title": "Price levels", "type": "array", "description": "Only keep these price levels.", "items": { "type": "string", "enum": [ "FREE", "INEXPENSIVE", "MODERATE", "EXPENSIVE", "VERY_EXPENSIVE" ], "enumTitles": [ "Free", "Inexpensive", "Moderate", "Expensive", "Very expensive" ] } }, "ranking": { "title": "Sort by", "enum": [ "", "relevance", "distance" ], "type": "string", "description": "How to order the results.", "default": "" }, "country": { "title": "Country bias", "type": "string", "description": "Bias results toward a country/region (2-letter code, e.g. fr, us)." }, "strict_type": { "title": "Strict type match", "type": "boolean", "description": "Only keep places whose primary type exactly matches one of the Place types.", "default": false }, "service_area_businesses": { "title": "Include service-area businesses", "type": "boolean", "description": "Also include businesses that visit or deliver to customers but have no physical address (e.g. plumbers, cleaning services).", "default": false }, "future_openings": { "title": "Include future openings", "type": "boolean", "description": "Also include businesses that are not open yet but will open in the future.", "default": false }, "post_filters": { "title": "Post-request filters", "type": "object", "description": "Conditions checked against each place's fetched details (the search request itself can't filter these). Each key is a detail field and each value is a condition. Fields: website, phone ({\"exists\": true|false}), is_open ({\"eq\": true|false}), reviews, rating ({\"gt\"|\"gte\"|\"lt\"|\"lte\": number}), price ({\"in\": [\"MODERATE\",...]} or {\"contains\": \"$$\"})." }, "limit": { "title": "Max results", "minimum": 1, "type": "integer", "description": "Maximum number of places to return across the whole run. Higher values take longer and cost more.", "default": 60 }, "language": { "title": "Language", "type": "string", "description": "Language code for returned text, e.g. en, fr, es, de, pt-BR, zh-TW. Results are returned in this language where the source supports it.", "default": "en" } } }, "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 } } } } } } } } }}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 Places Search 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: