{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Review & Contributor Activity Scraper",
    "description": "Get reviews for any Google Maps business or place, or switch to author mode to pull everything one Google reviewer has written. Includes ratings, review text, dates, likes, and owner replies.",
    "version": "1.1",
    "x-build-id": "JH65XCXfaCu7jh0t2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nimbryxo-studio~google-maps-review-and-contributor-activity/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nimbryxo-studio-google-maps-review-and-contributor-activity",
        "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/nimbryxo-studio~google-maps-review-and-contributor-activity/runs": {
      "post": {
        "operationId": "runs-sync-nimbryxo-studio-google-maps-review-and-contributor-activity",
        "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/nimbryxo-studio~google-maps-review-and-contributor-activity/run-sync": {
      "post": {
        "operationId": "run-sync-nimbryxo-studio-google-maps-review-and-contributor-activity",
        "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": {
          "mode": {
            "title": "What do you want to collect?",
            "enum": [
              "place",
              "search",
              "author"
            ],
            "type": "string",
            "description": "Reviews of places you list, reviews of places found by a search, or everything specific Google reviewers have published.",
            "default": "place"
          },
          "placeUrls": {
            "title": "Places",
            "type": "array",
            "description": "Google Maps place links or IDs, one per line. Accepted: place links (also shared maps.app.goo.gl, goo.gl, g.page and share.google links, ?cid= links and review links), Place IDs starting with ChIJ, feature IDs like 0x89c259ab3c1ef289:0x3b67a41175949f55 and numeric CIDs. Used when collecting reviews of specific places.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Searches",
            "type": "array",
            "description": "Google Maps searches such as \"dentists in Austin, TX\" or \"ramen Shibuya Tokyo\". Include a city or area in each search. Used when finding places by search.",
            "items": {
              "type": "string"
            }
          },
          "maxPlacesPerQuery": {
            "title": "Places per search",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many places to take from each search. One Google search lists about 120 to 360 places; when you ask for more, the actor also searches sub-areas of the same region to reach them.",
            "default": 20
          },
          "contributorUrls": {
            "title": "Reviewers",
            "type": "array",
            "description": "Google Maps reviewer profile links (for example https://www.google.com/maps/contrib/108763873723673205857, or a shared maps.app.goo.gl profile link) or numeric reviewer IDs. Used when collecting everything specific reviewers have written.",
            "items": {
              "type": "string"
            }
          },
          "maxReviews": {
            "title": "Maximum reviews per place or reviewer",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Upper limit of reviews collected for each place, or for each reviewer. Google publishes up to 200 contributions per reviewer.",
            "default": 50
          },
          "sortBy": {
            "title": "Sort reviews by",
            "enum": [
              "newest",
              "relevant",
              "highest_rating",
              "lowest_rating"
            ],
            "type": "string",
            "description": "Order of a place's reviews. Newest first and most relevant reach a place's complete review history; Google lists at most 188 reviews per star level in rating order.",
            "default": "newest"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "pt-BR",
              "ja",
              "ko",
              "zh",
              "zh-TW",
              "ar",
              "ru",
              "hi",
              "tr",
              "nl",
              "pl",
              "id",
              "th",
              "vi",
              "he",
              "sv",
              "uk"
            ],
            "type": "string",
            "description": "Language of Google Maps labels such as \"2 weeks ago\". Reviews written in another language also come with Google's translation into this language.",
            "default": "en"
          },
          "reviewsNewerThan": {
            "title": "Only reviews from",
            "type": "string",
            "description": "Keep reviews dated on or after this day, for example 2026-01-01, or a period such as 30 days. Reviews are then read newest first."
          },
          "reviewsOlderThan": {
            "title": "Only reviews until",
            "type": "string",
            "description": "Keep reviews dated on or before this day. Combine with \"Only reviews from\" for a date range."
          },
          "keyword": {
            "title": "Only reviews mentioning",
            "type": "string",
            "description": "Words a review must mention, for example \"parking\" or \"long wait\". For places this uses Google's own review search, which also matches close word forms."
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Keep only reviews with these star ratings. Leave empty for all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "onlyWithText": {
            "title": "Only reviews with written text",
            "type": "boolean",
            "description": "Skip star-only reviews that have no written text.",
            "default": false
          },
          "ownerReplyFilter": {
            "title": "Owner reply",
            "enum": [
              "any",
              "withReply",
              "withoutReply"
            ],
            "type": "string",
            "description": "Keep all reviews, only reviews the business replied to, or only reviews still without a reply.",
            "default": "any"
          },
          "onlyWithPhotos": {
            "title": "Only reviews with photos or videos",
            "type": "boolean",
            "description": "Keep only reviews that include photos or videos.",
            "default": false
          },
          "reviewLanguages": {
            "title": "Review languages",
            "type": "array",
            "description": "Keep only reviews written in these languages, as two-letter codes such as en, es, ko. Leave empty for all languages.",
            "items": {
              "type": "string"
            }
          },
          "monitoringKey": {
            "title": "Only new reviews since the last run (monitoring name)",
            "type": "string",
            "description": "Give scheduled runs the same name, for example my-restaurants. Each run then returns only reviews added or edited since the previous run with that name."
          },
          "includePlaceSummary": {
            "title": "Add a place summary record",
            "type": "boolean",
            "description": "Adds one record per place with its rating breakdown by stars, review topics, location, contact details and how many reviews were collected. These records have recordType \"place\".",
            "default": false
          },
          "includeContributorSummary": {
            "title": "Add a reviewer summary record",
            "type": "boolean",
            "description": "Adds one record per reviewer with their Local Guide level, points and lifetime contribution counts. These records have recordType \"contributor\".",
            "default": false
          },
          "includeReviewerDetails": {
            "title": "Include reviewer names and profiles",
            "type": "boolean",
            "description": "Turn off to leave out reviewer names, profile pictures, profile links and reviewer IDs from place reviews.",
            "default": true
          },
          "enrichReviewerProfiles": {
            "title": "Add likes, edit dates and Local Guide levels (slower)",
            "type": "boolean",
            "description": "For place reviews, also open each reviewer's public profile to add likes, first-published and edited dates, view counts, owner-reply dates and the reviewer's Local Guide level. Adds one request per reviewer. Reviews by private profiles, or older than a reviewer's 200 most recent contributions, keep the standard fields.",
            "default": false
          },
          "includePartnerReviews": {
            "title": "Add hotel reviews from partner sites (Tripadvisor, Trip.com, …)",
            "type": "boolean",
            "description": "Hotels on Google Maps also show reviews from partner sites such as Tripadvisor, Trip.com or Priceline. Turn on to add those reviews as separate records (recordType partnerReview), up to Max reviews per partner site, newest first. Places without partner reviews are not affected.",
            "default": false
          },
          "includePhotoDetails": {
            "title": "Add photo details (size and upload date, slower)",
            "type": "boolean",
            "description": "For place reviews with photos or videos, add the width, height and upload date of each one. Adds one request per photo.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}