{
  "openapi": "3.0.1",
  "info": {
    "title": "Expedia Scraper API — Hotels, Prices, Rooms & Reviews | $1.8/1k",
    "description": "Scrape Expedia.com hotels by city, landmark, search URL or hotel URL: live prices & deals for your dates, every room & rate plan, address & GPS, all photos, amenities, policies, rating distribution, AI review summary and guest reviews. No login, no API key.",
    "version": "1.0",
    "x-build-id": "baZCqx6kDOIXRz8wT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pro100chok~expedia-all-in-one-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pro100chok-expedia-all-in-one-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/pro100chok~expedia-all-in-one-scraper/runs": {
      "post": {
        "operationId": "runs-sync-pro100chok-expedia-all-in-one-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/pro100chok~expedia-all-in-one-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-pro100chok-expedia-all-in-one-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",
            "type": "array",
            "description": "Cities, neighborhoods, landmarks, airports or hotel names, exactly as you would type them into Expedia's search box (e.g. \"Paris\", \"Times Square, New York\", \"Hotel Des Arts Paris Montmartre\"). Each destination is searched separately.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Expedia URLs",
            "type": "array",
            "description": "Expedia hotel pages (…h123456.Hotel-Information, …h123456.Description-Hotel on expedia.fr) and/or search result pages (…/Hotel-Search?…) from any Expedia site. Each URL is scraped on its own site, in that site's currency: an expedia.fr URL returns French-market prices in EUR, whatever 'Expedia site' is set to. Search URLs keep every filter you applied on the site (stars, price, amenities, property type, guest rating, sort…); hotel URLs keep their dates and guests (chkin, chkout, rm1=a1).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "hotelIds": {
            "title": "Hotel IDs",
            "type": "array",
            "description": "Expedia property IDs (the number after \".h\" in a hotel URL, e.g. 891081).",
            "items": {
              "type": "string"
            }
          },
          "market": {
            "title": "Expedia site (market & currency)",
            "enum": [
              "US",
              "UK",
              "CA",
              "AU",
              "NZ",
              "IE",
              "FR",
              "DE",
              "AT",
              "CH",
              "ES",
              "IT",
              "NL",
              "BE",
              "SE",
              "NO",
              "DK",
              "FI",
              "MX",
              "BR",
              "AR",
              "JP",
              "KR",
              "HK",
              "TW",
              "SG",
              "MY",
              "TH",
              "ID",
              "PH",
              "VN",
              "IN",
              "AE"
            ],
            "type": "string",
            "description": "Which Expedia site to scrape, and so which currency every price comes in: Expedia.com quotes USD, Expedia.fr EUR, Expedia.co.uk GBP, and so on. Expedia ties the currency to the site (asking Expedia.com for euros still returns dollars), so for French-market prices in euros pick \"France — expedia.fr (EUR)\". Texts come in that site's language (French on expedia.fr). Applies to destinations and hotel IDs; an Expedia URL is always scraped on its own site (an expedia.fr link gives expedia.fr prices in EUR).",
            "default": "US"
          },
          "maxItems": {
            "title": "Max hotels per destination",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of hotels to save for each destination or search URL.",
            "default": 50
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "YYYY-MM-DD, or relative like \"7 days\" (from today). Prices and room rates are quoted for these dates. Default: 14 days from today."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "YYYY-MM-DD, or relative like \"8 days\". Default: one night after check-in."
          },
          "adults": {
            "title": "Adults per room",
            "minimum": 1,
            "maximum": 14,
            "type": "integer",
            "description": "Number of adult guests in each room.",
            "default": 2
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "Age of each child (0–17), one entry per child. Leave empty for no children.",
            "items": {
              "type": "string"
            }
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of rooms to book (each with the adults above).",
            "default": 1
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "RECOMMENDED",
              "PRICE_LOW_TO_HIGH",
              "PRICE_HIGH_TO_LOW",
              "REVIEW",
              "DISTANCE",
              "PROPERTY_CLASS"
            ],
            "type": "string",
            "description": "Order of the search results.",
            "default": "RECOMMENDED"
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to include, in the currency of the selected Expedia site (USD on expedia.com, EUR on expedia.fr…)."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price to include, in the currency of the selected Expedia site (USD on expedia.com, EUR on expedia.fr…)."
          },
          "starRatings": {
            "title": "Star rating",
            "type": "array",
            "description": "Only properties with these star ratings.",
            "items": {
              "type": "string",
              "enum": [
                "10",
                "20",
                "30",
                "40",
                "50"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "minGuestRating": {
            "title": "Minimum guest rating",
            "enum": [
              "30",
              "35",
              "40",
              "45"
            ],
            "type": "string",
            "description": "Only properties rated at least this high by guests."
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only properties offering fully refundable rates.",
            "default": false
          },
          "includeDetails": {
            "title": "Hotel details",
            "type": "boolean",
            "description": "Address, coordinates, description, star rating, all photos, amenities, policies, check-in/out, FAQ, nearby places, rating breakdown and AI review summary.",
            "default": true
          },
          "includeRooms": {
            "title": "Rooms & rates",
            "type": "boolean",
            "description": "Every room type with its photos, amenities and all rate plans (price, cancellation terms, payment options, extras like breakfast, rooms left) for your dates.",
            "default": true
          },
          "includeReviews": {
            "title": "Guest reviews",
            "type": "boolean",
            "description": "Attach guest reviews (text, rating, date, traveler type, stay, liked/disliked, photos, hotel response) to each hotel. Billed per review.",
            "default": false
          },
          "maxReviewsPerHotel": {
            "title": "Max reviews per hotel",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to collect for each hotel.",
            "default": 20
          },
          "reviewsSort": {
            "title": "Reviews order",
            "enum": [
              "newest",
              "relevant",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Which reviews come first.",
            "default": "newest"
          },
          "reviewsTravelerType": {
            "title": "Reviews from traveler type",
            "enum": [
              "all",
              "business",
              "couples",
              "families",
              "families_young_children",
              "groups",
              "solo",
              "pets"
            ],
            "type": "string",
            "description": "Only reviews written by this kind of traveler.",
            "default": "all"
          },
          "reviewsFrom": {
            "title": "Reviews newer than",
            "type": "string",
            "description": "Stop collecting reviews older than this date (works with \"Most recent\" order)."
          },
          "maxConcurrency": {
            "title": "Parallel hotels",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many hotels are processed at the same time.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy servers used for requests. Residential proxies are recommended.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}