{
  "openapi": "3.0.1",
  "info": {
    "title": "Expedia  Hotels + Reviews",
    "description": "From $1/1K. Extract hotel listings and reviews from Expedia.com. Get comprehensive data, including prices, ratings, review text, photos, and location details for any destination.",
    "version": "0.1",
    "x-build-id": "kzLDvdriZdfUHlyyZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~expedia-universal-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-expedia-universal-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/abotapi~expedia-universal-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-expedia-universal-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/abotapi~expedia-universal-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-expedia-universal-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": [
          "checkIn",
          "checkOut"
        ],
        "properties": {
          "mode": {
            "title": "Scraping mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode runs a destination query and paginates results. URL mode fetches hotels by property or search URL.",
            "default": "search"
          },
          "reviewsOnly": {
            "title": "Scrape reviews only",
            "type": "boolean",
            "description": "When enabled, the output is individual review records (one row per review) instead of hotel cards. Works in both Search and URL input types.",
            "default": false
          },
          "includeReviews": {
            "title": "Include reviews in hotel cards",
            "type": "boolean",
            "description": "When enabled, each hotel card gets up to Max Reviews per Hotel reviews embedded under extra.reviews. Ignored if Scrape reviews only is on.",
            "default": false
          },
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "Search mode only. Type a city (for example Paris, New York, Tokyo)."
          },
          "startUrls": {
            "title": "Hotel URLs",
            "type": "array",
            "description": "URL mode only. Paste Expedia property URLs (Hotel-Information pages) or Expedia Hotel-Search URLs. Search URLs are auto paginated.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "destinationId": {
            "title": "Destination ID (optional)",
            "type": "string",
            "description": "Numeric region ID from an Expedia URL (for example 2734 for Paris, 178293 for New York). It is the number after .d in any Expedia URL. If left empty, the Actor resolves it from the Destination text above."
          },
          "checkIn": {
            "title": "Check in Date",
            "type": "string",
            "description": "Required. Pick a date, or type a relative value such as 1 day (tomorrow) or 7 days.",
            "default": "1 day"
          },
          "checkOut": {
            "title": "Check out Date",
            "type": "string",
            "description": "Required. Pick a date, or type a relative value such as 2 days (day after tomorrow).",
            "default": "2 days"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "Number of adult guests. Affects pricing and availability in the results.",
            "default": 2
          },
          "children": {
            "title": "Children Ages",
            "type": "array",
            "description": "Add one entry per child and type the age in years (0 to 17). Two kids age 5 and 10? Add 5 and 10. Two 5 year olds? Add 5 twice.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of rooms to book. Each room uses the same adult and children configuration.",
            "default": 1
          },
          "minPrice": {
            "title": "Min Price per Night",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum nightly price filter in the selected currency. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max Price per Night",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum nightly price filter in the selected currency. Leave empty for no maximum."
          },
          "starRatings": {
            "title": "Star Ratings Filter",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by star rating. Select one or more. Leave empty to include all star ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "RECOMMENDED",
              "PRICE_LOW_TO_HIGH",
              "PRICE_HIGH_TO_LOW",
              "DISTANCE",
              "PROPERTY_CLASS",
              "REVIEW"
            ],
            "type": "string",
            "description": "Order in which hotels are returned.",
            "default": "RECOMMENDED"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD",
              "CAD",
              "NZD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RUB",
              "TRY",
              "CNY",
              "HKD",
              "TWD",
              "KRW",
              "SGD",
              "THB",
              "MYR",
              "IDR",
              "PHP",
              "INR",
              "AED",
              "SAR",
              "ILS",
              "ZAR",
              "MXN",
              "BRL",
              "ARS",
              "CLP",
              "COP",
              "PEN"
            ],
            "type": "string",
            "description": "Currency for prices shown on hotel cards.",
            "default": "USD"
          },
          "locale": {
            "title": "Locale",
            "enum": [
              "en_US",
              "en_GB",
              "en_AU",
              "en_CA",
              "en_IN",
              "en_SG",
              "fr_FR",
              "fr_CA",
              "de_DE",
              "de_AT",
              "es_ES",
              "es_MX",
              "it_IT",
              "nl_NL",
              "pt_BR",
              "pt_PT",
              "ja_JP",
              "ko_KR",
              "zh_CN",
              "zh_HK",
              "zh_TW",
              "sv_SE",
              "da_DK",
              "nb_NO",
              "fi_FI",
              "pl_PL",
              "ru_RU",
              "th_TH",
              "tr_TR",
              "ar_SA"
            ],
            "type": "string",
            "description": "Language and region for content on hotel cards and for review language.",
            "default": "en_US"
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on the total number of records saved to the dataset across all pages and hotels.",
            "default": 50
          },
          "maxReviewsPerHotel": {
            "title": "Max Reviews per Hotel",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on reviews embedded in each hotel card. Only applies when Include reviews in hotel cards is on. Ignored in Scrape reviews only mode (Max Items caps the overall total).",
            "default": 25
          },
          "reviewsFrom": {
            "title": "Reviews From Date",
            "type": "string",
            "description": "YYYY-MM-DD. Only keep reviews on or after this date. Speeds up runs when you only need recent reviews."
          },
          "includeCategoryRatings": {
            "title": "Include Category Ratings",
            "type": "boolean",
            "description": "Attach hotel level aggregate ratings (cleanliness, staff, location, and similar categories) to each review record.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of parallel HTTP requests. Higher values are faster but more likely to trigger site rate limits.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Residential proxies are recommended for reliable access."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}