{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper & API - Prices, OTA Rates & Room Rates",
    "description": "Scrape Google Hotels by destination, dates and guest country: nightly and total prices, ratings and coordinates. Optional details add every OTA rate with its booking link, room rates with cancellation and breakfast, price insights and review summary. CSV, JSON or API.",
    "version": "0.2",
    "x-build-id": "pcUnEQo7veJhhdhmd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/surefeed~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-surefeed-google-hotels-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/surefeed~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-surefeed-google-hotels-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/surefeed~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-surefeed-google-hotels-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": {
          "queries": {
            "title": "Destinations or hotels",
            "type": "array",
            "description": "What to search on Google Hotels, one per line: a city, area or hotel name (e.g. \"hotels in Rome\", \"Hotel Artemide Rome\"). Ignored when \"Near an address or landmark\" is filled in.",
            "items": {
              "type": "string"
            }
          },
          "near": {
            "title": "Or: hotels near an address or landmark",
            "type": "string",
            "description": "Find the hotels closest to a place: a landmark, an address, a venue or coordinates (e.g. \"Colosseum, Rome\", \"Via Nazionale 22, Rome\", \"Madison Square Garden\", \"41.8902, 12.4922\"). Results are sorted by straight-line distance and each hotel gets a distanceKm field. The place is located with OpenStreetMap; the run log and the nearResolvedTo field show what it was matched to."
          },
          "maxDistanceKm": {
            "title": "Max distance (km)",
            "minimum": 0.1,
            "maximum": 50,
            "type": "number",
            "description": "Only with \"Near an address or landmark\": keep hotels within this straight-line distance.",
            "default": 2
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD. Defaults to 14 days from today."
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, 1–30 nights after check-in. Defaults to check-in + 2 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of adult guests (1–8). Prices and availability depend on it. Children are not supported (Google ignores them in shared search links).",
            "default": 2
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CHF",
              "CAD",
              "AUD",
              "JPY",
              "INR",
              "BRL",
              "MXN",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "AED",
              "HUF",
              "RON",
              "CZK",
              "BGN",
              "ILS",
              "SAR",
              "QAR",
              "EGP",
              "MAD",
              "MYR",
              "VND",
              "PHP",
              "HKD",
              "TWD",
              "CLP",
              "COP",
              "PEN",
              "NZD",
              "SGD",
              "THB",
              "IDR",
              "KRW",
              "ZAR",
              "TRY",
              "ARS",
              "ISK",
              "UAH",
              "RSD",
              "CNY"
            ],
            "type": "string",
            "description": "3-letter currency code.",
            "default": "USD"
          },
          "country": {
            "title": "Search from country",
            "enum": [
              "US",
              "GB",
              "IT",
              "DE",
              "FR",
              "ES",
              "PT",
              "NL",
              "BE",
              "AT",
              "CH",
              "IE",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "GR",
              "TR",
              "CA",
              "MX",
              "BR",
              "AR",
              "AU",
              "NZ",
              "JP",
              "KR",
              "IN",
              "SG",
              "TH",
              "ID",
              "AE",
              "ZA",
              "HU",
              "RO",
              "HR",
              "BG",
              "SK",
              "SI",
              "LU",
              "EE",
              "LV",
              "LT",
              "IS",
              "CY",
              "MT",
              "RS",
              "UA",
              "IL",
              "SA",
              "QA",
              "EG",
              "MA",
              "MY",
              "VN",
              "PH",
              "HK",
              "TW",
              "CL",
              "CO",
              "PE"
            ],
            "type": "string",
            "description": "Prices, booking partners and tax display depend on the visitor's country. Results are fetched as a visitor from this country would see them.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "it"
            ],
            "type": "string",
            "description": "Language of hotel names, amenities and labels.",
            "default": "en"
          },
          "maxResultsPerQuery": {
            "title": "Max hotels per search",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "How many hotels to return per query (up to 3,000). Results are collected across pages (~20 per page, fetched in parallel) and de-duplicated.",
            "default": 20
          },
          "onlyAvailable": {
            "title": "Only hotels with rooms available",
            "type": "boolean",
            "description": "Skip hotels that show no price for your dates and number of adults (no booking partner has a room). Skipped hotels are not charged.",
            "default": false
          },
          "expandResults": {
            "title": "Find more hotels with related searches",
            "type": "boolean",
            "description": "A single Google Hotels search shows at most ~700–750 different hotels (deeper pages repeat the same ones). When you ask for more, related searches are added automatically (B&Bs, hostels, apartments, 5-star, city center…) and merged without duplicates. Each hotel's matchedQuery tells which search found it.",
            "default": true
          },
          "includeDetails": {
            "title": "Include all booking offers, room rates & price insights",
            "type": "boolean",
            "description": "Opens each hotel page: every booking site's price (Booking.com, Expedia, official site…) with its booking link, room rates with cancellation and breakfast, the cheapest offer, the typical price range for your dates, Google's price insight (low / typical / high), the hotel's website, check-in times, amenities, review summary, address and phone. Charged as an extra \"Hotel details\" event per hotel.",
            "default": false
          },
          "proxyType": {
            "title": "Accuracy mode",
            "enum": [
              "local",
              "datacenter"
            ],
            "type": "string",
            "description": "\"local\" fetches from an IP in the chosen country (matches what local travelers see): residential everywhere, except plain result lists for the United States, which use US datacenter IPs with the same prices. \"datacenter\" is faster but partners and tax display may differ from the chosen country.",
            "default": "local"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}