{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper: Every Place in an Area",
    "description": "Google Maps places with phone, website, rating, hours, address and claim status, without a browser. Every place of a city or radius, not only the first 150, at about 10 requests a second.",
    "version": "0.1",
    "x-build-id": "eZbfGbFy7p74srnpH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/famed_bonobo~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-famed_bonobo-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/famed_bonobo~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-famed_bonobo-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/famed_bonobo~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-famed_bonobo-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",
        "required": [
          "searchTerms"
        ],
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for, as you would type it on Google Maps: \"pizza\", \"dentist\", \"coffee shop\", \"hotel\". Each term is searched in each place below. Up to 500 terms.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Cities, regions or countries, written as on Google Maps: \"Austin, TX\", \"Madrid, Spain\", \"Costa Rica\". Leave empty to search without a place, or to use only the custom area below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "coverage": {
            "title": "How many places",
            "enum": [
              "top",
              "all"
            ],
            "type": "string",
            "description": "Top results gives the places Google ranks first for each search, about 150 at most, in seconds. Every place in the area cuts the area into cells and searches each one, so it finds every place the area holds, not only the most prominent (for example, every dentist in a city, not the first 150). Every place needs a place or a custom area.",
            "default": "top"
          },
          "maxPlacesPerSearch": {
            "title": "Most places per search",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "The search of one term in one place stops once it has this many places that pass your filters. You pay per place stored.",
            "default": 100
          },
          "searchDepth": {
            "title": "Search depth",
            "enum": [
              "quick",
              "balanced",
              "thorough",
              "exhaustive"
            ],
            "type": "string",
            "description": "Only for \"Every place in the area\". Google hides the less prominent places of a busy cell, so the Actor splits busy cells into four and searches them again. Deeper finds more places and uses more requests: on 3 km of central Chicago, \"quick\" found 91 of about 100 pizzerias and \"exhaustive\" found all 100. Price per place stays the same.",
            "default": "balanced"
          },
          "includeDetails": {
            "title": "Add place details",
            "type": "boolean",
            "description": "For each place, one more call adds: the number of reviews for each star (1 to 5), what reviews talk about most (such as \"deep dish pizza\" with its mentions), the own description of the business, popular times by weekday and hour when Google shows them, and the hours of services such as an emergency room. Charged per place with details on top of the place price. Review texts and their authors are never collected.",
            "default": false
          },
          "customGeolocation": {
            "title": "Custom area",
            "type": "object",
            "description": "Search a precise area instead of, or besides, the places above. A GeoJSON Point with a radius in kilometres, {\"type\": \"Point\", \"coordinates\": [-97.74, 30.27], \"radiusKm\": 5} (longitude first), or a GeoJSON Polygon or MultiPolygon. Only places inside the area are kept, and a circle adds each place's distance to its center."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of the texts Google writes, such as \"en\", \"es\" or \"pt-BR\": categories, descriptions and opening hours.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code Google uses to rank results and to write local formats, such as \"us\", \"gb\" or \"cr\".",
            "default": "us"
          },
          "minimumRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep only places rated at least this, from 0 to 5. Places with no rating fail a minimum above 0.",
            "default": 0
          },
          "minimumReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only places with at least this many reviews.",
            "default": 0
          },
          "onlyWithWebsite": {
            "title": "Only places with a website",
            "type": "boolean",
            "description": "Keep only places that list a website.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only places with a phone",
            "type": "boolean",
            "description": "Keep only places that list a phone number.",
            "default": false
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places Google marks as permanently or temporarily closed.",
            "default": true
          },
          "categoryFilter": {
            "title": "Only these categories",
            "type": "array",
            "description": "Keep only places with a category that contains one of these words, such as \"pizza\" or \"dentist\". Case does not matter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "claimStatus": {
            "title": "Business claimed on Google",
            "enum": [
              "any",
              "claimed",
              "unclaimed"
            ],
            "type": "string",
            "description": "Unclaimed places are businesses nobody has taken over on Google Maps, which makes them good sales prospects for local marketing services. Any keeps both.",
            "default": "any"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave Apify Proxy off for most runs: the Actor reaches Google Maps from the platform's own address at about ten requests a second. For very large area searches, proxies add addresses to spread the requests over.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}