{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper - Nightly Prices, Stars & Booking Sites",
    "description": "List the hotels Google Hotels shows for any city or area, priced for your dates and guests: per-night rate, stay total with taxes, hotel class, guest score, reviews, amenities, deals, map position and photos, plus each booking site's rate on request. $4 per 1,000 hotels; failed pages are free.",
    "version": "1.0",
    "x-build-id": "DrjAExv26R4W7RVPA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tenfoldfleet~google-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tenfoldfleet-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/tenfoldfleet~google-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tenfoldfleet-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/tenfoldfleet~google-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tenfoldfleet-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": [
          "destinations"
        ],
        "properties": {
          "destinations": {
            "title": "Destinations",
            "type": "array",
            "description": "Cities, regions, neighborhoods or landmarks, one per line, e.g. \"Lisbon\", \"Austin, TX\", \"Shinjuku, Tokyo\". Each is searched as \"hotels in <destination>\" (a line that already says hotels, resorts or hostels is searched as written).",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "YYYY-MM-DD. Leave empty for tomorrow (or use \"Check-in days from today\" below for scheduled runs)."
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "YYYY-MM-DD, up to 30 nights after check-in. Leave empty to use \"Nights\"."
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of stay when no check-out date is given.",
            "default": 1
          },
          "checkInDaysFromToday": {
            "title": "Check-in days from today",
            "minimum": 0,
            "maximum": 330,
            "type": "integer",
            "description": "For schedules and rate monitoring: check in this many days after the run date (0 = today, 30 = in a month). Used only when \"Check-in date\" is empty."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Guests aged 18 or over, for one room.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 6,
            "type": "integer",
            "description": "Number of children. Give their ages below; a missing age counts as 8.",
            "default": 0
          },
          "childAges": {
            "title": "Child ages",
            "type": "array",
            "description": "Age of each child (0-17), e.g. [5, 10]. Google prices children by age."
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "ISO code of the money every price is shown in, e.g. USD, EUR, GBP, AUD, JPY. If Google can't price in it, that destination returns a free error row instead of hotels.",
            "default": "USD"
          },
          "country": {
            "title": "Country (Google region)",
            "type": "string",
            "description": "2-letter code of the Google region you search from, e.g. us, gb, de. It mostly affects the booking partners listed; the hotels stay the same.",
            "default": "us"
          },
          "maxHotelsPerDestination": {
            "title": "Max hotels per destination",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop after this many hotels per destination. A Google results page holds roughly 20 properties, so 100 hotels need about 7 pages; big cities reach several hundred. Each hotel is one charged result ($0.004). On the Apify free plan, the $5 monthly credit covers about 1,200 hotels, or about 550 with booking-site prices.",
            "default": 100
          },
          "minStars": {
            "title": "Minimum hotel class (stars)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Lowest hotel class to keep, 1-5. Properties without a class, such as most rentals, are dropped when this is set. Dropped rows are free."
          },
          "excludeVacationRentals": {
            "title": "Hotels only (skip vacation rentals)",
            "type": "boolean",
            "description": "Google's hotel list also contains apartments and other rentals. Turn on to keep hotels only. Skipped rentals are free.",
            "default": false
          },
          "skipHotelsWithoutPrice": {
            "title": "Skip hotels without a price",
            "type": "boolean",
            "description": "Some listed properties have no rate for your stay, usually because they are full. They come back with an empty nightlyPrice unless you turn this on. Skipped rows are free.",
            "default": false
          },
          "includeOtaPrices": {
            "title": "Add booking-site prices (Booking.com, Expedia, official site...)",
            "type": "boolean",
            "description": "Opens each hotel's rate list as well and adds the per-site nightly and stay prices, the cheapest seller, the direct rate on the hotel's own website, the street address and the phone. One extra event per hotel ($0.005) and one more page per hotel, so a run takes longer. Lists that fail, and sold-out hotels with no seller, are not charged.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many destinations to read in parallel.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. The Actor works without a proxy and retries a blocked page once through Apify datacenter proxy by itself.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}