{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Search Scraper",
    "description": "Scrape Google Hotels search results for any destination and dates: hotel name, nightly and total price, rating, reviews, star class, amenities, GPS and property token, with Google's filters and paging. Also finds a hotel's property token by name. No proxies needed.",
    "version": "0.0",
    "x-build-id": "Kg682QU0Cdmd233St"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapercompany~google-hotels-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapercompany-google-hotels-search-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/scrapercompany~google-hotels-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapercompany-google-hotels-search-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/scrapercompany~google-hotels-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapercompany-google-hotels-search-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",
              "token",
              "resolve"
            ],
            "type": "string",
            "description": "<b>Destination search</b>: hotels for a place and stay, like Google Hotels. <b>Find property token</b>: the token for a hotel name (to use with the other Google Hotels scrapers). <b>Resolve</b>: candidates with address and phone, to disambiguate.",
            "default": "search"
          },
          "queries": {
            "title": "Queries",
            "type": "array",
            "description": "One request per line. <b>Destination search</b>: what you would type into Google Hotels (<code>hotels in Montreal</code>, <code>Paris</code>, <code>hotels near JFK</code>). <b>Find property token</b>: the hotel name (set City below). <b>Resolve</b>: hotel name plus city or country (<code>Hilton Chicago</code>).",
            "default": [
              "hotels in Montreal"
            ],
            "items": {
              "type": "string"
            }
          },
          "check_in": {
            "title": "Check-in (Destination search)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Exact (<code>2026-12-01</code>) or relative (<code>30 days</code> from today).",
            "default": "30 days"
          },
          "check_out": {
            "title": "Check-out (Destination search)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "After check-in, at most 30 nights: exact or relative (<code>32 days</code> from today).",
            "default": "32 days"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Adults in the room (1-10).",
            "default": 2
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "AED",
              "ARS",
              "AUD",
              "BRL",
              "CAD",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CZK",
              "DKK",
              "EGP",
              "EUR",
              "GBP",
              "HKD",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "JPY",
              "KRW",
              "MXN",
              "MYR",
              "NOK",
              "NZD",
              "PEN",
              "PHP",
              "PLN",
              "QAR",
              "RON",
              "SAR",
              "SEK",
              "SGD",
              "THB",
              "TRY",
              "TWD",
              "USD",
              "VND",
              "ZAR"
            ],
            "type": "string",
            "description": "Currency for prices.",
            "default": "USD"
          },
          "gl": {
            "title": "Google country",
            "enum": [
              "ad",
              "ae",
              "af",
              "ag",
              "ai",
              "al",
              "am",
              "ao",
              "aq",
              "ar",
              "as",
              "at",
              "au",
              "aw",
              "ax",
              "az",
              "ba",
              "bb",
              "bd",
              "be",
              "bf",
              "bg",
              "bh",
              "bi",
              "bj",
              "bl",
              "bm",
              "bn",
              "bo",
              "bq",
              "br",
              "bs",
              "bt",
              "bv",
              "bw",
              "by",
              "bz",
              "ca",
              "cc",
              "cd",
              "cf",
              "cg",
              "ch",
              "ci",
              "ck",
              "cl",
              "cm",
              "cn",
              "co",
              "cr",
              "cu",
              "cv",
              "cw",
              "cx",
              "cy",
              "cz",
              "de",
              "dj",
              "dk",
              "dm",
              "do",
              "dz",
              "ec",
              "ee",
              "eg",
              "eh",
              "er",
              "es",
              "et",
              "fi",
              "fj",
              "fk",
              "fm",
              "fo",
              "fr",
              "ga",
              "gb",
              "gd",
              "ge",
              "gf",
              "gg",
              "gh",
              "gi",
              "gl",
              "gm",
              "gn",
              "gp",
              "gq",
              "gr",
              "gs",
              "gt",
              "gu",
              "gw",
              "gy",
              "hk",
              "hm",
              "hn",
              "hr",
              "ht",
              "hu",
              "id",
              "ie",
              "il",
              "im",
              "in",
              "io",
              "iq",
              "ir",
              "is",
              "it",
              "je",
              "jm",
              "jo",
              "jp",
              "ke",
              "kg",
              "kh",
              "ki",
              "km",
              "kn",
              "kp",
              "kr",
              "kw",
              "ky",
              "kz",
              "la",
              "lb",
              "lc",
              "li",
              "lk",
              "lr",
              "ls",
              "lt",
              "lu",
              "lv",
              "ly",
              "ma",
              "mc",
              "md",
              "me",
              "mf",
              "mg",
              "mh",
              "mk",
              "ml",
              "mm",
              "mn",
              "mo",
              "mp",
              "mq",
              "mr",
              "ms",
              "mt",
              "mu",
              "mv",
              "mw",
              "mx",
              "my",
              "mz",
              "na",
              "nc",
              "ne",
              "nf",
              "ng",
              "ni",
              "nl",
              "no",
              "np",
              "nr",
              "nu",
              "nz",
              "om",
              "pa",
              "pe",
              "pf",
              "pg",
              "ph",
              "pk",
              "pl",
              "pm",
              "pn",
              "pr",
              "ps",
              "pt",
              "pw",
              "py",
              "qa",
              "re",
              "ro",
              "rs",
              "ru",
              "rw",
              "sa",
              "sb",
              "sc",
              "sd",
              "se",
              "sg",
              "sh",
              "si",
              "sj",
              "sk",
              "sl",
              "sm",
              "sn",
              "so",
              "sr",
              "ss",
              "st",
              "sv",
              "sx",
              "sy",
              "sz",
              "tc",
              "td",
              "tf",
              "tg",
              "th",
              "tj",
              "tk",
              "tl",
              "tm",
              "tn",
              "to",
              "tr",
              "tt",
              "tv",
              "tw",
              "tz",
              "ua",
              "ug",
              "uk",
              "um",
              "us",
              "uy",
              "uz",
              "va",
              "vc",
              "ve",
              "vg",
              "vi",
              "vn",
              "vu",
              "wf",
              "ws",
              "xk",
              "ye",
              "yt",
              "za",
              "zm",
              "zw"
            ],
            "type": "string",
            "description": "Two-letter Google country (market).",
            "default": "us"
          },
          "hl": {
            "title": "Language",
            "type": "string",
            "description": "Interface language, e.g. <code>en</code>, <code>fr</code>.",
            "default": "en"
          },
          "maxPages": {
            "title": "Pages per query",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Destination search: result pages per query (1-20, about 20 hotels each). Each page is charged separately; paging stops at the last page.",
            "default": 1
          },
          "sort_by": {
            "title": "Sort by",
            "enum": [
              "highest_rating",
              "lowest_price",
              "most_reviewed",
              "relevance"
            ],
            "type": "string",
            "description": "Result order, like Google's Sort by control.",
            "default": "relevance"
          },
          "price_min": {
            "title": "Minimum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "price_max": {
            "title": "Maximum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "min_rating": {
            "title": "Minimum guest rating",
            "enum": [
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels rated at least this."
          },
          "hotel_class": {
            "title": "Star classes",
            "type": "array",
            "description": "Star classes to include, e.g. <code>[4, 5]</code>."
          },
          "amenities": {
            "title": "Amenity filter ids",
            "type": "array",
            "description": "Google amenity ids, e.g. <code>[6, 35]</code>: 1 Free parking, 4 Indoor pool, 5 Outdoor pool, 6 Pool, 7 Fitness center, 8 Restaurant, 9 Free breakfast, 10 Spa, 11 Beach access, 35 Free Wi-Fi."
          },
          "property_types": {
            "title": "Property type ids",
            "type": "array",
            "description": "Google property-type ids, e.g. <code>[17]</code>: 12 Beach hotels, 13 Boutique, 14 Hostels, 15 Inns, 16 Motels, 17 Resorts, 18 Spa hotels, 19 B&amp;Bs."
          },
          "children_ages": {
            "title": "Children ages",
            "type": "array",
            "description": "One age (0-17) per child, e.g. <code>[8, 11]</code>."
          },
          "free_cancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only hotels Google lists with free cancellation.",
            "default": false
          },
          "special_offers": {
            "title": "Special offers only",
            "type": "boolean",
            "description": "Only hotels with a special offer.",
            "default": false
          },
          "eco_certified": {
            "title": "Eco-certified only",
            "type": "boolean",
            "description": "Only eco-certified hotels.",
            "default": false
          },
          "city": {
            "title": "City (Find property token)",
            "type": "string",
            "description": "City of the hotels, strongly recommended so a common brand name matches the right property."
          },
          "market": {
            "title": "Market (Find property token)",
            "type": "string",
            "description": "Country to search first, e.g. <code>US</code>, <code>MX</code>. Leave empty for automatic."
          },
          "verify": {
            "title": "Verify tokens",
            "type": "boolean",
            "description": "Open each candidate to confirm the token and read back its real name. Slower, far fewer wrong matches.",
            "default": true
          },
          "tokenLimit": {
            "title": "Candidates per name (Find property token)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Candidates to return per name, best match first (1-10).",
            "default": 5
          },
          "resolveLimit": {
            "title": "Candidates per query (Resolve)",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Candidates to resolve with addresses (1-3).",
            "default": 3
          },
          "customRequests": {
            "title": "Custom requests (advanced)",
            "type": "array",
            "description": "Optional list of JSON objects, one request each, using the API field names shown above. Each object is merged over the options above, so you only need to give what differs. Add <code>\"mode\": \"token\"</code> (with <code>name</code>) or <code>\"mode\": \"resolve\"</code> (with <code>q</code>) for other modes. Example: <code>{\"q\":\"hotels in Lisbon\",\"check_in\":\"2026-12-20\",\"check_out\":\"2026-12-23\",\"currency\":\"EUR\",\"gl\":\"pt\"}</code>"
          },
          "includeErrors": {
            "title": "Include failed requests in the dataset",
            "type": "boolean",
            "description": "When on, a request that fails (for example an unknown property id) is saved as a dataset item with an <code>error</code> message so you can see what went wrong. Failed requests are never charged.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many API requests run at the same time.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries for rate limits (HTTP 429), temporary server errors (5xx) and network errors, with exponential backoff. Validation errors are never retried.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}