{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper - Prices, Booking Sites, No Login",
    "description": "Returns the hotels Google Hotels lists for a place and your dates: price per night and for the stay with taxes, rating, reviews, class, amenities by name, coordinates and photos. Optionally every booking site's price, address and phone. Filters, any currency. No browser, no login.",
    "version": "1.0",
    "x-build-id": "e6cRbU5P2je88cTla"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/benthepythondev~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-benthepythondev-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/benthepythondev~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-benthepythondev-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/benthepythondev~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-benthepythondev-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": {
          "searches": {
            "title": "Places, searches or hotel names",
            "type": "array",
            "description": "One search per entry, as you would type it into Google Hotels: \"hotels in Paris\", \"hostels near Shibuya\", \"resorts in Cancun\". A hotel's name with its city returns that one hotel.",
            "items": {
              "type": "string"
            }
          },
          "links": {
            "title": "Google Hotels links",
            "type": "array",
            "description": "Links to a hotel (google.com/travel/hotels/entity/...) or to a search (google.com/travel/search?q=...). A hotel link returns that hotel for your dates; of a search link the text is used, with the dates and filters given here.",
            "items": {
              "type": "string"
            }
          },
          "checkInDate": {
            "title": "Check-in date",
            "type": "string",
            "description": "First night of the stay (YYYY-MM-DD). Without a date the stay starts the number of days ahead that is set below. A date in the past is moved to today, the run does not fail."
          },
          "checkOutDate": {
            "title": "Check-out date",
            "type": "string",
            "description": "Day of departure (YYYY-MM-DD), 1 to 30 nights after the check-in date. Without it the number of nights below is used."
          },
          "checkInDays": {
            "title": "Check-in in … days",
            "minimum": 0,
            "maximum": 330,
            "type": "integer",
            "description": "Used when no check-in date is given: the stay starts this many days from today. Useful for schedules, where a fixed date would grow old.",
            "default": 30
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of the stay when no check-out date is given.",
            "default": 1
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Number of adults. Prices are for all guests together.",
            "default": 2
          },
          "childrenAges": {
            "title": "Children's ages",
            "type": "array",
            "description": "One age (0 to 17) per child, for example 5 and 9. Google prices children by age.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter code of the currency for all prices: USD, EUR, GBP, JPY, IDR and the others Google Hotels offers.",
            "default": "USD"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code of the Google market to ask (gl), for example us, gb, de.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code for names, hotel classes and descriptions (hl), for example en, de, fr, ja. Amenity names are English.",
            "default": "en"
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "relevance",
              "lowest_price",
              "highest_rating",
              "most_reviewed"
            ],
            "type": "string",
            "description": "The order in which Google lists the hotels. The limit per search counts from the top of this order.",
            "default": "relevance"
          },
          "maxResults": {
            "title": "Hotels per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stops a search after this many hotels. Google's list for a large city repeats itself after about 600 hotels; filters reach the others.",
            "default": 20
          },
          "minPrice": {
            "title": "Lowest price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Only hotels from this price per night, in the chosen currency."
          },
          "maxPrice": {
            "title": "Highest price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Only hotels up to this price per night, in the chosen currency."
          },
          "minRating": {
            "title": "Guest rating from",
            "enum": [
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels with at least this guest rating. Google filters at these three steps."
          },
          "hotelClass": {
            "title": "Hotel class",
            "type": "array",
            "description": "Only hotels of these star classes. A hotel without a class is left out as soon as one is chosen.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "freeCancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only hotels with an offer that can be cancelled free of charge; the price shown is then that offer's.",
            "default": false
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Only hotels that have all of these.",
            "items": {
              "type": "string",
              "enum": [
                "free_parking",
                "pool",
                "fitness_center",
                "restaurant",
                "free_breakfast",
                "spa",
                "beach_access",
                "kid_friendly",
                "bar",
                "pet_friendly",
                "room_service",
                "free_wifi",
                "accessible"
              ],
              "enumTitles": [
                "Free parking",
                "Pool",
                "Fitness center",
                "Restaurant",
                "Free breakfast",
                "Spa",
                "Beach access",
                "Kid friendly",
                "Bar",
                "Pet friendly",
                "Room service",
                "Free wifi",
                "Accessible"
              ]
            }
          },
          "includeBookingSources": {
            "title": "Booking sites, address and phone",
            "type": "boolean",
            "description": "Reads each hotel's own record as well: the price of every booking site Google lists for the stay (Booking.com, Expedia, the hotel's own site ...), the address, the phone number and the full amenity list. One more request and a second charge per hotel.",
            "default": false
          },
          "debug": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Logs every request with its size and time.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}