{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper",
    "description": "Google Hotels Scraper: search any destination and get hotels with prices per night, ratings, review counts, stars, address and coordinates. Filter by rating, price, star class, free cancellation and pool or spa. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "pvkobHdKDKSpHHeb5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/herus13~google-hotel-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-herus13-google-hotel-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/herus13~google-hotel-scraper/runs": {
      "post": {
        "operationId": "runs-sync-herus13-google-hotel-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/herus13~google-hotel-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-herus13-google-hotel-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",
            "type": "array",
            "description": "Places to search, one per entry, for example `Paris` or `hotels near Shibuya`. Each destination is searched separately and returns up to `max_results` hotels; a hotel found twice in one destination is returned once. Required: if empty, the run is refused.",
            "items": {
              "type": "string"
            }
          },
          "check_in": {
            "title": "Check-in date",
            "type": "string",
            "description": "Check-in date as YYYY-MM-DD, for example 2026-12-01. Must not be in the past. Leave empty for 30 days after the run starts. Prices are quoted for this date and `nights`."
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of the stay the prices are quoted for, from 1 to 30 nights. Default 1. Each row reports the price per night and the total for the stay.",
            "default": 1
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Adults in the party, from 1 to 6. Default 2. Children and the number of rooms cannot be set. Prices rise with the party size, and a hotel with no room for it has no price and is skipped.",
            "default": 2
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "THB",
              "VND"
            ],
            "type": "string",
            "description": "Currency every price is quoted in: USD, EUR, GBP, THB or VND. Default USD. `min_price` and `max_price` are in this currency too.",
            "default": "USD"
          },
          "max_results": {
            "title": "Max results per destination",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many hotels to return for each destination, from 0 to 1000. Default 20. N returns at most N; 0 returns none. Google lists fewer for small places, so a run can return less than N.",
            "default": 20
          },
          "property_types": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Which listings to keep: `hotel`, `vacation_rental` or both. Default [\"hotel\"], hotels only. Must name at least one. Vacation rentals have no star class and fewer fields filled.",
            "items": {
              "type": "string",
              "enum": [
                "hotel",
                "vacation_rental"
              ]
            },
            "default": [
              "hotel"
            ]
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "lowest_price",
              "most_reviewed",
              "highest_rating"
            ],
            "type": "string",
            "description": "Order of the results: relevance, lowest_price, most_reviewed or highest_rating. Default relevance. Lowest_price is near-monotone, not exact. Highest_rating returns Google's top-rated set (4.7 and up) in a weighted order, not strictly by rating. Most_reviewed is exact.",
            "default": "relevance"
          },
          "min_rating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Keep only hotels rated at least this: 3.5, 4.0, 4.5 or 4.8. Any other value is refused. Leave empty for no minimum."
          },
          "min_price": {
            "title": "Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only hotels priced at or above this per night, in `currency`, whole units, 0 or more. Leave empty for no lower bound. Must not exceed `max_price`."
          },
          "max_price": {
            "title": "Maximum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only hotels priced at or below this per night, in `currency`, whole units, 0 or more. Leave empty for no upper bound. Must not be below `min_price`."
          },
          "free_cancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Keep only hotels with free cancellation. Default false.",
            "default": false
          },
          "hotel_class": {
            "title": "Star classes",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only hotels of these star classes; tick any of 2, 3, 4 and 5. Leave empty for every class. Each row reports its `hotel_class`.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5"
              ]
            }
          },
          "amenities": {
            "title": "Amenities",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only hotels that have all of these: pool, spa. No other amenity can be filtered. Leave empty for no amenity filter.",
            "items": {
              "type": "string",
              "enum": [
                "pool",
                "spa"
              ]
            }
          },
          "proxyUrls": {
            "title": "Your own proxy URLs (optional)",
            "type": "array",
            "description": "Leave empty and the run uses the residential proxy this actor ships with, included in the price of the run. To route the run through your own account instead, add one gateway URL per entry, for example http://user:pass@host:port — works with any provider that issues URLs. When set, the run uses these first and switches to the included proxy if they stop working, so a broken proxy never fails the run. Use US exits.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}