Google Maps Scraper - Places, Reviews, Emails & Socials
Pricing
from $2.49 / 1,000 places
Go to Apify Store
Google Maps Scraper - Places, Reviews, Emails & Socials
Pricing
from $2.49 / 1,000 places
You can access the Google Maps Scraper - Places, Reviews, Emails & Socials 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.0", "x-build-id": "xROgMq8ME8ggJMYa1" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/lanternlab318~google-maps/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-lanternlab318-google-maps", "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/lanternlab318~google-maps/runs": { "post": { "operationId": "runs-sync-lanternlab318-google-maps", "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/lanternlab318~google-maps/run-sync": { "post": { "operationId": "run-sync-lanternlab318-google-maps", "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": { "searchTerms": { "title": "Search terms", "type": "array", "description": "What to search Google Maps for, one per line: \"coffee shop\", \"dentist\", \"hotel\". Each term is searched separately in the location below and its results are labelled with it. A place that matches several of your terms is returned once and charged once.", "items": { "type": "string" } }, "location": { "title": "Location", "type": "string", "description": "City, region or country to search in: \"Austin, TX\", \"Berlin, Germany\", \"São Paulo\", \"Tokyo\". It is appended to every search term as \"<term> in <location>\" unless the term already names it. Leave it empty only when your terms name the place themselves." }, "placeUrls": { "title": "Place links or place IDs", "type": "array", "description": "Collect specific places instead of, or in addition to, searching. Paste a Google Maps place URL (https://www.google.com/maps/place/...), a short link (https://maps.app.goo.gl/...), a ?cid= link, or a place ID (ChIJ...). Search terms are not required when this is filled in.", "items": { "type": "string" } }, "maxPlaces": { "title": "Max places per search term", "minimum": 1, "maximum": 500, "type": "integer", "description": "Upper bound on the places one search term may produce. Never exceeded: with 20 you get at most 20 rows per term and pay for at most 20 places. Google serves 20 places per page.", "default": 20 }, "includeReviews": { "title": "Add public reviews", "type": "boolean", "description": "Also write the public reviews Google shows for each place as separate rows: star rating, text, publish time and the reviewer's public display name. Google shows signed-out visitors only a handful of reviews per place (usually 5); each place row says when its full review list is longer. One extra request per place.", "default": false }, "maxReviewsPerPlace": { "title": "Max reviews per place", "minimum": 1, "maximum": 20, "type": "integer", "description": "Upper bound on the review rows one place may produce. Only used when Add public reviews is on.", "default": 5 }, "includeContacts": { "title": "Add e-mails and social profiles from the website", "type": "boolean", "description": "Read each place's own website (home page, and its contact page when the home page has nothing) for published e-mail addresses and links to Facebook, Instagram, X, LinkedIn (company pages), YouTube, TikTok and Pinterest. The contact event is charged only for places where at least one was actually found; places without a website, or whose website shows none, cost nothing extra. Addresses are not verified.", "default": false }, "language": { "title": "Language", "type": "string", "description": "Language Google answers in (names of categories, opening hours, review text where translated): \"en\", \"de\", \"es\", \"pt-BR\", \"ja\".", "default": "en" }, "countryCode": { "title": "Country code", "type": "string", "description": "Two-letter country code of the Google interface (\"us\", \"de\", \"mx\"). It does not limit results to that country - the location does that.", "default": "us" }, "maxUpstreamRequests": { "title": "Max Google requests", "minimum": 1, "type": "integer", "description": "Hard ceiling on the HTTP requests this run sends to Google: search pages, place cards and retries together (website requests for contacts are not counted). At the ceiling collection stops and the inputs not reached are marked partial with reason \"upstream_request_cap\". Leave empty and the Actor works a ceiling out from your inputs, so a run is never unbounded." }, "proxyConfiguration": { "title": "Proxy", "type": "object", "description": "The proxy requests go through. The default Apify Proxy works; a refused request is retried twice from a new IP, and a run that is refused anyway reports blocked, never zero results.", "default": { "useApifyProxy": true } } } }, "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 Scraper - Places, Reviews, Emails & Socials 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: