{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Review Scraper $0.25 per 1k results",
    "description": "Scrape Google Maps reviews at scale for any business or place using URLs, place names, or Place IDs. This actor extracts full review data—including rating, text, date, reviewer name and profile, photos, likes, and owner responses. Perfect for sentiment analysis, reputation monitoring, local SEO.",
    "version": "0.0",
    "x-build-id": "oNdK1caiYGheO9MxZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/autoharvestor~2-Google-maps-review-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-autoharvestor-2-Google-maps-review-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/autoharvestor~2-Google-maps-review-scraper/runs": {
      "post": {
        "operationId": "runs-sync-autoharvestor-2-Google-maps-review-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/autoharvestor~2-Google-maps-review-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-autoharvestor-2-Google-maps-review-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 URLs or Names",
            "type": "array",
            "description": "URLs or place names of locations on Google Maps (e.g. https://www.google.com/maps/place/... or shortlinks https://maps.app.goo.gl/... or Pashupatinath Temple).",
            "items": {
              "type": "object",
              "required": [
                "glob"
              ],
              "properties": {
                "glob": {
                  "type": "string",
                  "title": "Glob of a web page"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search queries / Place names",
            "type": "array",
            "description": "Place names or search terms (e.g. Pashupatinath Temple, Kathmandu). Alternative or in addition to startUrls.",
            "items": {
              "type": "string"
            }
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "Google Place IDs (e.g. ChIJN1t_tDeuEmsRUsoyG83frY4). Alternative or in addition to startUrls.",
            "items": {
              "type": "string"
            }
          },
          "maxReviews": {
            "title": "Max reviews per place",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of reviews to scrape per place.",
            "default": 100
          },
          "reviewsSort": {
            "title": "Reviews Sort Order",
            "enum": [
              "newest",
              "mostRelevant",
              "highestRating",
              "lowestRating"
            ],
            "type": "string",
            "description": "Sort order for reviews. Note: Date filtering is only supported when sorted by Newest.",
            "default": "newest"
          },
          "reviewsOrigin": {
            "title": "Reviews Origin",
            "enum": [
              "all",
              "google"
            ],
            "type": "string",
            "description": "Google-native reviews only or all (blended with third-party sources like TripAdvisor for hotels).",
            "default": "all"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only include reviews with rating ≥ this value.",
            "default": 1
          },
          "maxRating": {
            "title": "Maximum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only include reviews with rating ≤ this value.",
            "default": 5
          },
          "languageFilter": {
            "title": "Language filter",
            "type": "string",
            "description": "Filter reviews by language code (e.g. en, de, fr, es, it, pt, ja, zh, etc.). Use 'all' or empty to disable filtering.",
            "default": "all"
          },
          "dateFrom": {
            "title": "Date range – from",
            "type": "string",
            "description": "Only include reviews published on or after this date (format YYYY-MM-DD or ISO 8601). Leave empty to ignore."
          },
          "dateTo": {
            "title": "Date range – to",
            "type": "string",
            "description": "Only include reviews published on or before this date (format YYYY-MM-DD or ISO 8601). Leave empty to ignore."
          },
          "reviewsNewerThanDays": {
            "title": "Reviews newer than (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include reviews from the last N days. If set, this overrides the absolute date filters. Leave empty or 0 to disable."
          },
          "keywordFilter": {
            "title": "Keyword filter",
            "type": "string",
            "description": "Only include reviews whose text contains this keyword/phrase (case-insensitive). Leave empty to disable."
          },
          "onlyWithImages": {
            "title": "Include reviews with images only",
            "type": "boolean",
            "description": "If true, only include reviews that have at least one image attached.",
            "default": false
          },
          "onlyWithOwnerResponse": {
            "title": "Include reviews with owner response only",
            "type": "boolean",
            "description": "If true, only include reviews that have a response from the business/owner.",
            "default": false
          },
          "language": {
            "title": "Google Maps UI Language",
            "type": "string",
            "description": "Google Maps UI language parameter (e.g. en, fr, de, es).",
            "default": "en"
          },
          "includeImages": {
            "title": "Include Review Images",
            "type": "boolean",
            "description": "Whether to extract photo URLs attached to reviews.",
            "default": true
          },
          "includeReviewerDetails": {
            "title": "Include Reviewer Details (GDPR Compliance)",
            "type": "boolean",
            "description": "When unchecked, anonymizes reviewer name, ID, profile URL, and photo for personal data compliance.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Select proxies to be used by the scraper. Apify Residential Proxies are enabled by default for Google Maps.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of places scraped in parallel (concurrency > 1 yields faster results for multiple places).",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}