{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper: Prices, Ratings and Stars for Your Dates",
    "description": "Google Hotels scraper without a browser: nightly and total prices for your dates, guests and currency, plus stars, rating, reviews, coordinates and website for every property Google lists, across all result pages. Prices checked against your dates. Trial: 0.01 USD per 1,000 hotels until 30 Nov 2026.",
    "version": "1.0",
    "x-build-id": "qy6h5OZeYTUB46gwm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cozybit~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cozybit-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/cozybit~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cozybit-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/cozybit~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cozybit-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "Enter 1-100 non-empty searches, such as Paris, hotels in Paris, a hotel's name or its property_token. A full property_token goes directly to that hotel; a name that Google resolves to one hotel is reused across dates. Spaces and duplicate queries are removed.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^(|\\d{4}-\\d{2}-\\d{2}|\\d+\\s*(day|week|month|year)s?)$",
            "type": "string",
            "description": "YYYY-MM-DD or a relative date such as 3 weeks, from today through 330 days ahead (UTC). Use a whole number of days, weeks, months or years. Both relative dates count from the run date, not from check-in. Empty means 14 days from today.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^(|\\d{4}-\\d{2}-\\d{2}|\\d+\\s*(day|week|month|year)s?)$",
            "type": "string",
            "description": "YYYY-MM-DD or a relative date such as 23 days, giving 1-30 nights after check-in. Use a whole number of days, weeks, months or years. Both relative dates count from the run date (UTC), not from check-in: 3 weeks and 23 days give a two-night stay. Empty means one night after check-in.",
            "default": ""
          },
          "checkInDays": {
            "title": "Consecutive check-in dates",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Search 1-60 consecutive check-in dates, starting at checkIn, keeping the same stay length for each. For one hotel, give its name or property_token and set this to get one row per night. The last check-in must be within 330 days. City searches return hotels for every date. Free Apify plans return at most 20 hotel records across all queries and dates.",
            "default": 1
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Number of adults, from 1 to 6.",
            "default": 2
          },
          "childrenAges": {
            "title": "Children's ages (experimental)",
            "maxItems": 4,
            "type": "array",
            "description": "Up to four ages, each 0-17. The child traveller request encoding is unverified; Google may ignore it. Leave empty for verified adult-only searches.",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 17
            },
            "default": []
          },
          "currency": {
            "title": "Currency",
            "pattern": "^[A-Z]{3}$",
            "type": "string",
            "description": "Three-letter uppercase currency code, such as USD, EUR, GBP, INR or JPY. A returned currency mismatch is reported as an error.",
            "default": "USD"
          },
          "country": {
            "title": "Search country",
            "pattern": "^[A-Z]{2}$",
            "type": "string",
            "description": "Two-letter uppercase country code. Sets Google's market (gl) and, for residential proxies only, the proxy country. This is not the destination city. Datacenter and custom proxies retain their own routing.",
            "default": "US"
          },
          "maxResultsPerQuery": {
            "title": "Maximum properties per query",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Collect up to this many distinct properties per search, following Google's pages. Google may return fewer. Free Apify plans return at most 20 hotels across the entire run.",
            "default": 20
          },
          "includeBookingSites": {
            "title": "Include booking sites",
            "type": "boolean",
            "description": "Get each hotel's booking sites, nightly and total stay prices, official-site flag and click-through links. For list results, adds one Google request per hotel (plus retries), making runs slower. Single-hotel and property_token results include these from the same hotel page, with no extra request. Failed lookups keep the hotel and report booking_sites_error. Prices use the hotel's currency; partners vary by market.",
            "default": false
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Apply Google's free-cancellation filter to search results. Off by default. Cancellation terms depend on the selected offer; check them before booking. Ignored for single-hotel and property_token results.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional minimum nightly price in the run currency, as a nonnegative whole number. Empty means no minimum. Google applies the filter; we do not remove returned rows. Ignored for single-hotel and property_token results."
          },
          "maxPrice": {
            "title": "Maximum nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional maximum nightly price in the run currency, as a nonnegative whole number. Must be at least minPrice when both are set. Empty means no maximum. Ignored for single-hotel and property_token results."
          },
          "minStars": {
            "title": "Minimum hotel class",
            "minimum": 2,
            "maximum": 5,
            "type": "integer",
            "description": "Optional minimum hotel class: 2, 3, 4 or 5 stars. Selects this class and all higher classes in Google's filter. Empty means any class. Ignored for single-hotel and property_token results."
          },
          "minRating": {
            "title": "Minimum guest rating",
            "enum": [
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Optional Google guest-rating threshold: 3.5, 4.0 or 4.5. Empty means any rating. Google may include a hotel without a displayed rating; we preserve its result and return null. Ignored for single-hotel and property_token results."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Datacenter proxies are the default and were reliable in our platform probes. Residential proxies are optional and use the selected search country. Datacenter and custom proxies retain their own routing. There is no automatic fallback. Turn off for direct requests, which cannot rotate a blocked IP.",
            "default": {
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}