{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper With Rate Comparison",
    "description": "Google Hotels Scraper: Extract hotel names, prices, ratings, reviews, locations, amenities, availability, and booking links. Compare room rates across properties and dates to analyze pricing trends, identify competitive offers, and support hotel market research and travel planning.",
    "version": "0.7",
    "x-build-id": "AeyVTV8A5eqYY9OKc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-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/scrapier~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-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/scrapier~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-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": {
          "destinations": {
            "title": "🏙️ Destinations / Search Terms",
            "type": "array",
            "description": "City, area, or hotel keyword to search — e.g. 'Prague hotels', 'Times Square New York'. Add several for bulk runs. (Accepts the base actor's `searchQuery` key too.)",
            "items": {
              "type": "string"
            }
          },
          "maxHotels": {
            "title": "📊 Hotels To Scan",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many hotels to process per destination (1-5000). Each hotel gets its own multi-OTA rate comparison. (Accepts the base actor's `maxResults` key too.)"
          },
          "arrivalDate": {
            "title": "🛬 Arrival Date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Check-in date (YYYY-MM-DD) — drives every OTA's live rate. (Accepts the base actor's `checkInDate` key too.)"
          },
          "departureDate": {
            "title": "🛫 Departure Date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Check-out date (YYYY-MM-DD), must be after arrival. Sets the night count used for the per-night vs. total-stay estimate. (Accepts the base actor's `checkOutDate` key too.)"
          },
          "adultsCount": {
            "title": "👥 Adults",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Adults per room (1-10). Affects rates on every OTA. (Accepts the base actor's `numberOfAdults` key too.)"
          },
          "childrenCount": {
            "title": "👶 Children",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Children per room (0-10), optional. (Accepts the base actor's `numberOfChildren` key too.)"
          },
          "currency": {
            "title": "💱 Currency Code",
            "minLength": 3,
            "maxLength": 3,
            "type": "string",
            "description": "3-letter currency code (EUR, USD, GBP...) requested from Google; the OTA that actually renders the offer may still display its own local currency. (Accepts the base actor's `currencyCode` key too.)"
          },
          "sortOrder": {
            "title": "↕️ Sort results by",
            "enum": [
              "relevance",
              "price_low_high",
              "price_high_low",
              "rating_high_low",
              "stars_high_low"
            ],
            "type": "string",
            "description": "📶 Order the scraped hotels in the dataset. 'Relevance' keeps Google's own search-result ranking; the other options re-sort the final list by the extracted price/rating/stars (hotels missing that value are placed last, never faked).",
            "default": "relevance"
          },
          "enrichRateBreakdown": {
            "title": "🧮 Compute Best Deal, Price Spread & Taxes/Fees",
            "type": "boolean",
            "description": "When ON (default): flags the cheapest offer (bestDeal), computes priceSpreadAbs/priceSpreadPct across all OTAs found, estimates the whole-stay total per offer, and attaches each offer's provider-disclosed taxes/fees when present in its booking link. When OFF: only the broadened raw price list is returned (base-equivalent behavior, no derived comparison fields).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🔒 Proxy Configuration",
            "type": "object",
            "description": "Leave default to start with no proxy — the actor auto-escalates to a paid proxy tier only if Google throttles it."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}