{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper & Cross-Platform Review Monitor",
    "description": "Monitor public Google Maps listings and recent reviews, with optional App Store matching, rating gaps, response rates, and heuristic signals. Not a full-history export; result caps apply. Google Play review extraction is currently unavailable.",
    "version": "9.15",
    "x-build-id": "kbdGYDgKeSj5uP6Fy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ntriqpro~google-maps-reviews-plus/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ntriqpro-google-maps-reviews-plus",
        "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/ntriqpro~google-maps-reviews-plus/runs": {
      "post": {
        "operationId": "runs-sync-ntriqpro-google-maps-reviews-plus",
        "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/ntriqpro~google-maps-reviews-plus/run-sync": {
      "post": {
        "operationId": "run-sync-ntriqpro-google-maps-reviews-plus",
        "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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries / Maps URLs / place IDs",
            "type": "array",
            "description": "Google Maps search queries, Maps URLs, place IDs, or 'business name, city' strings. The Actor returns structured place rows, available public Google review rows, optional App Store review rows matched by business name, and implemented reputation signals on each place row. Google Play review extraction is currently unavailable. At least one query is required. Free-account runs deliver at most 25 result rows across place and review rows, then finish normally with a notice. Paid plans receive the full available result set, subject to selected limits and public-source availability.",
            "items": {
              "type": "string"
            }
          },
          "maxPlacesPerQuery": {
            "title": "Max places per query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Customer-selected maximum number of Google Maps businesses to collect for each query. Free-account runs still deliver at most 25 total result rows across the run."
          },
          "maxReviewsPerPlace": {
            "title": "Max Google reviews per place",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Customer-selected maximum number of Google Maps reviews to collect per business. Google Maps public pages currently expose around five recent reviews per business, and free-account runs deliver at most 25 total result rows across the run."
          },
          "reviewsSort": {
            "title": "Google reviews sort order",
            "enum": [
              "newest",
              "relevant",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Order in which Google Maps reviews are fetched. Use Newest together with sinceTimestamp for incremental runs."
          },
          "sinceTimestamp": {
            "title": "Only reviews newer than (incremental mode)",
            "type": "string",
            "description": "ISO-8601 timestamp (for example 2026-08-01T00:00:00Z) or a Unix epoch. Only reviews published after this point are returned and charged, so a daily or weekly re-run costs a fraction of a full run. Google Maps publishes a relative age (\"3 months ago\"), so the cutoff is applied to an approximate date."
          },
          "negativeReviewAlert": {
            "title": "Only reviews at or below this rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Set to 2, for example, to return only 1- and 2-star reviews. Combine with sinceTimestamp and a webhook to get an alert whenever a new bad review appears. Leave empty to return every review."
          },
          "crossPlatforms": {
            "title": "Cross-platform review sources",
            "type": "array",
            "description": "Additional review sources to check for the same business, matched by business name. Trustpilot and Tripadvisor sit behind bot-challenge walls (403) and return a notice row instead of reviews; they are off by default.",
            "items": {
              "type": "string",
              "enum": [
                "appstore",
                "googleplay",
                "trustpilot",
                "tripadvisor"
              ],
              "enumTitles": [
                "App Store",
                "Google Play",
                "Trustpilot (blocked, off by default)",
                "Tripadvisor (blocked, off by default)"
              ]
            }
          },
          "maxReviewsPerPlatform": {
            "title": "Max reviews per cross-platform source",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of reviews to collect per business on each enabled cross-platform source."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code used to request results (for example en, ko, es)."
          },
          "countryCode": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country code used to bias search results (for example us, kr, gb)."
          },
          "includeContactDetails": {
            "title": "Include contact details",
            "type": "boolean",
            "description": "Read the business's own website (the one listed on its Google profile) for publicly posted email, phone and social links. Returned as a field on the business row at no extra charge."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Datacenter proxy is the default and is what we recommend; residential proxy costs far more per gigabyte and is rarely needed for Google Maps."
          },
          "browserConcurrency": {
            "title": "Parallel business pages",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many business pages the single browser opens at once. Higher is faster but uses more memory."
          },
          "startUrls": {
            "title": "Start URLs (optional)",
            "type": "array",
            "description": "Apify-standard list of Google Maps URLs to start from, as an alternative or addition to queries.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}