{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper: Reviews, Hours & Change Monitoring",
    "description": "Scrape Google Maps businesses with reviews, weekly opening hours and popular times in one run. Watchlist + diff engine detects phone, website, hours, rating and new-review changes; webhook alerts. Every field carries provenance and confidence. No Google account needed.",
    "version": "0.1",
    "x-build-id": "vBwn9cHxfQ4UescPD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/farside~gmaps-lead-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-farside-gmaps-lead-radar",
        "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/farside~gmaps-lead-radar/runs": {
      "post": {
        "operationId": "runs-sync-farside-gmaps-lead-radar",
        "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/farside~gmaps-lead-radar/run-sync": {
      "post": {
        "operationId": "run-sync-farside-gmaps-lead-radar",
        "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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for, e.g. \"coffee shop\". Combined with the location below. Leave empty if you supply place IDs instead.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or address to search in, e.g. \"Austin, TX\"."
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "Capture these exact places and skip discovery. A place ID looks like ChIJ1S_Bov20RIYRe7MiR8tYawY.",
            "items": {
              "type": "string"
            }
          },
          "maxPlaces": {
            "title": "Maximum places",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper bound on places captured in this run. Google caps a single query at roughly 120 results.",
            "default": 20
          },
          "captureReviews": {
            "title": "Capture reviews",
            "type": "boolean",
            "description": "Reviews need a browser, which is slower and uses more memory. Turn this off for fast profile-only runs.",
            "default": true
          },
          "browserEnrichment": {
            "title": "Browser enrichment",
            "type": "boolean",
            "description": "Use a browser to add weekly opening hours and popular times. These fields have no browser-free source. Turn off for the fastest possible profile-only run.",
            "default": true
          },
          "maxReviewsPerPlace": {
            "title": "Maximum reviews per place",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Reviews are emitted as separate dataset items referencing the placeId.",
            "default": 10
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google interface language code, e.g. \"en\".",
            "default": "en"
          },
          "countryCode": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country code used for the search and the proxy, e.g. \"us\".",
            "default": "us"
          },
          "watchlistMode": {
            "title": "Change monitoring",
            "type": "boolean",
            "description": "Compare this run against the stored baseline and emit change events instead of only profiles.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Change events are POSTed here as JSON when change monitoring is on."
          },
          "proxyUrl": {
            "title": "Custom proxy URL",
            "type": "string",
            "description": "Optional. Overrides the platform proxy. Must be one URL (for all traffic)."
          },
          "proxyGroups": {
            "title": "Proxy groups (cheapest first)",
            "type": "array",
            "description": "Apify proxy group names in order of preference. Leave empty for automatic selection: the run puts a datacenter-class group first (one it can detect for your account, or the proxy's own automatic selection), with RESIDENTIAL as the automatic fallback. Cheaper groups usually cost nothing per GB but Google may serve a degraded view from them; RESIDENTIAL costs per GB and is the always-reliable option. When a source keeps failing the run steps down to the next one automatically. Browser runs that would end up on a metered residential proxy are declined with a clear status message (that path costs more per place than the $0.01 place price covers); disable review capture or browser enrichment to run without one.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "headlessBrowser": {
            "title": "Run the browser headless",
            "type": "boolean",
            "description": "Off by default. Google serves headless Chromium a limited view of Maps with no reviews pane.",
            "default": false
          },
          "simulateFriction": {
            "title": "Simulate friction (testing)",
            "enum": [
              "none",
              "no-browser",
              "search-stub",
              "detail-fail"
            ],
            "type": "string",
            "description": "Test hook. Injects a failure so you can verify the actor degrades through its capability tiers instead of dying.",
            "default": "none"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}