{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper & API - Prices, Deals & Insights",
    "description": "Scrape Google Hotels: prices with taxes, all booking partners, price insights, ratings and coordinates for any city and dates, or the hotels nearest any address or landmark. Local prices by country, verified accuracy, agent-ready.",
    "version": "0.1",
    "x-build-id": "CZJYGvxOvJczhGDtf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/surefeed~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-surefeed-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/surefeed~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-surefeed-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/surefeed~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-surefeed-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": "Destinations or hotels",
            "type": "array",
            "description": "What to search on Google Hotels, one per line: a city, area or hotel name (e.g. \"hotels in Rome\", \"Hotel Artemide Rome\"). Ignored when \"Near an address or landmark\" is filled in.",
            "items": {
              "type": "string"
            }
          },
          "near": {
            "title": "Or: hotels near an address or landmark",
            "type": "string",
            "description": "Find the hotels closest to a place: a landmark, an address, a venue or coordinates (e.g. \"Colosseum, Rome\", \"Via Nazionale 22, Rome\", \"Madison Square Garden\", \"41.8902, 12.4922\"). Results are sorted by straight-line distance and each hotel gets a distanceKm field. The place is located with OpenStreetMap; the run log and the nearResolvedTo field show what it was matched to."
          },
          "maxDistanceKm": {
            "title": "Max distance (km)",
            "minimum": 0.1,
            "maximum": 50,
            "type": "number",
            "description": "Only with \"Near an address or landmark\": keep hotels within this straight-line distance.",
            "default": 2
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD. Defaults to 14 days from today."
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, 1–30 nights after check-in. Defaults to check-in + 2 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of adult guests (1–8). Prices and availability depend on it. Children are not supported (Google ignores them in shared search links).",
            "default": 2
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CHF",
              "CAD",
              "AUD",
              "JPY",
              "INR",
              "BRL",
              "MXN",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "AED"
            ],
            "type": "string",
            "description": "3-letter currency code.",
            "default": "USD"
          },
          "country": {
            "title": "Search from country",
            "enum": [
              "US",
              "GB",
              "IT",
              "DE",
              "FR",
              "ES",
              "PT",
              "NL",
              "BE",
              "AT",
              "CH",
              "IE",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "GR",
              "TR",
              "CA",
              "MX",
              "BR",
              "AR",
              "AU",
              "NZ",
              "JP",
              "KR",
              "IN",
              "SG",
              "TH",
              "ID",
              "AE",
              "ZA"
            ],
            "type": "string",
            "description": "Prices, booking partners and tax display depend on the visitor's country. Results are fetched as a visitor from this country would see them.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "it"
            ],
            "type": "string",
            "description": "Language of hotel names, amenities and labels.",
            "default": "en"
          },
          "maxResultsPerQuery": {
            "title": "Max hotels per search",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "How many hotels to return per query (up to 3,000). Results are collected across pages (~20 per page, fetched in parallel) and de-duplicated.",
            "default": 20
          },
          "onlyAvailable": {
            "title": "Only hotels with rooms available",
            "type": "boolean",
            "description": "Skip hotels that show no price for your dates and number of adults (no booking partner has a room). Skipped hotels are not charged.",
            "default": false
          },
          "expandResults": {
            "title": "Find more hotels with related searches",
            "type": "boolean",
            "description": "A single Google Hotels search shows at most ~700–750 different hotels (deeper pages repeat the same ones). When you ask for more, related searches are added automatically (B&Bs, hostels, apartments, 5-star, city center…) and merged without duplicates. Each hotel's matchedQuery tells which search found it.",
            "default": true
          },
          "includeDetails": {
            "title": "Include all booking offers & price insights",
            "type": "boolean",
            "description": "Opens each hotel page: every booking site's price (Booking.com, Expedia, official site…), the cheapest offer, the typical price range for your dates, Google's price insight (low / typical / high), address and phone. Charged as an extra \"Hotel details\" event per hotel.",
            "default": false
          },
          "proxyType": {
            "title": "Accuracy mode",
            "enum": [
              "local",
              "datacenter"
            ],
            "type": "string",
            "description": "\"local\" fetches from a residential IP in the chosen country (matches what local travelers see). \"datacenter\" is faster but partners and tax display may differ from the chosen country.",
            "default": "local"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}