{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper - 54 Fields, 90-Date Price Curve",
    "description": "Scrape Google Hotels with 54 fields per hotel and every booking site's price nested inside the row. Price the same hotels across up to 90 check-in dates in one run. $0.99 per 1,000 hotels.",
    "version": "0.0",
    "x-build-id": "ZXehxPgnsag6Dvtu3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-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/zen-studio~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-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/zen-studio~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-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": {
          "searchQueries": {
            "title": "Searches",
            "type": "array",
            "description": "What and where to search, one per line, for example \"hotels in Barcelona\" or \"resorts in Cancun\". A hotel name works too. Google serves up to about 1,000 hotels per search, so split large cities by district for full coverage.",
            "items": {
              "type": "string"
            }
          },
          "propertyUrls": {
            "title": "Specific hotels",
            "type": "array",
            "description": "One per line: a hotel name (\"Park Hyatt Tokyo\"), a Google Hotels link, or a hotel id from an earlier run. Names are resolved to a single property and charged as one hotel. Each comes back with its address and phone number, and with every booking site's price when that is switched on.",
            "items": {
              "type": "string"
            }
          },
          "propertyTokens": {
            "title": "Hotel ids",
            "type": "array",
            "description": "Hotel ids from an earlier run, one per line, as an alternative to pasting links. Every hotel found by a search carries one; sponsored listings do not.",
            "items": {
              "type": "string"
            }
          },
          "autocompleteQueries": {
            "title": "Search suggestions",
            "type": "array",
            "description": "Type a partial phrase and get the suggestions Google offers a real visitor, ranked as they appear. Useful for travel keyword research and for finding the exact name of a property. Some suggestions that name a property also carry its street address and a Google Maps link, though which ones do varies with the country you search from. No dates needed.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in",
            "type": "string",
            "description": "First night of the stay, as a date (2026-11-20) or a number of days from today (\"30\"). Use the relative form in a schedule so it never goes stale."
          },
          "checkOut": {
            "title": "Check-out",
            "type": "string",
            "description": "Departure date, at least one day after check-in. Same formats: a date, or a number of days from today (\"33\")."
          },
          "sweepDays": {
            "title": "Price on this many consecutive dates",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Repeat the whole search for each of this many check-in dates in a row, keeping the stay length. 1 is a single snapshot; 30 gives you a month-long price curve for every hotel. Each date is charged as its own set of hotels."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Party size the stay is recorded for. Google quotes the same nightly price whatever you set here."
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Rooms the stay is recorded for. Google quotes the same nightly price whatever you set here."
          },
          "maxResultsPerQuery": {
            "title": "Hotels per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each search after this many hotels. Sponsored listings, up to nine per search, are delivered on top of this number. The most Google will serve for one search is about 1,000."
          },
          "includeRates": {
            "title": "Include every booking site's price",
            "type": "boolean",
            "description": "Adds each hotel's full price comparison for your dates: every booking site with its nightly price, taxes and fees, free cancellation deadline and the rooms on offer, plus the hotel's address and phone number. Vacation rentals are booked on one site only, so they are skipped.",
            "default": false
          },
          "includeSponsored": {
            "title": "Include sponsored listings",
            "type": "boolean",
            "description": "Paid listings are marked with a sponsored flag. Up to nine per search, on top of the hotel count set above.",
            "default": true
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "AED",
              "ALL",
              "AMD",
              "ARS",
              "AUD",
              "AWG",
              "AZN",
              "BAM",
              "BGN",
              "BHD",
              "BMD",
              "BRL",
              "BSD",
              "BYN",
              "CAD",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CUP",
              "CZK",
              "DKK",
              "DOP",
              "DZD",
              "EGP",
              "EUR",
              "GBP",
              "GEL",
              "HKD",
              "HRK",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KRW",
              "KWD",
              "KZT",
              "LBP",
              "MAD",
              "MDL",
              "MKD",
              "MXN",
              "MYR",
              "NOK",
              "NZD",
              "OMR",
              "PAB",
              "PEN",
              "PHP",
              "PKR",
              "PLN",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "SAR",
              "SEK",
              "SGD",
              "THB",
              "TRY",
              "TWD",
              "UAH",
              "USD",
              "VND",
              "XPF",
              "ZAR"
            ],
            "type": "string",
            "description": "Currency every price is quoted in."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "lowestPrice",
              "highestRating",
              "mostReviewed"
            ],
            "type": "string",
            "description": "Order hotels are returned in. Leave empty for Google's own ranking."
          },
          "minRating": {
            "title": "Minimum guest rating",
            "enum": [
              "any",
              "3.0",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels rated at or above this. Leave empty to include every hotel, which is what Google's own site does not do."
          },
          "hotelClass": {
            "title": "Star rating",
            "type": "array",
            "description": "Restrict to these star classes.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "2-star",
                "3-star",
                "4-star",
                "5-star"
              ]
            }
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Only hotels offering all of these.",
            "items": {
              "type": "string",
              "enum": [
                "air_conditioned",
                "airport_shuttle",
                "bar",
                "beach_access",
                "child_friendly",
                "ev_charger",
                "fitness_center",
                "free_breakfast",
                "free_parking",
                "free_wifi",
                "hot_tub",
                "indoor_pool",
                "outdoor_pool",
                "parking",
                "pet_friendly",
                "pool",
                "restaurant",
                "room_service",
                "spa",
                "wheelchair_accessible"
              ],
              "enumTitles": [
                "Air Conditioned",
                "Airport Shuttle",
                "Bar",
                "Beach Access",
                "Child Friendly",
                "Ev Charger",
                "Fitness Center",
                "Free Breakfast",
                "Free Parking",
                "Free Wifi",
                "Hot Tub",
                "Indoor Pool",
                "Outdoor Pool",
                "Parking",
                "Pet Friendly",
                "Pool",
                "Restaurant",
                "Room Service",
                "Spa",
                "Wheelchair Accessible"
              ]
            }
          },
          "minPrice": {
            "title": "Minimum nightly price",
            "type": "integer",
            "description": "In the currency selected above."
          },
          "maxPrice": {
            "title": "Maximum nightly price",
            "type": "integer",
            "description": "In the currency selected above."
          },
          "freeCancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only stays that can be cancelled for free.",
            "default": false
          },
          "specialOffers": {
            "title": "Special offers only",
            "type": "boolean",
            "description": "Only hotels currently running a deal.",
            "default": false
          },
          "ecoCertified": {
            "title": "Eco-certified only",
            "type": "boolean",
            "description": "Only hotels with a recognised sustainability certification.",
            "default": false
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Keep only these kinds of property. Leave empty to keep them all. Sponsored listings state no kind at all, so they are not filtered here; use the sponsored setting to drop those.",
            "items": {
              "type": "string",
              "enum": [
                "hotel",
                "resort_hotel",
                "motel",
                "hostel",
                "inn",
                "bed_and_breakfast",
                "guest_house",
                "extended_stay_hotel",
                "self_catering_accommodation",
                "campground",
                "retreat_center",
                "vacation_rental"
              ],
              "enumTitles": [
                "Hotel",
                "Resort",
                "Motel",
                "Hostel",
                "Inn or pub with rooms",
                "Bed and breakfast",
                "Guest house",
                "Extended stay",
                "Self-catering",
                "Campground",
                "Retreat centre",
                "Vacation rental"
              ]
            }
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "nl",
              "pl",
              "sv",
              "da",
              "fi",
              "nb",
              "cs",
              "el",
              "tr",
              "ru",
              "uk",
              "ar",
              "he",
              "hi",
              "th",
              "vi",
              "id",
              "ms",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language descriptions and labels come back in."
          },
          "countryCode": {
            "title": "Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "nz",
              "ie",
              "de",
              "at",
              "ch",
              "fr",
              "es",
              "pt",
              "it",
              "nl",
              "be",
              "dk",
              "se",
              "no",
              "fi",
              "pl",
              "cz",
              "gr",
              "tr",
              "ru",
              "ua",
              "ae",
              "sa",
              "eg",
              "za",
              "ma",
              "il",
              "in",
              "th",
              "vn",
              "id",
              "my",
              "sg",
              "ph",
              "jp",
              "kr",
              "cn",
              "hk",
              "tw",
              "mx",
              "br",
              "ar",
              "cl",
              "co",
              "pe"
            ],
            "type": "string",
            "description": "Country to search from. Affects availability, ranking and which booking sites appear."
          },
          "excludeFields": {
            "title": "Fields to leave out",
            "type": "array",
            "description": "Drop these columns from every row to keep exports small.",
            "items": {
              "type": "string",
              "enum": [
                "amenities",
                "amenityIds",
                "attributeGroups",
                "brands",
                "categoryScores",
                "description",
                "gallery",
                "images",
                "nearbyProperties",
                "priceDistribution",
                "rates",
                "ratingHistogram",
                "ratingSources",
                "rentalDetails",
                "reviewTopics",
                "similarProperties",
                "thumbnail",
                "travelTimes"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}