# Kayak API

> Kayak returns flight options, hotel rates, and rental car offers, available as a workflow and API.

Kayak returns flight fares, sellers, itineraries, and details; Search flights needs an origin, destination, and departure date. Search hotels returns rates, guest scores, and property details; it needs a location and check-in and check-out dates. Search rental cars returns offers, prices, and vehicle details; it needs a pick-up location and pick-up and drop-off dates.

- Page: https://fous.com/workflows/kayak
- Handle: `@kayak`
- Category: [Travel](https://fous.com/workflows/category/travel)
- Source website: https://kayak.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Kayak.

## Methods

### Search flights

Operation `search_flights`, version 1. 1 credit per call.

Compare Kayak flight options by route and date, including itineraries, lowest listed USD fare per traveler, booking site, and flight details. Fares and availability can change at booking.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"quickest"` | Flight order, for example cheapest. |
| `cabin` | string | no | `"premium_economy"` | Cabin class, for example business. |
| `adults` | integer | no | `2` | Number of adults, for example 2. |
| `origin` | string | yes | `"Boston"` | Departure city or airport, for example Boston. |
| `destination` | string | yes | `"Lisbon"` | Arrival city or airport, for example Lisbon. |
| `max_results` | integer | no | `50` | Maximum number of options, for example 10. |
| `return_date` | string | no | `"2026-11-19"` | Return date, for example 2026-11-17. Omit for one-way flights. |
| `nonstop_only` | boolean | no | `true` | Only nonstop flight options, for example true. |
| `departure_date` | string | yes | `"2026-11-10"` | Departure date, for example 2026-11-10. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "origin",
    "destination",
    "departure_date"
  ],
  "properties": {
    "sort": {
      "enum": [
        "best",
        "cheapest",
        "quickest"
      ],
      "type": "string",
      "default": "best",
      "description": "Flight order, for example cheapest.",
      "examples": [
        "quickest",
        "cheapest"
      ]
    },
    "cabin": {
      "enum": [
        "economy",
        "premium_economy",
        "business",
        "first"
      ],
      "type": "string",
      "default": "economy",
      "description": "Cabin class, for example business.",
      "examples": [
        "premium_economy",
        "business"
      ]
    },
    "adults": {
      "type": "integer",
      "default": 1,
      "maximum": 9,
      "minimum": 1,
      "description": "Number of adults, for example 2.",
      "examples": [
        2
      ]
    },
    "origin": {
      "type": "string",
      "title": "From",
      "minLength": 2,
      "description": "Departure city or airport, for example Boston.",
      "examples": [
        "Boston",
        "New York"
      ]
    },
    "destination": {
      "type": "string",
      "title": "To",
      "minLength": 2,
      "description": "Arrival city or airport, for example Lisbon.",
      "examples": [
        "Lisbon",
        "London"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of options, for example 10.",
      "x-fous-developer": true,
      "examples": [
        50,
        5
      ]
    },
    "return_date": {
      "type": "string",
      "format": "date",
      "description": "Return date, for example 2026-11-17. Omit for one-way flights.",
      "examples": [
        "2026-11-19"
      ]
    },
    "nonstop_only": {
      "type": "boolean",
      "default": false,
      "description": "Only nonstop flight options, for example true.",
      "examples": [
        true
      ]
    },
    "departure_date": {
      "type": "string",
      "format": "date",
      "description": "Departure date, for example 2026-11-10.",
      "examples": [
        "2026-11-10",
        "2026-11-12"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "quickest",
      "cabin": "premium_economy",
      "origin": "Boston",
      "destination": "Lisbon",
      "max_results": 50,
      "departure_date": "2026-11-10"
    },
    {
      "origin": "Boston",
      "destination": "Lisbon",
      "departure_date": "2026-11-10"
    },
    {
      "sort": "cheapest",
      "cabin": "business",
      "adults": 2,
      "origin": "New York",
      "destination": "London",
      "max_results": 5,
      "return_date": "2026-11-19",
      "nonstop_only": true,
      "departure_date": "2026-11-12"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `flights` | array |  |  |
| `flights[].seller` | string | `"BusinessClass"` |  |
| `flights[].currency` | string | `"USD"` | Fare currency, USD. |
| `flights[].kayak_url` | string | `"https://www.kayak.com/flights/NYC-LON/2026-11-12/2026-11-19/business/fbf1800f09ab9d6a273a968cfe04ac60c/2adults?viewRank` |  |
| `flights[].return_stops` | any | `0` |  |
| `flights[].outbound_stops` | integer | `0` |  |
| `flights[].return_airlines` | any |  |  |
| `flights[].outbound_airlines` | array |  |  |
| `flights[].return_travel_time` | any | `"8 h 05 min"` |  |
| `flights[].return_arrival_time` | string or null | `"2026-11-19T17:20-05:00"` | Local arrival time with timezone offset. |
| `flights[].outbound_travel_time` | string | `"7 h 00 min"` |  |
| `flights[].return_stop_airports` | any |  |  |
| `flights[].outbound_arrival_time` | string or null | `"2026-11-13T05:50+00:00"` | Local arrival time with timezone offset. |
| `flights[].return_departure_time` | string or null | `"2026-11-19T14:15+00:00"` | Local departure time with timezone offset. |
| `flights[].return_flight_numbers` | any |  |  |
| `flights[].return_origin_airport` | any | `"London Heathrow"` |  |
| `flights[].outbound_stop_airports` | array |  |  |
| `flights[].price_per_traveler_usd` | number | `4278` | Lowest listed price per traveler in USD. |
| `flights[].outbound_departure_time` | string or null | `"2026-11-12T17:50-05:00"` | Local departure time with timezone offset. |
| `flights[].outbound_flight_numbers` | array |  |  |
| `flights[].outbound_origin_airport` | string | `"New York John F Kennedy Intl"` |  |
| `flights[].return_destination_airport` | any | `"New York John F Kennedy Intl"` |  |
| `flights[].return_origin_airport_code` | any | `"LHR"` |  |
| `flights[].return_travel_time_minutes` | any | `485` |  |
| `flights[].outbound_destination_airport` | string | `"London Heathrow"` |  |
| `flights[].outbound_origin_airport_code` | string | `"JFK"` |  |
| `flights[].outbound_travel_time_minutes` | integer | `420` |  |
| `flights[].return_destination_airport_code` | any | `"JFK"` |  |
| `flights[].outbound_destination_airport_code` | string | `"LHR"` |  |

**Example input**

```json
{
  "sort": "cheapest",
  "cabin": "business",
  "adults": 2,
  "origin": "New York",
  "destination": "London",
  "max_results": 5,
  "return_date": "2026-11-19",
  "nonstop_only": true,
  "departure_date": "2026-11-12"
}
```

**Example output**

```json
{
  "flights": [
    {
      "seller": "BusinessClass",
      "currency": "USD",
      "kayak_url": "https://www.kayak.com/flights/NYC-LON/2026-11-12/2026-11-19/business/fbf1800f09ab9d6a273a968cfe04ac60c/2adults?viewRank=1",
      "return_stops": 0,
      "outbound_stops": 0,
      "return_airlines": [
        "British Airways"
      ],
      "outbound_airlines": [
        "British Airways"
      ],
      "return_travel_time": "8 h 05 min",
      "return_arrival_time": "2026-11-19T17:20-05:00",
      "outbound_travel_time": "7 h 00 min",
      "return_stop_airports": [],
      "outbound_arrival_time": "2026-11-13T05:50+00:00",
      "return_departure_time": "2026-11-19T14:15+00:00",
      "return_flight_numbers": [
        "BA 115"
      ],
      "return_origin_airport": "London Heathrow",
      "outbound_stop_airports": [],
      "price_per_traveler_usd": 4278,
      "outbound_departure_time": "2026-11-12T17:50-05:00",
      "outbound_flight_numbers": [
        "BA 180"
      ],
      "outbound_origin_airport": "New York John F Kennedy Intl",
      "return_destination_airport": "New York John F Kennedy Intl",
      "return_origin_airport_code": "LHR",
      "return_travel_time_minutes": 485,
      "outbound_destination_airport": "London Heathrow",
      "outbound_origin_airport_code": "JFK",
      "outbound_travel_time_minutes": 420,
      "return_destination_airport_code": "JFK",
      "outbound_destination_airport_code": "LHR"
    }
  ]
}
```

### Search hotels

Operation `search_hotels`, version 1. 1 credit per call.

Compare Kayak hotel rates across booking sites for a city or neighborhood and stay dates. Rates assume two adults in one room; stay totals are not shown, and results are limited to hotels on the public location page.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"cheapest"` | Order hotels by recommendation, lowest price, or guest score, for example cheapest. |
| `check_in` | string | yes | `"2026-11-12"` | Arrival date, for example 2026-11-10. |
| `location` | string | yes | `"Seattle"` | City or area to search, for example Chicago. |
| `check_out` | string | yes | `"2026-11-14"` | Departure date, for example 2026-11-12. |
| `min_stars` | integer | no | `3` | Minimum hotel class from 1 to 5 stars, for example 4. |
| `max_results` | integer | no | `6` | Maximum hotels to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location",
    "check_in",
    "check_out"
  ],
  "properties": {
    "sort": {
      "enum": [
        "recommended",
        "cheapest",
        "top_rated"
      ],
      "type": "string",
      "default": "recommended",
      "description": "Order hotels by recommendation, lowest price, or guest score, for example cheapest.",
      "examples": [
        "cheapest",
        "top_rated"
      ]
    },
    "check_in": {
      "type": "string",
      "format": "date",
      "description": "Arrival date, for example 2026-11-10.",
      "examples": [
        "2026-11-12",
        "2026-11-10"
      ]
    },
    "location": {
      "type": "string",
      "description": "City or area to search, for example Chicago.",
      "examples": [
        "Seattle",
        "Chicago",
        "Lincoln Park Chicago"
      ]
    },
    "check_out": {
      "type": "string",
      "format": "date",
      "description": "Departure date, for example 2026-11-12.",
      "examples": [
        "2026-11-14",
        "2026-11-12"
      ]
    },
    "min_stars": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Minimum hotel class from 1 to 5 stars, for example 4.",
      "examples": [
        3
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum hotels to return, for example 20.",
      "examples": [
        6,
        5,
        50
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "cheapest",
      "check_in": "2026-11-12",
      "location": "Seattle",
      "check_out": "2026-11-14",
      "min_stars": 3,
      "max_results": 6
    },
    {
      "check_in": "2026-11-10",
      "location": "Chicago",
      "check_out": "2026-11-12"
    },
    {
      "sort": "top_rated",
      "check_in": "2026-11-10",
      "location": "Lincoln Park Chicago",
      "check_out": "2026-11-12",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `hotels` | array |  |  |
| `hotels[].name` | string | `"Ballard's sweet suites"` |  |
| `hotels[].stars` | number or null | `3` |  |
| `hotels[].kayak_link` | string | `"https://www.kayak.com/Seattle-Hotels-Isla-s-sweet-suite---Micro-Studio---91Walkscore.8159812.ksp"` |  |
| `hotels[].guest_rating` | number or null | `8.7` | Guest score out of 10. |
| `hotels[].neighbourhood` | string or null | `"Ballard"` |  |
| `hotels[].kayak_hotel_id` | string or null | `"8159812"` |  |
| `hotels[].lowest_price_site` | string | `"Booking.com"` |  |
| `hotels[].number_of_reviews` | integer or null | `23` |  |
| `hotels[].guest_rating_label` | string or null | `"Very good"` |  |
| `hotels[].total_stay_price_usd` | number or null |  | Full stay price in USD when shown. |
| `hotels[].lowest_nightly_price_usd` | number | `98` | Lowest available USD price per night. |

**Example input**

```json
{
  "sort": "cheapest",
  "check_in": "2026-11-12",
  "location": "Seattle",
  "check_out": "2026-11-14",
  "min_stars": 3,
  "max_results": 6
}
```

**Example output**

```json
{
  "hotels": [
    {
      "name": "Ballard's sweet suites",
      "stars": 3,
      "kayak_link": "https://www.kayak.com/Seattle-Hotels-Isla-s-sweet-suite---Micro-Studio---91Walkscore.8159812.ksp",
      "guest_rating": 8.7,
      "neighbourhood": "Ballard",
      "kayak_hotel_id": "8159812",
      "lowest_price_site": "Booking.com",
      "number_of_reviews": 23,
      "guest_rating_label": "Very good",
      "total_stay_price_usd": null,
      "lowest_nightly_price_usd": 98
    },
    {
      "name": "Coast Seattle Downtown Hotel By Apa",
      "stars": 4,
      "kayak_link": "https://www.kayak.com/Seattle-Hotels-Coast-Seattle-Downtown-Hotel-By-Apa.1071881958.ksp",
      "guest_rating": 8.2,
      "neighbourhood": "Central Business District",
      "kayak_hotel_id": "1071881958",
      "lowest_price_site": "Booking.com",
      "number_of_reviews": 647,
      "guest_rating_label": "Very good",
      "total_stay_price_usd": null,
      "lowest_nightly_price_usd": 103
    },
    {
      "name": "Best Western Plus Pioneer Square Hotel Downtown",
      "stars": 3,
      "kayak_link": "https://www.kayak.com/Seattle-Hotels-Best-Western-Plus-Pioneer-Square-Hotel-Downtown.28809.ksp",
      "guest_rating": 8.4,
      "neighbourhood": "0.5 mifrom Lumen Field, Seattle, United States",
      "kayak_hotel_id": "28809",
      "lowest_price_site": "Priceline",
      "number_of_reviews": 1716,
      "guest_rating_label": "Very good",
      "total_stay_price_usd": null,
      "lowest_nightly_price_usd": 109
    }
  ]
}
```

### Search rental cars

Operation `search_rental_cars`, version 1. 1 credit per call.

Compare current Kayak rental car offers for a pick-up place and dates, sorted by total price. Times are available on the hour or half hour; prices and availability may change at booking.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `car_type` | string | no | `"suv"` | Type of car, e.g. suv. |
| `max_results` | integer | no | `5` | Maximum number of offers, e.g. 20. |
| `pickup_date` | string | yes | `"2026-10-22"` | Pick-up date, e.g. 2026-10-21. |
| `pickup_time` | string | no | `"10:30"` | Pick-up time, HH:MM on the hour or half hour, e.g. 10:30. |
| `dropoff_date` | string | yes | `"2026-10-25"` | Drop-off date, e.g. 2026-10-24. |
| `dropoff_time` | string | no | `"11:00"` | Drop-off time, HH:MM on the hour or half hour, e.g. 11:00. |
| `pickup_location` | string | yes | `"San Francisco airport"` | City or airport where you will collect the car, e.g. Miami airport. |
| `dropoff_location` | string | no |  | City or airport for returning the car; defaults to the pick-up place, e.g. Los Angeles airport. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "pickup_location",
    "pickup_date",
    "dropoff_date"
  ],
  "properties": {
    "car_type": {
      "enum": [
        "any",
        "small",
        "medium",
        "large",
        "suv",
        "van",
        "luxury"
      ],
      "type": "string",
      "default": "any",
      "description": "Type of car, e.g. suv.",
      "examples": [
        "suv"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of offers, e.g. 20.",
      "x-fous-developer": true,
      "examples": [
        5
      ]
    },
    "pickup_date": {
      "type": "string",
      "format": "date",
      "description": "Pick-up date, e.g. 2026-10-21.",
      "examples": [
        "2026-10-22",
        "2026-10-21"
      ]
    },
    "pickup_time": {
      "type": "string",
      "default": "10:00",
      "description": "Pick-up time, HH:MM on the hour or half hour, e.g. 10:30.",
      "examples": [
        "10:30"
      ]
    },
    "dropoff_date": {
      "type": "string",
      "format": "date",
      "description": "Drop-off date, e.g. 2026-10-24.",
      "examples": [
        "2026-10-25",
        "2026-10-24"
      ]
    },
    "dropoff_time": {
      "type": "string",
      "default": "10:00",
      "description": "Drop-off time, HH:MM on the hour or half hour, e.g. 11:00.",
      "examples": [
        "11:00"
      ]
    },
    "pickup_location": {
      "type": "string",
      "description": "City or airport where you will collect the car, e.g. Miami airport.",
      "examples": [
        "San Francisco airport",
        "Miami airport"
      ]
    },
    "dropoff_location": {
      "type": "string",
      "description": "City or airport for returning the car; defaults to the pick-up place, e.g. Los Angeles airport."
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "car_type": "suv",
      "max_results": 5,
      "pickup_date": "2026-10-22",
      "pickup_time": "10:30",
      "dropoff_date": "2026-10-25",
      "dropoff_time": "11:00",
      "pickup_location": "San Francisco airport"
    },
    {
      "pickup_date": "2026-10-21",
      "dropoff_date": "2026-10-24",
      "pickup_location": "Miami airport"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `offers` | array |  |  |
| `offers[].bags` | integer or null | `4` | Bags |
| `offers[].seats` | integer or null | `5` | Seats |
| `offers[].car_type` | string or null | `"Intermediate SUV"` | Car class |
| `offers[].kayak_link` | string | `"https://www.kayak.com/book/car?code=1CDmR01Xd0.DAvHH8nEK9LTYwQ_VUUUMA.4760.a48ab9d7a26ce98e5b6545ec1b774a76&h=54ce7b204` | Kayak offer link |
| `offers[].booking_site` | string or null | `"Europcar"` | Booking provider |
| `offers[].pickup_point` | string or null | `"Shuttle"` | How to collect the car |
| `offers[].transmission` | string or null | `"Automatic"` | Transmission |
| `offers[].example_model` | string or null | `"Kia Sportage or similar"` | Example vehicle model |
| `offers[].rental_company` | string or null | `"Europcar"` | Rental company |
| `offers[].total_price_usd` | number | `143` | Total in USD |
| `offers[].price_per_day_usd` | number or null | `48` | Daily price in USD |

**Example input**

```json
{
  "car_type": "suv",
  "max_results": 5,
  "pickup_date": "2026-10-22",
  "pickup_time": "10:30",
  "dropoff_date": "2026-10-25",
  "dropoff_time": "11:00",
  "pickup_location": "San Francisco airport"
}
```

**Example output**

```json
{
  "offers": [
    {
      "bags": 4,
      "seats": 5,
      "car_type": "Intermediate SUV",
      "kayak_link": "https://www.kayak.com/book/car?code=1CDmR01Xd0.DAvHH8nEK9LTYwQ_VUUUMA.4760.a48ab9d7a26ce98e5b6545ec1b774a76&h=54ce7b20400d&sub=8d6c427a7c962f78078a3d01ca7feabc&viewId=35dca10c-7b55-4a5a-b996-bc10f8c9a…",
      "booking_site": "Europcar",
      "pickup_point": "Shuttle",
      "transmission": "Automatic",
      "example_model": "Kia Sportage or similar",
      "rental_company": "Europcar",
      "total_price_usd": 143,
      "price_per_day_usd": 48
    },
    {
      "bags": 3,
      "seats": 5,
      "car_type": "Compact SUV",
      "kayak_link": "https://www.kayak.com/book/car?code=1CDmR01Xd0.DAvHH8nEK9LTYwQ_VUUUMA.4899.535fd76451d2cecab759060e8e15f861&h=fef322923939&sub=471d72f7eefad476507ce8fed2283e49&viewId=35dca10c-7b55-4a5a-b996-bc10f8c9a…",
      "booking_site": "Europcar",
      "pickup_point": "Shuttle",
      "transmission": "Automatic",
      "example_model": "Jeep Compass or similar",
      "rental_company": "Europcar",
      "total_price_usd": 147,
      "price_per_day_usd": 49
    },
    {
      "bags": 5,
      "seats": 5,
      "car_type": "Standard SUV",
      "kayak_link": "https://www.kayak.com/book/car?code=1CDmR01Xd0.DAvHH8nEK9LTYwQ_VUUUMA.5020.f04e131ce6275c35ec0241110b7485ed&h=85c1733fa3eb&sub=ff32fe8eb378d04987bdce55f56a7557&viewId=35dca10c-7b55-4a5a-b996-bc10f8c9a…",
      "booking_site": "Europcar",
      "pickup_point": "Shuttle",
      "transmission": "Automatic",
      "example_model": "Dodge Journey or similar",
      "rental_company": "Europcar",
      "total_price_usd": 151,
      "price_per_day_usd": 51
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@kayak",
  "visibility": "public",
  "operation": "search_flights",
  "version": 1,
  "input": {
    "sort": "quickest",
    "cabin": "premium_economy",
    "origin": "Boston",
    "destination": "Lisbon",
    "max_results": 50,
    "departure_date": "2026-11-10"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@kayak\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_flights\",\n  \"version\": 1,\n  \"input\": {\n    \"sort\": \"quickest\",\n    \"cabin\": \"premium_economy\",\n    \"origin\": \"Boston\",\n    \"destination\": \"Lisbon\",\n    \"max_results\": 50,\n    \"departure_date\": \"2026-11-10\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@kayak",
  "visibility": "public",
  "operation": "search_flights",
  "version": 1,
  "input": {
    "sort": "quickest",
    "cabin": "premium_economy",
    "origin": "Boston",
    "destination": "Lisbon",
    "max_results": 50,
    "departure_date": "2026-11-10"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@kayak","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare flight fares and itineraries across booking sites
- Find hotel rates and guest scores for a destination
- Compare rental car prices for travel dates
- Review flight stops, airlines, and travel times
- Plan car pick-up and drop-off locations

## FAQ

### Is Fous affiliated with Kayak?

No. Fous is not affiliated with Kayak. This workflow reads the public kayak.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Kayak account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from kayak.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What flight options are available for my route and dates?

Search flights returns itineraries, fares, booking sites, and flight details. Provide an origin, destination, and departure date; add a return date for round trips.

### What are the hotel rates for my stay?

Search hotels returns available nightly rates, property details, and guest scores. Provide a location and check-in and check-out dates.

### What rental cars can I compare for my dates?

Search rental cars returns offers with total and daily prices, car details, and booking providers. Provide a pick-up location and pick-up and drop-off dates.

## Related

- [Priceline API](https://fous.com/workflows/priceline.md): Priceline finds travel deals and returns publicly priced hotel options with ratings, USD prices and cancellation details, plus rental-car offers whose prices may change at checkout.
- [Expedia API](https://fous.com/workflows/expedia.md): Expedia helps travelers find hotels, vacation stays, and travel deals, with hotel prices and flight options for selected destinations and dates; flight listings may be limited.
- [Google Hotels API](https://fous.com/workflows/google-hotels.md): Google Hotels finds stays, guest details and reviews, and compares booking-site totals, cancellation and links for up to six adults; prices and availability can change, and some prices or topic ratings may be unavailable.
- [Trip.com API](https://fous.com/workflows/trip-com.md): Trip.com offers hotel and flight bookings, with hotel listings limited to initial public results and prices and fares subject to change.
- [Google Flights API](https://fous.com/workflows/google-flights.md): Google Flights returns route schedules, public fares, monthly lowest prices, and flight or destination options with times, stops, emissions, and fares that may change.
- [Agoda API](https://fous.com/workflows/agoda.md): Agoda finds stays and room prices for selected dates; displayed prices exclude taxes and fees, and availability, prices, and cancellation terms may change before booking.
- [Booking.com API](https://fous.com/workflows/booking-com.md): Booking.com helps find stays, property details and public guest reviews; prices and cancellation terms depend on selected dates, and displayed prices may exclude taxes and fees.
- [Tripadvisor API](https://fous.com/workflows/tripadvisor.md): Tripadvisor provides traveler-ranked first-page city listings of attractions, restaurants and hotels, plus latest reviews; hotel prices and booking sites depend on supplied stay dates and availability.
- [All Travel workflows](https://fous.com/workflows/category/travel)
