{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper - Prices, Ratings & Deals",
    "description": "Scrape Google Hotels for any city and dates: hotel prices per night and total, star class, rating, reviews, deals, photos, GPS. Filters. No login.",
    "version": "1.0",
    "x-build-id": "Ff3gLFdAZMWOsXjIi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cheapapi~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cheapapi-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/cheapapi~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cheapapi-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/cheapapi~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cheapapi-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",
        "required": [
          "destinations"
        ],
        "properties": {
          "destinations": {
            "title": "Destinations",
            "type": "array",
            "description": "Where to search, as you would type it into Google Hotels: a city (\"Paris\"), an area or landmark (\"Times Square, New York\"), or a hotel type (\"beach resorts in Antalya\"). One search per line; each returns up to \"Max hotels per destination\" hotels A search that finds no hotels (e.g. too many filters) costs the reduced \"Search without hotels\" fee ($0.0023).",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Arrival date. Pick a fixed date (YYYY-MM-DD) or a relative value that moves with each run, such as \"14 days\", \"2 weeks\", \"1 month\", \"tomorrow\" or \"today\" (counted from the day the run starts). Relative values are best for scheduled price monitoring. If left empty, check-in is 14 days from today."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Departure date (YYYY-MM-DD) or a number of nights after check-in such as \"2 days\". Leave empty for a 1-night stay. Max 30 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Number of adult guests (1–6; adults + children at most 6).",
            "default": 2
          },
          "maxHotelsPerSearch": {
            "title": "Max hotels per destination",
            "minimum": 1,
            "maximum": 140,
            "type": "integer",
            "description": "How many hotels to collect per destination (up to 140, in Google Hotels order or the sort you choose). In price calendar mode this applies to every check-in date.",
            "default": 20
          },
          "priceCalendarDays": {
            "title": "Price calendar: number of check-in dates",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "1 = only the check-in date above (normal search). 7, 14 or 30 = search the same stay for 7, 14 or 30 consecutive check-in dates starting at the check-in date (e.g. check-in 2026-12-01 + 7 dates = 1-7 Dec). You get one row per hotel per date (column \"calendarDay\"). Cost grows with the number of dates: dates × destinations searches, and up to dates × destinations × max hotels hotel rows. A date with no hotels is still a search and costs the reduced \"Search without hotels\" fee ($0.0023). Max 60.",
            "default": 1
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "One entry per child with the child's age (0–17), e.g. 5 and 9 for two children. Leave empty for no children.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "JPY",
              "CNY",
              "INR",
              "TRY",
              "BRL",
              "MXN",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "AED",
              "SAR",
              "SGD",
              "HKD",
              "KRW",
              "THB",
              "ZAR",
              "NZD",
              "ILS",
              "IDR",
              "MYR",
              "PHP",
              "VND"
            ],
            "type": "string",
            "description": "Currency for every price in the output (pricePerNight, totalPrice, priceBeforeDiscount, min/max price filters). Google converts the prices itself, so the amounts are what Google Hotels shows in that currency. Choose one of 31 currencies; API users can send any 3-letter code such as USD, EUR or GBP. Default: USD.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "enum": [
              "af",
              "ak",
              "sq",
              "am",
              "ar",
              "hy",
              "az",
              "ban",
              "eu",
              "be",
              "bn",
              "bs",
              "bg",
              "my",
              "ca",
              "ceb",
              "ny",
              "zh-CN",
              "zh-TW",
              "hr",
              "cs",
              "da",
              "nl",
              "en",
              "et",
              "ee",
              "fo",
              "fa",
              "fil",
              "fi",
              "fr",
              "fy",
              "gaa",
              "gl",
              "lg",
              "ka",
              "de",
              "el",
              "gu",
              "ht",
              "ha",
              "he",
              "iw",
              "hi",
              "hu",
              "is",
              "bem",
              "ig",
              "id",
              "ga",
              "it",
              "ja",
              "kn",
              "kk",
              "km",
              "rw",
              "rn",
              "kg",
              "ko",
              "mfe",
              "crs",
              "kri",
              "ckb",
              "ky",
              "lo",
              "lv",
              "ln",
              "lt",
              "ach",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "mi",
              "mr",
              "mn",
              "sr-ME",
              "ne",
              "nso",
              "no",
              "nyn",
              "om",
              "ps",
              "pcm",
              "pl",
              "pt",
              "pt-BR",
              "pt-PT",
              "pa",
              "qu",
              "ro",
              "rm",
              "ru",
              "sr",
              "sr-Latn",
              "st",
              "sn",
              "loz",
              "sd",
              "si",
              "sk",
              "sl",
              "so",
              "es",
              "es-419",
              "sw",
              "sv",
              "tg",
              "ta",
              "te",
              "th",
              "ti",
              "to",
              "lua",
              "tn",
              "tum",
              "tr",
              "tk",
              "uk",
              "ur",
              "uz",
              "vi",
              "wo",
              "xh",
              "yo",
              "zu"
            ],
            "type": "string",
            "description": "Language of hotel names and Google Hotels links.",
            "default": "en"
          },
          "country": {
            "title": "Search from country",
            "enum": [
              "AF",
              "AX",
              "AL",
              "DZ",
              "AS",
              "AD",
              "AO",
              "AI",
              "AQ",
              "AG",
              "AR",
              "AM",
              "AW",
              "AU",
              "AT",
              "AZ",
              "BS",
              "BH",
              "BD",
              "BB",
              "BY",
              "BE",
              "BZ",
              "BJ",
              "BM",
              "BT",
              "BO",
              "BA",
              "BW",
              "BV",
              "BR",
              "IO",
              "VG",
              "BN",
              "BG",
              "BF",
              "BI",
              "KH",
              "CM",
              "CA",
              "CV",
              "BQ",
              "KY",
              "CF",
              "TD",
              "CL",
              "CN",
              "CX",
              "CC",
              "CO",
              "KM",
              "CG",
              "CD",
              "CK",
              "CR",
              "CI",
              "HR",
              "CU",
              "CW",
              "CY",
              "CZ",
              "DK",
              "DJ",
              "DM",
              "DO",
              "EC",
              "EG",
              "SV",
              "GQ",
              "ER",
              "EE",
              "SZ",
              "ET",
              "FK",
              "FO",
              "FJ",
              "FI",
              "FR",
              "GF",
              "PF",
              "TF",
              "GA",
              "GM",
              "GE",
              "DE",
              "GH",
              "GI",
              "GR",
              "GL",
              "GD",
              "GP",
              "GU",
              "GT",
              "GG",
              "GN",
              "GW",
              "GY",
              "HT",
              "HM",
              "HN",
              "HK",
              "HU",
              "IS",
              "IN",
              "ID",
              "IR",
              "IQ",
              "IE",
              "IM",
              "IL",
              "IT",
              "JM",
              "JP",
              "JE",
              "JO",
              "KZ",
              "KE",
              "KI",
              "KW",
              "KG",
              "LA",
              "LV",
              "LB",
              "LS",
              "LR",
              "LY",
              "LI",
              "LT",
              "LU",
              "MO",
              "MG",
              "MW",
              "MY",
              "MV",
              "ML",
              "MT",
              "MH",
              "MQ",
              "MR",
              "MU",
              "YT",
              "MX",
              "FM",
              "MD",
              "MC",
              "MN",
              "ME",
              "MS",
              "MA",
              "MZ",
              "MM",
              "NA",
              "NR",
              "NP",
              "NL",
              "NC",
              "NZ",
              "NI",
              "NE",
              "NG",
              "NU",
              "NF",
              "KP",
              "MK",
              "MP",
              "NO",
              "OM",
              "PK",
              "PW",
              "PS",
              "PA",
              "PG",
              "PY",
              "PE",
              "PH",
              "PN",
              "PL",
              "PT",
              "PR",
              "QA",
              "RE",
              "RO",
              "RU",
              "RW",
              "WS",
              "SM",
              "ST",
              "SA",
              "SN",
              "RS",
              "SC",
              "SL",
              "SG",
              "SX",
              "SK",
              "SI",
              "SB",
              "SO",
              "ZA",
              "GS",
              "KR",
              "SS",
              "ES",
              "LK",
              "BL",
              "SH",
              "KN",
              "LC",
              "MF",
              "PM",
              "VC",
              "SD",
              "SR",
              "SJ",
              "SE",
              "CH",
              "SY",
              "TW",
              "TJ",
              "TZ",
              "TH",
              "TL",
              "TG",
              "TK",
              "TO",
              "TT",
              "TN",
              "TM",
              "TC",
              "TV",
              "TR",
              "UM",
              "VI",
              "UG",
              "UA",
              "AE",
              "GB",
              "US",
              "UY",
              "UZ",
              "VU",
              "VA",
              "VE",
              "VN",
              "WF",
              "EH",
              "YE",
              "ZM",
              "ZW"
            ],
            "type": "string",
            "description": "The country the search is made from. It can change which prices and deals Google shows. Default: United States.",
            "default": "US"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "lowest_price",
              "highest_rating",
              "most_reviewed"
            ],
            "type": "string",
            "description": "Order of the results (and so which hotels you get when you set a maximum).",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Only hotels costing at least this much per night (in the chosen currency)."
          },
          "maxPrice": {
            "title": "Maximum price per night",
            "minimum": 1,
            "type": "integer",
            "description": "Only hotels costing at most this much per night (in the chosen currency)."
          },
          "hotelClass": {
            "title": "Hotel class (stars)",
            "type": "array",
            "description": "Only return hotels with these official star classes (you can select several, e.g. 4 and 5 stars). Hotels without a star class are usually left out when this filter is used. Leave empty to include all hotels, rated or not.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1-star",
                "2-star",
                "3-star",
                "4-star",
                "5-star"
              ]
            }
          },
          "minRating": {
            "title": "Minimum guest rating",
            "enum": [
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels with at least this guest rating (out of 5)."
          },
          "maxRating": {
            "title": "Maximum guest rating",
            "enum": [
              "2",
              "2.5",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels with at most this guest rating (out of 5) — e.g. to find hotels with room to improve."
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Only return hotels that offer ALL the selected amenities (e.g. pool + free Wi-Fi returns hotels with both). Each extra amenity narrows the results, so select only what you really need. The selected amenities are copied into the amenities field of every row. Leave empty for no amenity filter.",
            "items": {
              "type": "string",
              "enum": [
                "free_parking",
                "parking",
                "free_wifi",
                "free_breakfast",
                "pool",
                "indoor_pool",
                "outdoor_pool",
                "spa",
                "fitness_center",
                "bar",
                "restaurant",
                "room_service",
                "air_conditioning",
                "kid_friendly",
                "pets_allowed",
                "wheelchair_accessible",
                "beach_access",
                "all_inclusive_available"
              ],
              "enumTitles": [
                "Free parking",
                "Parking",
                "Free Wi-Fi",
                "Free breakfast",
                "Pool",
                "Indoor pool",
                "Outdoor pool",
                "Spa",
                "Fitness center",
                "Bar",
                "Restaurant",
                "Room service",
                "Air conditioning",
                "Kid-friendly",
                "Pets allowed",
                "Wheelchair accessible",
                "Beach access",
                "All-inclusive available"
              ]
            }
          },
          "freeCancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only offers that can be cancelled for free.",
            "default": false
          },
          "vacationRentals": {
            "title": "Vacation rentals instead of hotels",
            "type": "boolean",
            "description": "Search holiday homes and apartments instead of hotels.",
            "default": false
          },
          "includeSponsored": {
            "title": "Include sponsored hotels",
            "type": "boolean",
            "description": "Keep hotels that Google shows as ads (marked isSponsored). Turn off to get organic results only.",
            "default": true
          },
          "locationName": {
            "title": "Location name",
            "type": "string",
            "description": "Full location name in the format \"City,Region,Country\", e.g. \"London,England,United Kingdom\" or \"Paris,Ile-de-France,France\". Replaces \"Search from country\"."
          },
          "locationCode": {
            "title": "Location code",
            "minimum": 1,
            "type": "integer",
            "description": "Numeric location code (e.g. 2826 for the United Kingdom, 1006886 for London). Replaces \"Location name\" and \"Search from country\"."
          },
          "coordinates": {
            "title": "Coordinates",
            "type": "string",
            "description": "Search around a point, as \"latitude,longitude\" (e.g. \"48.8566,2.3522\"). Takes priority over the other location fields."
          },
          "searchThisArea": {
            "title": "Only hotels in this area",
            "type": "boolean",
            "description": "On: restrict results to the location/coordinates above (the location is added to the destination text). Off: the destination text alone decides. Default: on when a location name, code or coordinates is given, otherwise off."
          },
          "processingSpeed": {
            "title": "Processing speed",
            "enum": [
              "auto",
              "fast",
              "economy"
            ],
            "type": "string",
            "description": "Fast: results for small runs usually within a few minutes. Economy: can take up to ~45 minutes, for large runs (500+ hotels). Automatic: fast, economy for runs of 2,000+ hotels. The price is the same.",
            "default": "auto"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}