{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper: Prices from All Booking Sites",
    "description": "Scrape Google Hotels for any city or hotel. Get prices for many dates in one run and compare every booking site: official website, Booking.com, Expedia, Agoda, Hotels.com. Ratings, reviews, stars, amenities, location. Hotel price monitoring & rate parity API. No login. Export CSV, Excel, JSON.",
    "version": "0.1",
    "x-build-id": "1rv9KPnNMoq1VmW3A"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-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/s_actors~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-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/s_actors~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-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": "🔍 Search queries",
            "type": "array",
            "description": "Type it like in Google Hotels: a city, district or landmark, e.g. \"hotels in Paris\", \"hotels near Eiffel Tower\", \"spa hotels in Budapest\". Each query is scraped for every check-in date.",
            "items": {
              "type": "string"
            }
          },
          "hotels": {
            "title": "🏨 Specific hotels (URLs or names)",
            "type": "array",
            "description": "Track exact hotels, e.g. your competitors. Paste Google Hotels links (google.com/travel/hotels/entity/...) or just hotel names with the city, e.g. \"Hotel Adlon Kempinski Berlin\".",
            "items": {
              "type": "string"
            }
          },
          "checkInDate": {
            "title": "📅 Check-in date",
            "type": "string",
            "description": "First check-in date. Pick a fixed date, or a relative one like \"+7 days\" so scheduled runs always look ahead from the day they run (recommended for daily monitoring). Leave empty for 7 days from today."
          },
          "nights": {
            "title": "🌙 Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of stay.",
            "default": 1
          },
          "numberOfDates": {
            "title": "🗓️ Number of check-in dates",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Scrape many dates in one run: 1 = only the check-in date above, 30 = the next 30 check-in dates. Perfect for price calendars and rate monitoring.",
            "default": 1
          },
          "dateStepDays": {
            "title": "↔️ Days between check-in dates",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Used with several dates: 1 = every day, 7 = same weekday every week.",
            "default": 1
          },
          "adults": {
            "title": "👤 Adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of adult guests per room.",
            "default": 2
          },
          "includePrices": {
            "title": "💶 Prices from all booking sites",
            "type": "boolean",
            "description": "Adds every booking site's price for each hotel: the official website, Booking.com, Expedia, Agoda, Hotels.com, Trip.com and more, with booking links. Also shows the cheapest site and how much the official website differs. Charged as an extra event per hotel.",
            "default": false
          },
          "maxHotelsPerSearch": {
            "title": "🔢 Max hotels per search and date",
            "minimum": 0,
            "type": "integer",
            "description": "How many hotels to return for each query and date. 0 = all hotels Google shows (big cities have 500+). Start small to test.",
            "default": 100
          },
          "propertyType": {
            "title": "🏩 Property type",
            "enum": [
              "all",
              "hotels",
              "vacation_rentals"
            ],
            "type": "string",
            "description": "Google mixes hotels with apartments and holiday homes. Choose what you need.",
            "default": "hotels"
          },
          "minStars": {
            "title": "⭐ Minimum hotel class (stars)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only hotels with at least this many stars. 0 = any.",
            "default": 0
          },
          "minRating": {
            "title": "📈 Minimum guest rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Google guest rating from 0 to 5, e.g. 4.2.",
            "default": 0
          },
          "minPrice": {
            "title": "💲 Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "maxPrice": {
            "title": "💲 Maximum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "onlyWithPrice": {
            "title": "Only hotels with a price for the dates",
            "type": "boolean",
            "description": "Skip properties that show no price for the selected dates (often sold out).",
            "default": false
          },
          "currency": {
            "title": "💱 Currency",
            "type": "string",
            "description": "ISO code, e.g. USD, EUR, GBP.",
            "default": "USD"
          },
          "language": {
            "title": "🗣️ Language",
            "type": "string",
            "description": "Google interface language (hl), e.g. en, de, fr.",
            "default": "en"
          },
          "country": {
            "title": "🌍 Country",
            "type": "string",
            "description": "Google country (gl), e.g. us, gb, de. Prices can differ by country.",
            "default": "us"
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at the same time. Keep the default unless you know you need more.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Fallback proxy",
            "type": "object",
            "description": "Requests go direct first. If Google blocks them, the scraper retries through this proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "alwaysUseProxy": {
            "title": "Always use the proxy",
            "type": "boolean",
            "description": "Skip direct requests and send everything through the proxy above.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}