{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Reviews Scraper & API — Ratings, Photos, Replies",
    "description": "Scrape Google Maps reviews from business URLs or Place IDs. Extract review text, ratings, dates, photos and owner replies. Export CSV, Excel or JSON, or run via API. No Google login required. Paid plans: $0.30/1,000 reviews; Free: $2/1,000. Filtered scans cost extra.",
    "version": "1.0",
    "x-build-id": "YICRCjMUNRcqKjwlQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gauravlabs~google-maps-reviews-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gauravlabs-google-maps-reviews-api",
        "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/gauravlabs~google-maps-reviews-api/runs": {
      "post": {
        "operationId": "runs-sync-gauravlabs-google-maps-reviews-api",
        "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/gauravlabs~google-maps-reviews-api/run-sync": {
      "post": {
        "operationId": "run-sync-gauravlabs-google-maps-reviews-api",
        "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": {
          "placeUrls": {
            "title": "Google Maps business links — easiest option",
            "type": "array",
            "description": "Paste one or more Google Maps business URLs or Share links. Supports full links with a business ID, maps.app.goo.gl, goo.gl/maps and g.page redirects to Maps. General search/directions links without a business identifier cannot be resolved reliably. Remove this example when using only developer IDs.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Maximum reviews for each business",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Try 20 for a quick preview or 100 for a useful sample. This is a cap, not a guarantee; fewer reviews may be available.",
            "default": 100
          },
          "sort": {
            "title": "Which reviews first?",
            "enum": [
              "newest",
              "mostRelevant",
              "highestRating",
              "lowestRating"
            ],
            "type": "string",
            "description": "Newest is best for monitoring recent feedback. The Actor maps these friendly options to the review service's accepted values.",
            "default": "newest"
          },
          "language": {
            "title": "Language — e.g. en, hi or fr",
            "type": "string",
            "description": "Requests localized content and available translations. Original text is preserved. Guided rating keys may be localized; use en for stable English keys.",
            "default": "en"
          },
          "country": {
            "title": "Country perspective — e.g. us or in",
            "type": "string",
            "description": "Two-letter localization code, not a geographic filter.",
            "default": "us"
          },
          "includeReviewerDetails": {
            "title": "Include public reviewer profile details",
            "type": "boolean",
            "description": "Off by default. Turn on for available public reviewer name, profile URL, Local Guide status and contribution counts. Collect and use personal data responsibly.",
            "default": false
          },
          "includeImages": {
            "title": "Include review photo links",
            "type": "boolean",
            "description": "Returns image URLs when present. Does not download image files.",
            "default": true
          },
          "placeIds": {
            "title": "Google Place IDs",
            "type": "array",
            "description": "For example ChIJFTdlBPAoTIYRoJO88NsExVc. Clear the example business link to run only these IDs. Duplicate identities are skipped.",
            "items": {
              "type": "string"
            }
          },
          "dataIds": {
            "title": "Hexadecimal data IDs (feature IDs)",
            "type": "array",
            "description": "For example 0x864c28f004653715:0x57c504dbf0bc93a0. Fast direct review lookup. Do not supply a numeric CID here.",
            "items": {
              "type": "string"
            }
          },
          "cids": {
            "title": "Numeric Google CIDs",
            "type": "array",
            "description": "Quoted decimal strings, for example 6324466594394968992. Requires an additional place-identity lookup before reviews. Numeric JSON values are rejected to prevent precision loss.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Business links — Apify request-list format",
            "type": "array",
            "description": "Alternative to placeUrls, using inline objects such as [{\"url\":\"https://www.google.com/maps?cid=6324466594394968992\"}]. Remote list sources are not supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keyword": {
            "title": "Review text contains — optional",
            "type": "string",
            "description": "Case-insensitive literal substring filter on original text, not semantic search. Enables the $0.002-per-attempt filtered-scan fee, even for no matches or failed attempts. Cannot be combined with topicId."
          },
          "maxFilteredScanCostUsd": {
            "title": "Maximum filtered-scan charges (USD)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Additional scan budget only; excludes delivered-review charges. $0.05 permits at most 25 filtered API attempts. Applies when keyword, topic, date, rating, text/reply-only or skip-ID filters are active. Each attempt costs $0.002, including retries, empty/failed calls and CID resolution. Set 0 to prevent filtered API calls. Also set Apify's overall maximum run charge.",
            "default": 0.05
          },
          "topicId": {
            "title": "Topic ID — advanced",
            "type": "string",
            "description": "Copy a topic ID from the first-page topics in SUMMARY. Pass it unchanged. Cannot be combined with keyword."
          },
          "minimumRating": {
            "title": "Minimum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Applied locally before delivery. Filtering can require more pages for the same number of results.",
            "default": 1
          },
          "maximumRating": {
            "title": "Maximum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Set 2 to collect one- and two-star feedback.",
            "default": 5
          },
          "onlyWithText": {
            "title": "Skip star-only reviews",
            "type": "boolean",
            "description": "Only deliver reviews with non-empty original text.",
            "default": false
          },
          "onlyWithOwnerReply": {
            "title": "Only reviews with a business reply",
            "type": "boolean",
            "description": "Only deliver reviews that include an owner-response object.",
            "default": false
          },
          "reviewsSince": {
            "title": "Reviews from date — optional",
            "type": "string",
            "description": "Enter YYYY-MM-DD, e.g. 2026-10-01, or an ISO timestamp with timezone. Start is inclusive; date-only uses UTC. Use Newest first. Pagination is automatic and stops after the start-date boundary when observed dates are reliably newest-first. Missing or reordered dates disable early stopping. No page token needed. Date filters add $0.002 per API attempt; limits still apply."
          },
          "reviewsUntil": {
            "title": "Reviews through date — optional",
            "type": "string",
            "description": "Enter YYYY-MM-DD, e.g. 2026-10-20, to include that entire UTC day, or an inclusive ISO timestamp with timezone. Combine with From date for a range. Use Newest first. Pagination is automatic; older periods may require many pages and additional scan fees. Missing publication dates are skipped."
          },
          "skipReviewIds": {
            "title": "Skip review IDs from an earlier run",
            "type": "array",
            "description": "Optional incremental collection: up to 10,000 IDs. These reviews are skipped before delivery. No automatic cross-run memory is implied.",
            "items": {
              "type": "string"
            }
          },
          "nextPageToken": {
            "title": "Continue from a pagination token",
            "type": "string",
            "description": "One business only. Copy nextPageToken from SUMMARY, retain the same sort, filters and language, and optionally supply skipReviewIds. Tokens may expire. Resume is unavailable if a page was only partially delivered."
          },
          "maxReviews": {
            "title": "Maximum reviews across the whole run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Global delivery cap across all input businesses.",
            "default": 1000
          },
          "maxPlaces": {
            "title": "Maximum businesses to process",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Process only the first N unique input tasks.",
            "default": 20
          },
          "maxPagesPerPlace": {
            "title": "Maximum review pages per business",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Prevents expensive scanning when filters discard most reviews.",
            "default": 50
          },
          "pageSize": {
            "title": "Requested reviews per page",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Up to 20. The service can return fewer; the Actor follows only actual continuation tokens.",
            "default": 20
          },
          "maxRequests": {
            "title": "Maximum HTTP attempts, including retries and URL resolution",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on all review calls, CID lookups, redirect hops and retries.",
            "default": 100
          },
          "requestRetries": {
            "title": "Retries for transient service failures",
            "minimum": 0,
            "maximum": 1,
            "type": "integer",
            "description": "Retry a temporary network/server failure at most once.",
            "default": 1
          },
          "requestTimeoutSecs": {
            "title": "Timeout per attempt (seconds)",
            "minimum": 10,
            "maximum": 90,
            "type": "integer",
            "description": "Timeout for one API call, clamped to the remaining time budget.",
            "default": 60
          },
          "maxRunSecs": {
            "title": "Collection time budget (seconds)",
            "minimum": 20,
            "maximum": 3600,
            "type": "integer",
            "description": "Preserve completed rows near the deadline. Apify's run timeout can impose a lower limit. The tested memory allocation is capped at 256 MB.",
            "default": 240
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}