{
  "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": "v82kJ5vcKlUpFBvQF"
  },
  "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.com hotel pages (…h123456.Hotel-Information) and/or search result pages (…/Hotel-Search?…). Search URLs keep every filter you applied on the site (stars, price, amenities, property type, guest rating, sort…).",
            "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"
            }
          },
          "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 (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to include, in USD."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price to include, in USD."
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}