Google Maps Reviews Scraper
Pricing
from $5.00 / 1,000 results
Go to Apify Store
Google Maps Reviews Scraper
Scrape public Google Maps reviews, ratings, reviewer details, owner replies, images, and place data for reputation monitoring and research.
Google Maps Reviews Scraper
Pricing
from $5.00 / 1,000 results
Scrape public Google Maps reviews, ratings, reviewer details, owner replies, images, and place data for reputation monitoring and research.
You can access the Google Maps Reviews Scraper 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 Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "7cGhkBI5mMgJwvio2" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/qaseemiqbal~google-maps-reviews-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-qaseemiqbal-google-maps-reviews-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/qaseemiqbal~google-maps-reviews-scraper/runs": { "post": { "operationId": "runs-sync-qaseemiqbal-google-maps-reviews-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/qaseemiqbal~google-maps-reviews-scraper/run-sync": { "post": { "operationId": "run-sync-qaseemiqbal-google-maps-reviews-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": { "startUrls": { "title": "Google Maps place or review URLs", "type": "array", "description": "Google Maps URLs to scrape. Supports place URLs, review URLs, and search URLs containing a place ID.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "bulkInput": { "title": "Bulk targets", "type": "string", "description": "Optional newline-separated Google Maps URLs, Place IDs, CIDs, or FIDs." }, "placeIds": { "title": "Google Place IDs", "type": "array", "description": "Optional list of Google Place IDs.", "items": { "type": "string", "minLength": 8 } }, "cidFids": { "title": "CID/FID targets", "type": "array", "description": "Optional list of Google Maps CID/FID targets.", "items": { "type": "object", "properties": { "cid": { "title": "CID", "type": "string", "description": "Google Maps customer ID / CID." }, "fid": { "title": "FID", "type": "string", "description": "Google Maps feature ID / FID." }, "title": { "title": "Place title", "type": "string", "description": "Optional place title for logs and output." } }, "additionalProperties": false } }, "inputDatasetId": { "title": "Input dataset ID", "type": "string", "description": "Optional Apify Dataset ID containing targets." }, "inputDatasetTargetField": { "title": "Input dataset target field", "type": "string", "description": "Field in the input dataset that contains Google Maps URL or Place ID.", "default": "url" }, "requestQueueName": { "title": "Named request queue", "type": "string", "description": "Optional named request queue for resumed or distributed runs." }, "maxReviewsPerPlace": { "title": "Maximum reviews per place", "minimum": 0, "maximum": 100000, "type": "integer", "description": "Maximum number of reviews to collect for each place. Set to 0 for best-effort all available reviews.", "default": 50 }, "maxTotalReviews": { "title": "Maximum total reviews", "minimum": 0, "type": "integer", "description": "Global cap across all places. Set to 0 for no global cap.", "default": 0 }, "reviewsOrigin": { "title": "Reviews origin", "enum": [ "google", "all", "third_party_best_effort" ], "type": "string", "description": "Choose Google-native reviews for highest Google review coverage. All reviews may include third-party sources where shown by Google Maps.", "default": "google" }, "sortBy": { "title": "Sort reviews by", "enum": [ "newest", "most_relevant", "highest_rating", "lowest_rating" ], "type": "string", "description": "Newest is recommended, especially when using date filters or incremental mode.", "default": "newest" }, "dateFrom": { "title": "Published from", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string", "description": "Optional ISO date YYYY-MM-DD. Only supported with Sort reviews by = Newest." }, "dateTo": { "title": "Published until", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string", "description": "Optional ISO date YYYY-MM-DD. Only supported with Sort reviews by = Newest." }, "minStars": { "title": "Minimum stars", "minimum": 1, "maximum": 5, "type": "integer", "description": "Minimum star rating to include in the output.", "default": 1 }, "maxStars": { "title": "Maximum stars", "minimum": 1, "maximum": 5, "type": "integer", "description": "Maximum star rating to include in the output.", "default": 5 }, "language": { "title": "Google Maps language", "pattern": "^[a-z]{2,3}(-[A-Z]{2})?$", "type": "string", "description": "Language code used for Google Maps UI and translated text where available.", "default": "en" }, "countryCode": { "title": "Country code", "pattern": "^[A-Z]{2}$", "type": "string", "description": "Optional two-letter country code hint for localization." }, "includePlaceDetails": { "title": "Include place details", "type": "boolean", "description": "Include place title, URL, address, category, score, review count, coordinates, and closure flags.", "default": true }, "includeReviewerDetails": { "title": "Include reviewer details", "type": "boolean", "description": "Include reviewer name, profile URL, reviewer ID, review count, Local Guide status, and photo URL.", "default": true }, "includeOwnerResponses": { "title": "Include owner responses", "type": "boolean", "description": "Extract owner response text and response date when visible.", "default": true }, "includeReviewImages": { "title": "Include review images", "type": "boolean", "description": "Extract URLs of images attached to reviews. Disabled by default to reduce runtime and bandwidth.", "default": false }, "includeReviewContext": { "title": "Include review context", "type": "boolean", "description": "Extract extra review context such as visit metadata when visible. Disabled by default for lower cost.", "default": false }, "includeDetailedRatings": { "title": "Include detailed ratings", "type": "boolean", "description": "Extract category-level ratings such as service, rooms, location, food, or atmosphere when visible.", "default": false }, "includeTranslations": { "title": "Include translations", "type": "boolean", "description": "Extract original and translated review text where Google Maps displays translations.", "default": false }, "onlyReviewsWithText": { "title": "Only reviews with text", "type": "boolean", "description": "Skip rating-only reviews and include only reviews with text or translated text.", "default": false }, "onlyReviewsWithImages": { "title": "Only reviews with images", "type": "boolean", "description": "Include only reviews that contain one or more image URLs.", "default": false }, "onlyLocalGuides": { "title": "Only Local Guides", "type": "boolean", "description": "Include only reviews from Local Guides when that status is visible.", "default": false }, "onlyUnansweredReviews": { "title": "Only unanswered reviews", "type": "boolean", "description": "Include only reviews without an owner response.", "default": false }, "minLikesCount": { "title": "Minimum likes count", "minimum": 0, "type": "integer", "description": "Include only reviews with at least this many likes.", "default": 0 }, "incrementalMode": { "title": "Incremental mode", "type": "boolean", "description": "Only output reviews that were not seen in previous runs for the configured state key.", "default": false }, "stateKey": { "title": "State key", "type": "string", "description": "Optional key namespace for persisted seen review IDs. Defaults to actor name plus normalized target list hash." }, "deduplicateWithinRun": { "title": "Deduplicate within run", "type": "boolean", "description": "Skip duplicate review IDs encountered during the same Actor run.", "default": true }, "deduplicateAcrossRuns": { "title": "Deduplicate across runs", "type": "boolean", "description": "Skip review IDs stored in previous run state. Automatically enabled when incremental mode is enabled.", "default": false }, "maxConcurrency": { "title": "Maximum concurrency", "minimum": 1, "maximum": 20, "type": "integer", "description": "Maximum number of Google Maps places processed in parallel. Lower values are cheaper and use less memory.", "default": 1 }, "maxRequestRetries": { "title": "Maximum request retries", "minimum": 0, "maximum": 10, "type": "integer", "description": "Maximum retry attempts for a failed place request.", "default": 1 }, "navigationTimeoutSecs": { "title": "Navigation timeout", "minimum": 10, "maximum": 300, "type": "integer", "description": "Maximum seconds to wait for initial Google Maps page navigation.", "default": 45 }, "requestHandlerTimeoutSecs": { "title": "Place processing timeout", "minimum": 30, "maximum": 1800, "type": "integer", "description": "Maximum seconds to spend processing one place.", "default": 90 }, "sameDomainDelaySecs": { "title": "Same-domain delay", "minimum": 0, "maximum": 60, "type": "integer", "description": "Delay between Google Maps page requests in seconds.", "default": 0 }, "maxIdleScrolls": { "title": "Maximum idle scrolls", "minimum": 1, "maximum": 20, "type": "integer", "description": "Stop scrolling after this many scroll attempts add no new review cards.", "default": 2 }, "resourceLoadMode": { "title": "Page asset loading", "enum": [ "cheapest", "balanced", "full" ], "type": "string", "description": "Cheapest blocks images, fonts, media, stylesheets, ads, analytics, and tracking requests. Balanced keeps stylesheets for UI reliability. Full only blocks obvious nonessential media.", "default": "cheapest" }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Select proxies to use. Apify Proxy is recommended for reliable scraping.", "default": { "useApifyProxy": true } }, "outputEmptyPlaces": { "title": "Output empty places", "type": "boolean", "description": "Write a place status record when no reviews are saved for a place.", "default": true }, "outputFormatMode": { "title": "Output format mode", "enum": [ "flat", "nested" ], "type": "string", "description": "Choose flat records for CSV-friendly output or nested records for structured data consumers.", "default": "flat" }, "saveDebugArtifacts": { "title": "Save debug artifacts", "type": "boolean", "description": "Save screenshot and HTML debug files after final extraction failures.", "default": false }, "debugLog": { "title": "Debug logging", "type": "boolean", "description": "Enable verbose logging for troubleshooting.", "default": false }, "analysisMode": { "title": "Analysis mode", "enum": [ "none", "basic", "advanced" ], "type": "string", "description": "Optional local review enrichment with sentiment, keywords, complaint categories, and response suggestions.", "default": "none" }, "analysisLanguage": { "title": "Analysis language", "pattern": "^[a-z]{2,3}(-[A-Z]{2})?$", "type": "string", "description": "Language for premium analysis output.", "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 Maps Reviews Scraper 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: