{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Hotels Scraper - Prices, Providers, Ratings & Amenities",
    "description": "Scrape Google Hotels for any destination and dates: price per night and total, prices on every booking site, ratings, reviews, class, amenities, location and photos. Export CSV, Excel, JSON or XML.",
    "version": "0.1",
    "x-build-id": "r11Zge6YapsQ0ieOD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~google-hotels-price-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-google-hotels-price-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/parseforge~google-hotels-price-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-google-hotels-price-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/parseforge~google-hotels-price-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-google-hotels-price-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": {
          "searchQueries": {
            "title": "Destinations or hotel searches",
            "type": "array",
            "description": "One search per line: a city, a neighborhood, a landmark or a full phrase such as \"Paris\", \"Times Square New York\" or \"beach hotels in Cancun\". Plain destinations are searched as \"hotels in <destination>\". Each search returns Google Hotels results ranked the way Google shows them (or sorted by your choice below).",
            "items": {
              "type": "string"
            }
          },
          "hotelUrls": {
            "title": "Hotel links (optional)",
            "type": "array",
            "description": "Track specific hotels: paste Google Hotels links that contain /travel/hotels/entity/... or the propertyToken value from a previous run. Each link returns one row with the hotel's price for your dates. Turn on 'Provider prices, address and phone' to also get its address, phone and every booking provider (extra charge per hotel).",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          },
          "checkInDate": {
            "title": "Check-in date",
            "type": "string",
            "description": "Check-in date as YYYY-MM-DD. Leave empty to use 14 days from today. Must be in the future and less than 330 days away."
          },
          "checkOutDate": {
            "title": "Check-out date",
            "type": "string",
            "description": "Check-out date as YYYY-MM-DD. Leave empty for a one-night stay. Up to 60 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Number of adults (1 to 12). Prices change with occupancy.",
            "default": 2
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "One age (0 to 17) per child, for example 4 and 9. Leave empty for no children.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "MXN",
              "BRL",
              "COP",
              "ARS",
              "CLP",
              "PEN",
              "JPY",
              "CNY",
              "INR",
              "KRW",
              "THB",
              "SGD",
              "HKD",
              "NZD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "TRY",
              "AED",
              "SAR",
              "ZAR",
              "ILS",
              "EGP",
              "IDR",
              "MYR",
              "PHP",
              "VND",
              "TWD",
              "RON",
              "BGN",
              "HRK",
              "ISK",
              "UAH",
              "RUB"
            ],
            "type": "string",
            "description": "Currency of every price in the results.",
            "default": "USD"
          },
          "countryCode": {
            "title": "Google country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "nz",
              "ie",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pt",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "pe",
              "in",
              "jp",
              "kr",
              "sg",
              "ae",
              "za"
            ],
            "type": "string",
            "description": "The Google country site the search runs on. It decides which booking providers and offers Google shows, so pick the market you want to compare.",
            "default": "us"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "lowestPrice",
              "highestRating",
              "mostReviewed"
            ],
            "type": "string",
            "description": "Google ranking of the results. Lowest price returns the cheapest hotels first.",
            "default": "relevance"
          },
          "hotelClasses": {
            "title": "Hotel class (stars)",
            "type": "array",
            "description": "Only these star classes. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "minRating": {
            "title": "Minimum guest rating",
            "enum": [
              "any",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only hotels rated at least this high by guests.",
            "default": "any"
          },
          "amenities": {
            "title": "Required amenities",
            "type": "array",
            "description": "Hotels must offer all the selected amenities.",
            "items": {
              "type": "string",
              "enum": [
                "freeParking",
                "pool",
                "fitnessCenter",
                "freeBreakfast",
                "spa",
                "hotTub"
              ],
              "enumTitles": [
                "Free parking",
                "Pool",
                "Fitness center",
                "Free breakfast",
                "Spa",
                "Hot tub"
              ]
            }
          },
          "minPrice": {
            "title": "Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Skip hotels cheaper than this, in the selected currency. 0 means no minimum.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Skip hotels above this price per night, in the selected currency. 0 means no maximum.",
            "default": 0
          },
          "onlyWithPrice": {
            "title": "Only hotels with a price",
            "type": "boolean",
            "description": "Skips hotels Google shows without a rate for your dates (usually sold out).",
            "default": true
          },
          "includeProviderPrices": {
            "title": "Provider prices, address and phone",
            "type": "boolean",
            "description": "Adds the address, phone, Google place ID, the price on every booking site (Booking.com, Expedia, Hotels.com, the hotel itself and more) with room types and free-cancellation deadlines, and other rating sources. Extra cost: one 'Hotel provider details' charge per hotel that comes back with these details, about $0.0035 on the Free plan ($0.0031 on Gold), on top of the normal hotel row. Nothing extra when this is off or when Google gives no details for a hotel.",
            "default": false
          },
          "maxPagesPerQuery": {
            "title": "Max result pages per search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Google returns about 18 hotels per page. Raise it to go deeper on big cities.",
            "default": 25
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Datacenter proxy is enough for Google Hotels. The Actor moves to residential by itself if Google starts blocking, when your plan includes it.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}