{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper",
    "description": "Hotels and vacation rentals from Google Hotels for any place and stay: price per night and total, rating, reviews, star class, deal label, location, amenities, photos, and optionally each property's address, phone and prices per booking site. Filters, sorting, any currency. No browser, no login.",
    "version": "1.0",
    "x-build-id": "2eziJzrh0dgXKXXPu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyscrape~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyscrape-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/steadyscrape~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyscrape-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/steadyscrape~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyscrape-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": "Places to search",
            "type": "array",
            "description": "One search per entry, as you would type it on Google Hotels: a city, an area, a landmark (<code>hotels in Lisbon</code>, <code>Paris 11e</code>, <code>near Times Square</code>). A hotel's name gives that hotel first and its neighbours after it.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "<code>YYYY-MM-DD</code>. Prices are for this stay."
          },
          "checkOut": {
            "title": "Check-out",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "<code>YYYY-MM-DD</code>, after the check-in (up to 30 nights). Or give <b>Nights</b> instead."
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Instead of a check-out date: the stay's length. 1 when neither is given."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "",
            "default": 2
          },
          "childAges": {
            "title": "Children's ages",
            "type": "array",
            "description": "One age per child (0–17), as Google asks for them.",
            "default": []
          },
          "propertyType": {
            "title": "Hotels or vacation rentals",
            "enum": [
              "hotels",
              "vacation_rentals"
            ],
            "type": "string",
            "description": "Google's two tabs. Hotels searches also list some vacation rentals, as the site does.",
            "default": "hotels"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "lowest_price",
              "highest_rating",
              "most_reviewed"
            ],
            "type": "string",
            "description": "Google's own sort, applied in the search.",
            "default": "relevance"
          },
          "minRating": {
            "title": "Guest rating",
            "enum": [
              "any",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "",
            "default": "any"
          },
          "hotelClass": {
            "title": "Hotel class (stars)",
            "type": "array",
            "description": "Keep only these classes, e.g. <code>[4, 5]</code>. Empty: any.",
            "default": []
          },
          "minPrice": {
            "title": "Min price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the currency below."
          },
          "maxPrice": {
            "title": "Max price per night",
            "minimum": 1,
            "type": "integer",
            "description": "In the currency below."
          },
          "freeCancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "",
            "default": false
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Every property must have all of them (Google's own filter).",
            "items": {
              "type": "string",
              "enum": [
                "free_wifi",
                "free_breakfast",
                "restaurant",
                "bar",
                "kid_friendly",
                "pet_friendly",
                "free_parking",
                "parking",
                "ev_charger",
                "room_service",
                "fitness_center",
                "spa",
                "pool",
                "indoor_pool",
                "outdoor_pool",
                "air_conditioned",
                "wheelchair_accessible",
                "beach_access",
                "all_inclusive"
              ],
              "enumTitles": [
                "Free Wi-Fi",
                "Free breakfast",
                "Restaurant",
                "Bar",
                "Kid-friendly",
                "Pet-friendly",
                "Free parking",
                "Parking",
                "EV charger",
                "Room service",
                "Fitness center",
                "Spa",
                "Pool",
                "Indoor pool",
                "Outdoor pool",
                "Air-conditioned",
                "Wheelchair accessible",
                "Beach access",
                "All-inclusive available"
              ]
            },
            "default": []
          },
          "currency": {
            "title": "Currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "Three-letter code (<code>USD</code>, <code>EUR</code>, <code>GBP</code>).",
            "default": "USD"
          },
          "market": {
            "title": "Market (point of sale)",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Two-letter country code (<code>us</code>, <code>de</code>, <code>br</code>). Google prices by point of sale, and an unknown place falls back to this country.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "pattern": "^[a-z]{2}(-[A-Za-z]{2})?$",
            "type": "string",
            "description": "Language of names, amenities and deal labels (<code>en</code>, <code>es</code>, <code>pt-BR</code>).",
            "default": "en"
          },
          "urls": {
            "title": "Google Hotels links",
            "type": "array",
            "description": "Searches copied from Google Hotels (links with <code>q</code> and <code>ts</code> parameters). Each is searched as it is, with its own dates, guests, filters and language.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Google pages by twenty; the Actor follows the pages until this many rows.",
            "default": 20
          },
          "includeDetails": {
            "title": "Fetch each property's page",
            "type": "boolean",
            "description": "One extra request per property: address, phone, the long description, one offer per booking site with per-night and total prices for the stay, review sources and sample reviews. Rows are then charged as <code>property-with-details</code>.",
            "default": false
          },
          "residentialFallback": {
            "title": "Fall back to residential proxies",
            "type": "boolean",
            "description": "When Google refuses the run's own IP and the datacenter proxies, retry through residential proxies (included in the price: you pay per row, not per proxy byte). Off: those searches come back with status <code>blocked</code>, unpaid.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}