{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Reviews Scraper API",
    "description": "Get all Google Maps reviews - fast and at scale. Scrape millions of reviews with text, ratings, dates, reviewer profiles, owner replies, photos & business data. Powerful Google Maps Reviews Scraper & API with bulk scraping and structured exports.",
    "version": "0.1",
    "x-build-id": "mDJWoC7nAmbovcts7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/poidata~google-maps-reviews-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-poidata-google-maps-reviews-scraper-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/poidata~google-maps-reviews-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-poidata-google-maps-reviews-scraper-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/poidata~google-maps-reviews-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-poidata-google-maps-reviews-scraper-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": {
          "startUrls": {
            "title": "Google Maps place URLs",
            "minItems": 1,
            "type": "array",
            "description": "List of Google Maps URLs to scrape reviews from. Accepts place URLs (/maps/place/...), search URLs (/maps/search/...), review URLs (/maps/reviews/...), and links with a cid= parameter (e.g. google.com/maps?cid=***). Paste one URL per line; use Bulk edit to add many at once.",
            "items": {
              "type": "string"
            }
          },
          "fids": {
            "title": "Place IDs",
            "minItems": 1,
            "type": "array",
            "description": "List of Google Maps place IDs (e.g. ChIJB4cC_1RYwokRu6mRBD_lqO8). Paste one ID per line or use Bulk edit.",
            "items": {
              "type": "string"
            }
          },
          "maxReviews": {
            "title": "Number of reviews",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of reviews to collect per place. The actor keeps fetching until it has collected this many reviews that pass your filters, or until there are no more reviews. To scrape a place's full review history, enable 'Collect all reviews' below. Ignored when Collect all reviews is enabled.",
            "default": 10
          },
          "collectAllReviews": {
            "title": "Collect all reviews",
            "type": "boolean",
            "description": "Scrape every review for each place, ignoring the number-of-reviews limit. ⚠️ Warning: collecting all reviews can produce a very large number of results and incur significant usage charges — only enable this when you truly need the full review history.",
            "default": false
          },
          "reviewsSort": {
            "title": "Sort reviews by",
            "enum": [
              "newest",
              "mostRelevant",
              "highestRanking",
              "lowestRanking"
            ],
            "type": "string",
            "description": "Order in which reviews are returned: Newest, Most relevant, Highest rating, or Lowest rating. Note: 'Newest' is required when a date filter (Only scrape reviews newer than [date]) is set.",
            "default": "newest"
          },
          "reviewsStartDate": {
            "title": "Only scrape reviews newer than [date]",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$",
            "type": "string",
            "description": "Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative  (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. <br><br> ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The actor skips reviews older than the specified date and stops scraping when an entire page of reviews is older than it."
          },
          "reviewsFilterString": {
            "title": "Filter reviews by keywords",
            "type": "string",
            "description": "Only keep reviews whose text contains these keywords (case-insensitive; all words must appear). Leave it blank to scrape all reviews."
          },
          "skipReviewsWithoutText": {
            "title": "Skip reviews without text",
            "type": "boolean",
            "description": "Enabled by default: photo-only reviews (no review text) are filtered out and only reviews with text are scraped. Uncheck to keep them. The actor keeps fetching until it has collected the requested number of reviews (maxReviews) that pass this filter.",
            "default": true
          },
          "language": {
            "title": "Language",
            "enum": [
              "all",
              "af",
              "am",
              "ar",
              "az",
              "bg",
              "bn",
              "bs",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "et",
              "eu",
              "fa",
              "fi",
              "fil",
              "fr",
              "gl",
              "gu",
              "hi",
              "hr",
              "hu",
              "hy",
              "id",
              "is",
              "it",
              "iw",
              "ja",
              "ka",
              "kk",
              "km",
              "kn",
              "ko",
              "ky",
              "lo",
              "lt",
              "lv",
              "mk",
              "ml",
              "mn",
              "mr",
              "ms",
              "my",
              "ne",
              "nl",
              "no",
              "pa",
              "pl",
              "pt",
              "ro",
              "ru",
              "si",
              "sk",
              "sl",
              "sq",
              "sr",
              "sv",
              "sw",
              "ta",
              "te",
              "th",
              "tr",
              "uk",
              "ur",
              "uz",
              "vi",
              "zh",
              "zh-Hant",
              "zu"
            ],
            "type": "string",
            "description": "Language for review translations. The API returns each review with its original text plus a translation into this language. Choose \"All languages\" to keep the API's default translation.",
            "default": "en"
          },
          "reviewsOrigin": {
            "title": "Reviews origin",
            "enum": [
              "all",
              "google"
            ],
            "type": "string",
            "description": "Which review sources to include: All reviews (Google and other platforms) or Google only.",
            "default": "all"
          },
          "personalData": {
            "title": "Personal data",
            "type": "boolean",
            "description": "This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting.\n\nPersonal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}