Kayak Scraper avatar

Kayak Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Kayak Scraper

Kayak Scraper

Get structured flight data from Kayak.com including prices, baggage fees, and booking links. Want to avoid OTAs? Filter for airline-only tickets and book direct.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Richard

Richard

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

5

Monthly active users

16 days ago

Last modified

Share

✈️ Kayak Flights Scraper

Scrapes flight search results from Kayak.com and returns structured booking data including prices, baggage fees, segment details, and direct booking links.

🎫 Unlike most flight scrapers, this actor shows airline-direct booking options — tickets sold directly by the airline rather than through OTAs like Expedia, Orbitz, or CheapOair. Booking direct means no third-party fees, easier rebooking, and direct access to airline customer support. Toggle this with the airline_direct flag.

Input

Required fields

FieldTypeDescription
originstring🛫 3-letter IATA departure airport code (e.g. JFK)
destinationstring🛬 3-letter IATA arrival airport code (e.g. LAX)
departure_datestring📅 Departure date in YYYY-MM-DD format

Optional fields

FieldTypeDefaultDescription
return_datestring📅 Return date (YYYY-MM-DD). Leave empty for one-way.
adultsinteger1🧑 Number of adult passengers (age 12+)
childreninteger0👦 Number of child passengers (age 2–11)
infantsinteger0👶 Number of infant passengers (under 2, lap seat)
seatstringeconomy💺 Cabin class: economy, premium economy, business, first
outbound_flexstringexact🔄 Date flexibility for the outbound leg: exact, ±1, ±2, ±3, +1, -1
return_flexstringexact🔄 Date flexibility for the return leg (round trips only): same options as outbound_flex
stopsinteger🛑 Maximum number of stops: 0 = nonstop only, 1 = up to 1 stop, 2 = 2+ stops included. Leave empty for all.
airlinesarray✈️ Filter by airline IATA codes (e.g. ["AA", "DL", "B6"]). Leave empty for all airlines.
localestringen-US🌍 Kayak regional site to search on. Determines language and default currency. ⚠️ Must match the departure country — e.g. use en-US for flights departing from the US, en-GB for UK departures. Using a locale that doesn't match the departure country will result in errors.
currencystringUSD💰 Currency for prices (ISO 4217 code, e.g. EUR, GBP, CAD)
airline_directbooleanfalse🎫 When true, returns only tickets sold directly by the airline. Filters out OTAs such as Expedia, Orbitz, and CheapOair.
debugbooleanfalse🐛 When true, runs the browser in visible (headed) mode for debugging.

Sample input

{
"origin": "JFK",
"destination": "LAX",
"departure_date": "2026-06-15",
"return_date": "2026-06-22",
"adults": 1,
"seat": "economy",
"outbound_flex": "±1",
"return_flex": "exact",
"locale": "en-US",
"currency": "USD",
"airline_direct": true
}

Output

Each item in the dataset represents one booking option for a flight itinerary.

Output fields

FieldTypeDescription
pricenumberDisplayed ticket price
currencystringCurrency code (e.g. USD)
pricing.basenumberBase fare before taxes/fees
pricing.totalnumberTotal price including all fees
providerstringBooking provider IATA code (e.g. AA)
providerNamestringBooking provider full name (e.g. American Airlines)
isAirlineDirectbooleantrue if the ticket is sold directly by the airline
bookingUrlstringDirect link to complete the booking on Kayak
baggage.carryOn.includedbooleanWhether carry-on is included in the fare
baggage.carryOn.feenumber|nullCarry-on fee if not included
baggage.checked.feenumber|nullFirst checked bag fee (null if included or unavailable)
legsarrayOne entry per flight leg (outbound + return for round trips)
legs[].departureTimestringISO 8601 departure datetime
legs[].arrivalTimestringISO 8601 arrival datetime
legs[].durationMinutesnumberTotal leg duration in minutes
legs[].segmentsarrayIndividual flight segments within the leg (for connections)
legs[].segments[].airlinestringOperating airline IATA code
legs[].segments[].airlineNamestringOperating airline full name
legs[].segments[].flightNumberstringFlight number
legs[].segments[].originstringDeparture airport IATA code
legs[].segments[].destinationstringArrival airport IATA code
legs[].segments[].departureTimestringISO 8601 segment departure datetime
legs[].segments[].arrivalTimestringISO 8601 segment arrival datetime
legs[].segments[].durationMinutesnumberSegment duration in minutes
legs[].segments[].aircraftstringAircraft type (e.g. Airbus A321neo)
legs[].segments[].cabinstringCabin class name (e.g. Economy)
legs[].segments[].cabinCodestringCabin class code (e.g. e)
legs[].segments[].amenitiesarrayList of { icon, message } amenity items

Sample output item

{
"price": 422,
"currency": "USD",
"pricing": {
"base": 422,
"total": 422
},
"provider": "B6",
"providerName": "JetBlue Airways",
"isAirlineDirect": true,
"bookingUrl": "https://www.kayak.com/book/flight?code=...",
"baggage": {
"carryOn": { "included": true, "fee": null },
"checked": { "fee": 70 }
},
"legs": [
{
"departureTime": "2026-04-13T09:59:00",
"arrivalTime": "2026-04-13T13:15:00",
"durationMinutes": 376,
"segments": [
{
"airline": "B6",
"airlineName": "JetBlue Airways",
"flightNumber": "223",
"origin": "JFK",
"destination": "LAX",
"departureTime": "2026-04-13T09:59:00",
"arrivalTime": "2026-04-13T13:15:00",
"durationMinutes": 376,
"aircraft": "Airbus A321neo",
"cabin": "Economy",
"cabinCode": "e",
"amenities": [
{ "icon": "WIFI", "message": "Wi-Fi available" },
{ "icon": "ENTERTAINMENT", "message": "Live TV available" },
{ "icon": "TIMER", "message": "Flight stats: 3% delayed 30+ mins, 3% canceled" }
]
}
]
},
{
"departureTime": "2026-04-20T15:30:00",
"arrivalTime": "2026-04-20T23:56:00",
"durationMinutes": 326,
"segments": [...]
}
]
}

Notes

  • The page load often triggers a retry due to Kayak's bot protection — this is expected and handled automatically.
  • Prices reflect what Kayak displays at the time of the run and may differ from final checkout prices.