{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper",
    "description": "Extract business data from Google Maps including ratings, reviews, contact info, prices, coordinates, and images. Fast scraper with automatic pagination for any location or search query.",
    "version": "3.7",
    "x-build-id": "pGJAnGTjaFEk1ypEg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-google-maps-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/crawlerbros~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-google-maps-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/crawlerbros~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-google-maps-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "placeUrls",
              "placeIds"
            ],
            "type": "string",
            "description": "Search mode uses a text query; placeUrls mode scrapes specific Maps URLs; placeIds mode resolves canonical ChIJ Place IDs through Google's public URL API.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "What to search for on Google Maps. Include location in the query for best results (e.g., 'coffee shop in New York'). Used when mode is 'search'."
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "Optional location to append to the search query (e.g., 'Los Angeles, CA'). Leave blank if location is already in the search query."
          },
          "placeUrls": {
            "title": "Place URLs",
            "type": "array",
            "description": "List of Google Maps place URLs to scrape directly. Used when mode is 'placeUrls'. Each URL should be a full Google Maps place URL.",
            "items": {
              "type": "string"
            }
          },
          "placeIds": {
            "title": "Google Place IDs",
            "minItems": 1,
            "type": "array",
            "description": "Canonical Google Place IDs beginning with ChIJ. The actor resolves them anonymously through Google's public Maps URL API.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Requested number of places to collect **per search**. With a batch of search terms or locations, every search gets its own allowance, so one busy term cannot use up the others. Records stop when the public feed ends, this ceiling is reached for that search, or the bounded runtime deadline expires.",
            "default": 20
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "ja",
              "ko",
              "zh",
              "ar",
              "ru"
            ],
            "type": "string",
            "description": "Language for Google Maps interface and results.",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for the scraper. Using Apify Proxy is recommended for reliable results."
          },
          "searchTerms": {
            "title": "Search terms (batch)",
            "type": "array",
            "description": "Run several search terms in one go, e.g. [\"coffee shops\", \"dentists\"]. Used with mode = search. Each term is searched in every location you provide, and every search gets its own maxResults allowance.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "locations": {
            "title": "Locations (batch)",
            "type": "array",
            "description": "Run the search in several places in one go, e.g. [\"New York, NY\", \"Austin, TX\"]. Used with mode = search. Each term is searched in each location.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "number",
            "description": "Only keep businesses rated at or above this value. Leave empty to keep every rating. A business with no published rating does not satisfy a minimum, so it is skipped."
          },
          "maxRating": {
            "title": "Maximum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "number",
            "description": "Only keep businesses rated at or below this value. Useful for finding under-served or low-rated prospects."
          },
          "minReviews": {
            "title": "Minimum review count",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only keep businesses with at least this many reviews. Use it to filter out brand-new listings with almost no history."
          },
          "maxReviews": {
            "title": "Maximum review count",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only keep businesses with at most this many reviews. Useful for finding smaller independent businesses."
          },
          "openNow": {
            "title": "Open now only",
            "type": "boolean",
            "description": "Only keep businesses Google currently shows as open.",
            "default": false
          },
          "hasWebsite": {
            "title": "Must have a website",
            "type": "boolean",
            "description": "Only keep businesses that publish a website on their Google Maps listing.",
            "default": false
          },
          "hasPhone": {
            "title": "Must have a phone number",
            "type": "boolean",
            "description": "Only keep businesses that publish a phone number on their Google Maps listing.",
            "default": false
          },
          "nameFilter": {
            "title": "Business name contains",
            "type": "string",
            "description": "Only keep businesses whose name contains this text, for example \"pizza\" or \"Starbucks\"."
          },
          "includeClosed": {
            "title": "Include permanently closed businesses",
            "type": "boolean",
            "description": "When off, businesses Google marks as permanently closed are skipped.",
            "default": true
          },
          "excludeCategories": {
            "title": "Exclude categories",
            "type": "array",
            "description": "Skip businesses whose category contains any of these words, for example [\"hotel\", \"casino\"].",
            "items": {
              "type": "string"
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}