{
  "openapi": "3.0.1",
  "info": {
    "title": "Expedia Hotel Details Scraper",
    "description": "Scrape the full property record from Expedia and Hotels.com. Just add property IDs or hotel links and get name, address, coordinates, star class, guest score, amenities, check-in and check-out times, policies, fees and the property's own answered questions. $1.20 per 1,000 hotels.",
    "version": "1.0",
    "x-build-id": "sWQzLGw3da65kGIyF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~expedia-hotel-details/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-expedia-hotel-details",
        "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/boncross~expedia-hotel-details/runs": {
      "post": {
        "operationId": "runs-sync-boncross-expedia-hotel-details",
        "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/boncross~expedia-hotel-details/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-expedia-hotel-details",
        "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": {
          "hotels": {
            "title": "Hotels",
            "type": "array",
            "description": "Property IDs or hotel page links. A link looks like https://www.expedia.com/Santorini-Hotels-Ira-Hotel-Spa.h6116875.Hotel-Information: paste the whole link or just the number after the h.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Hotel page links, pasted or bulk-loaded from a file or Google Sheet. Use this instead of the list above when you have many.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "site": {
            "title": "Site",
            "enum": [
              "expedia",
              "hotels"
            ],
            "type": "string",
            "description": "Which site to read. Links you paste already name their own site, so this only applies to bare property IDs. Hotels.com is read on the United States site only.",
            "default": "expedia"
          },
          "maxItems": {
            "title": "Maximum rows for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Stop once this many rows have been returned, across every hotel. 0 means no limit.",
            "default": 0
          },
          "includePolicies": {
            "title": "Include policies and fees",
            "type": "boolean",
            "description": "Add the full policy and important-information sections, heading by heading, alongside the summarised columns (check-in and check-out, fees, pets, children and the rest), which are always included.",
            "default": true
          },
          "includeFaqs": {
            "title": "Include answered questions",
            "type": "boolean",
            "description": "Add the property's own answered questions about pets, parking, check-in and location.",
            "default": true
          },
          "includePhotos": {
            "title": "Include photos",
            "type": "boolean",
            "description": "Add every photograph the property publishes, with its caption. This is most of a row's size: around 90 images on a typical hotel.",
            "default": true
          },
          "includeAmenityGroups": {
            "title": "Include the full amenity list",
            "type": "boolean",
            "description": "Add the complete amenity list grouped as the site groups it (property and room amenities, by category) alongside the short highlighted set.",
            "default": true
          },
          "market": {
            "title": "Market",
            "enum": [
              "auto",
              "ar",
              "au",
              "be",
              "br",
              "ca",
              "cl",
              "co",
              "cr",
              "dk",
              "de",
              "eg",
              "es",
              "fr",
              "in",
              "id",
              "ie",
              "it",
              "my",
              "mx",
              "nl",
              "nz",
              "no",
              "pe",
              "ph",
              "eu",
              "ch",
              "sg",
              "fi",
              "se",
              "ae",
              "uk",
              "us",
              "vn",
              "at",
              "sa",
              "th",
              "tw",
              "jp",
              "hk",
              "kr"
            ],
            "type": "string",
            "description": "Which country's site to read. The links in every row point at it, and so do the order of the address lines and any note that country's site adds for its own law (the French site adds a French tax-code disclosure, for example). Auto follows each pasted link's own site, and a bare property ID uses the US site. Property IDs are the same in every market, so the same hotel can be read from any of them. Nothing here is priced, so the market does not affect any money.",
            "default": "auto"
          },
          "language": {
            "title": "Label language",
            "enum": [
              "english",
              "site-default"
            ],
            "type": "string",
            "description": "Language of the site's own labels: amenity names and their groups, the policy and information section headings, the neighbourhood heading. The property's own text (check-in instructions, fees, house rules, answered questions) is published as the property wrote it and does not change. The summarised policy columns are filled in either language.",
            "default": "english"
          },
          "dedupStoreName": {
            "title": "Memory store",
            "type": "string",
            "description": "Name of a storage area to remember the properties already returned. Leave empty to remember nothing."
          },
          "onlyNew": {
            "title": "Only new properties",
            "type": "boolean",
            "description": "Return only properties that no earlier run returned. Needs a memory store.",
            "default": false
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Pause after each request, per parallel lane. 0 runs at full speed; raise it only to make a large run gentler. Values above 2000 are treated as 2000.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many hotels are fetched at once. Higher is faster; the default suits almost every run.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}