{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Price Comparison",
    "description": "Compare hotel prices across booking sites on Google Hotels. For your dates, guests and currency, get every site's offer with nightly and total price and booking link, plus the cheapest site, rating, reviews, star class and address. No login. The first 10 results of every run are free.",
    "version": "0.3",
    "x-build-id": "BlKF4mSuV8V0WbARV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~google-hotels-prices-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-google-hotels-prices-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/axiomworks~google-hotels-prices-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-google-hotels-prices-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/axiomworks~google-hotels-prices-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-google-hotels-prices-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": "Hotel search phrases, e.g. hotels in Paris",
            "type": "array",
            "description": "Hotel phrases such as 'hotels in Paris'; no default targets. Supply queries, hotelUrls, or both; processed before hotelUrls. Dates, guests, currency and filters apply to searches.",
            "items": {
              "type": "string"
            }
          },
          "hotelUrls": {
            "title": "Google Hotels URLs, e.g. /travel/hotels/entity/<id>",
            "type": "array",
            "description": "Google Hotels URLs, e.g. https://www.google.com/travel/hotels/entity/ChkI1N6v0cC4pfmpARoML2cvMTJxNHhyNHh0EAE or https://www.google.com/travel/search?q=hotels%20in%20Rome. Supply these, queries, or both. Search URLs become queries; entity URLs bypass filters. Dates, adults and currency apply to both.",
            "items": {
              "type": "string"
            }
          },
          "hotelIds": {
            "title": "Hotel entity IDs, e.g. ChkI…EAE",
            "type": "array",
            "description": "Google Hotels entityId values from a previous output, e.g. ChkI1N6v0cC4pfmpARoML2cvMTJxNHhyNHh0EAE. Supply queries, hotelUrls or hotelIds. IDs run after URLs, bypass search filters and share maxItems. Dates, adults and currency apply. This accepts Hotels entity IDs, not Maps place IDs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxItems": {
            "title": "Total hotel limit, e.g. 20",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Total unique hotels across all queries, hotelUrls and hotelIds, 1-1000; default 50. Searches run first; later targets may return 0 when this shared budget is exhausted. Filters and deduplication apply before counting results.",
            "default": 50
          },
          "checkIn": {
            "title": "Check-in date, e.g. today+30d",
            "type": "string",
            "description": "Stay start as YYYY-MM-DD or a relative date such as today+30d; omitted means seven days from today. Applies to all queries, hotelUrls and hotelIds with checkOut. Past stays move to tomorrow while preserving their length."
          },
          "checkOut": {
            "title": "Check-out date, e.g. checkin+2d",
            "type": "string",
            "description": "Stay end as YYYY-MM-DD or a relative date such as checkin+2d; omitted means one night after checkIn. Depends on checkIn; stays must be 1-30 nights. Applies to every query and hotel URL."
          },
          "adults": {
            "title": "Adult guests, e.g. 2",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Adult guests for every query and hotel URL, 1-12; default 2. Used with checkIn, checkOut and currency to request stay prices.",
            "default": 2
          },
          "currency": {
            "title": "Price currency, e.g. USD",
            "type": "string",
            "description": "Uppercase three-letter currency code for every target, e.g. USD or EUR; default USD. Used with dates and adults to request prices; price filters use this currency.",
            "default": "USD"
          },
          "language": {
            "title": "Google language, e.g. en",
            "type": "string",
            "description": "Google language code for names and text, e.g. en or en-GB; default en. Applies to queries, hotelUrls and hotelIds alongside country; it does not translate unavailable fields.",
            "default": "en"
          },
          "includeOffers": {
            "title": "Bill hotel offers event, e.g. false",
            "type": "boolean",
            "description": "true or false, default false. Hotel detail pages are always opened, so address, phone and per-site booking offers (provider, price, link) appear in every record either way. Set true only to charge the separate hotel-offers event for records that have offers. No extra input or item budget.",
            "default": false
          },
          "country": {
            "title": "Google market, e.g. us",
            "type": "string",
            "description": "Two-letter Google market code, e.g. us or gb; omitted uses Google's default market. Applies to every target alongside language and may change regional availability."
          },
          "minRating": {
            "title": "Minimum guest rating, e.g. 4.3",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Minimum Google guest rating for search results, 0-5; default 0 disables filtering. Requires queries or a search URL; does not filter entity hotelUrls and hotelIds. Missing ratings are excluded when enabled. Example: 4.3.",
            "default": 0
          },
          "minReviewsCount": {
            "title": "Minimum review count, e.g. 100",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Minimum Google reviewsCount for search results, 0-1000000000; default 0 disables filtering. Combine with minRating to select hotels with more review evidence. Missing review counts are excluded when enabled. Direct hotelUrls and hotelIds bypass search filters. Example: 100.",
            "default": 0
          },
          "pricedOnly": {
            "title": "Only hotels with a listed price",
            "type": "boolean",
            "description": "Keep search listings with pricePerNight greater than zero; default false keeps unpriced listings too. Applies to queries and search URLs before detail requests and the shared maxItems count. Direct entity hotelUrls and hotelIds bypass this filter. A quoted rate does not guarantee booking availability.",
            "default": false
          },
          "hotelClasses": {
            "title": "Allowed star classes, e.g. 4 and 5",
            "type": "array",
            "description": "Allowed star classes as strings, e.g. ['4','5']; omitted or empty allows any class. Used only for queries and search URLs; entity hotelUrls and hotelIds bypass this filter. Missing classes are excluded when enabled.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ]
            }
          },
          "minPricePerNight": {
            "title": "Minimum nightly amount, e.g. 100",
            "minimum": 0,
            "type": "number",
            "description": "Minimum listed nightly amount in currency; default 0 disables filtering. Applies only to queries and search URLs. Must not exceed an enabled maxPricePerNight; missing prices are excluded when enabled. Example: 100.",
            "default": 0
          },
          "maxPricePerNight": {
            "title": "Maximum nightly amount, e.g. 300",
            "minimum": 0,
            "type": "number",
            "description": "Maximum listed nightly amount in currency; default 0 disables filtering. Applies only to queries and search URLs. Must not be below an enabled minPricePerNight; missing prices are excluded when enabled. Example: 300.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy settings, e.g. useApifyProxy true",
            "type": "object",
            "description": "Proxy settings for all targets; omitted uses Apify datacenter then residential fallback on the platform. Explicit groups or proxyUrls retain your selection. Local runs use no proxy. Blocked requests retry with fresh sessions. Example: {\"useApifyProxy\":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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}