Kayak Flights Scraper avatar

Kayak Flights Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Kayak Flights Scraper

Kayak Flights Scraper

Extract real-time flight prices, routes & availability from Kayak with precision. Monitor airfare trends, competitive pricing & travel insights effortlessly. Perfect for travel agencies, price comparison platforms & market research. Reliable flight data scraping at scale.

Pricing

from $0.80 / 1,000 results

Rating

5.0

(5)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

5

Bookmarked

74

Total users

22

Monthly active users

3 days ago

Last modified

Share

What does Kayak Flights Scraper do?

Kayak Flights Scraper collects structured flight offers from Kayak for any route and travel date. Paste a Kayak flight search URL, or enter the origin, destination, dates, passengers, sort order, and filters in the input form. The dataset includes prices, currencies, booking providers, airline details, timings, durations, stops, and booking links.

Use the results for airfare research, price monitoring, route analysis, travel planning, fare comparison, and applications that need consistent flight offer data.

Why use Kayak Flights Scraper?

  • URL or form-based searches - Use a complete Kayak URL or search by airport and city codes without constructing a URL yourself.
  • Useful fare details - Collect fare amounts, currencies, localized price text, providers, booking links, and Kayak share links.
  • Itinerary-level data - Analyze outbound and inbound departure times, arrival times, durations, stop counts, airline names, and airline codes.
  • Practical search controls - Sort by best result, price, duration, departure, or arrival. Filter by stops, cabin class, and airline codes.
  • Passenger-aware searches - Include adults, children, and infants so the returned fares match the selected traveler mix.
  • Automation-ready output - Export datasets to JSON, CSV, Excel, or XML, or connect them to spreadsheets, webhooks, and other workflows.

What data can you extract from Kayak?

FieldDescription
price_amountPrimary fare amount for the itinerary
currencyFare currency code such as USD or EUR
price_textLocalized fare text
providerPrimary booking provider
booking_urlDirect booking link for the fare
airlinesAirline names operating the itinerary
airline_codesAirline codes in the itinerary
total_stopsTotal stop count across all legs
total_duration_minutesTotal itinerary duration in minutes
outbound_departureOutbound leg departure datetime
outbound_arrivalOutbound leg arrival datetime
inbound_departureInbound leg departure datetime for round trips
inbound_arrivalInbound leg arrival datetime for round trips
shareable_urlKayak share link for the searched trip

How to use Kayak Flights Scraper

  1. Open the Actor on Apify Store.
  2. Choose one search method:
    • Paste a complete Kayak flight URL in startUrl.
    • Leave startUrl empty and enter origin, destination, and departDate.
  3. Add returnDate for a round-trip search, or select oneway in tripType.
  4. Optionally choose passengers, sorting, stops, cabin class, and airlines.
  5. Set results_wanted and max_pages.
  6. Run the Actor and open the dataset when it finishes.

If both a valid startUrl and all three route fields are supplied, the origin, destination, and departDate values are used for the route. URL sort and filter parameters are read when the corresponding form option is not provided.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNoKayak example URLComplete Kayak flight search URL. Route details and supported sort or fs options can be read from the URL.
originStringNo-Three-letter origin airport or city code, such as WAS or JFK. Required with destination and departDate when no URL is used.
destinationStringNo-Three-letter destination airport or city code, such as LON or LAX.
departDateStringNo-Outbound date in YYYY-MM-DD format.
returnDateStringNo-Return date in YYYY-MM-DD format. Leave empty for a one-way search.
tripTypeSelectNoroundtripSelect roundtrip or oneway. A URL without a return date is treated as one-way.
adultsIntegerNo1Number of adult passengers, from 1 to 9.
childrenIntegerNo0Number of child passengers, from 0 to 8.
infantsIntegerNo0Number of infant passengers, from 0 to 8.
sortSelectNobestflight_abestflight_a, price_a, duration_a, departure_a, or arrival_a.
stopsIntegerNo-Use 0 for nonstop, 1 for up to one stop, or 2 for two or more stops.
cabinClassSelectNo-economy, premium_economy, business, or first.
airlinesStringNo-Comma-separated airline IATA codes, such as UA,BA or AA.
results_wantedIntegerNo20Maximum number of flight results to save, up to 500.
max_pagesIntegerNo3Maximum number of result pages to poll, up to 20.

URL filter parameters

Kayak URLs can also carry search settings. For example, ?sort=price_a&fs=stops=0 requests price sorting and nonstop results. The Actor reads the route and supported URL settings, then applies them to the search. Form values take precedence over matching URL settings when they are supplied.

Output Data

Each dataset item represents one flight itinerary. Empty values are omitted when Kayak does not provide them.

FieldTypeDescription
rankIntegerPosition in the collected results
search_idStringKayak search session identifier
search_urlStringKayak search URL used for the result set
routeStringRoute in ORIGIN-DESTINATION format
originStringOrigin airport or city code
destinationStringDestination airport or city code
depart_dateStringOutbound travel date
return_dateStringReturn travel date for round trips
trip_typeStringroundtrip or oneway
result_idStringKayak result identifier
result_typeStringResult category
is_bestBooleanWhether Kayak marks the result as best
is_cheapestBooleanWhether Kayak marks the result as cheapest
providerStringPrimary booking provider
booking_urlStringPrimary booking link
price_amountNumberPrimary fare amount
currencyStringFare currency code
price_textStringLocalized fare value
total_duration_minutesIntegerCombined itinerary duration
total_stopsIntegerCombined stop count
airlinesStringAirline names across the itinerary
airline_codesStringAirline codes across the itinerary
outbound_departureStringOutbound departure datetime
outbound_arrivalStringOutbound arrival datetime
outbound_duration_minutesIntegerOutbound duration in minutes
outbound_stopsIntegerOutbound stop count
outbound_airlinesStringOutbound airline names
inbound_departureStringInbound departure datetime
inbound_arrivalStringInbound arrival datetime
inbound_duration_minutesIntegerInbound duration in minutes
inbound_stopsIntegerInbound stop count
inbound_airlinesStringInbound airline names
shareable_urlStringKayak share link

Usage Examples

Basic URL input

Use a complete Kayak URL when you already have a search configured.

{
"startUrl": "https://www.kayak.com/flights/WAS-LON/2026-09-10/2026-09-17",
"results_wanted": 20,
"max_pages": 2
}

Search by route and dates

Leave out startUrl and provide the route fields directly.

{
"origin": "JFK",
"destination": "LAX",
"departDate": "2026-10-10",
"returnDate": "2026-10-17",
"tripType": "roundtrip",
"adults": 1,
"results_wanted": 20
}

Use sorting, stops, cabin class, and airline codes to narrow the returned itineraries.

{
"origin": "WAS",
"destination": "LON",
"departDate": "2026-09-15",
"returnDate": "2026-09-22",
"sort": "price_a",
"stops": 0,
"cabinClass": "economy",
"airlines": "BA,UA",
"results_wanted": 20
}

One-way search with additional passengers

Select oneway and include child or infant passengers when needed.

{
"origin": "LAX",
"destination": "NRT",
"departDate": "2026-11-05",
"tripType": "oneway",
"adults": 2,
"children": 1,
"infants": 1,
"sort": "duration_a",
"results_wanted": 20
}

Sample Output

{
"rank": 1,
"search_id": "rGFiSVg6Qs",
"search_url": "https://www.kayak.com/flights/WAS-LON/2026-09-10/2026-09-17?sort=price_a&fs=stops%3D0",
"route": "WAS-LON",
"origin": "WAS",
"destination": "LON",
"depart_date": "2026-09-10",
"return_date": "2026-09-17",
"trip_type": "roundtrip",
"result_id": "e636f94b94bef808289ae35ac0031788",
"result_type": "core",
"is_best": false,
"is_cheapest": true,
"provider": "Gotogate",
"booking_url": "https://www.kayak.com/book/flight?...",
"price_amount": 774,
"currency": "USD",
"price_text": "$774",
"total_duration_minutes": 2580,
"total_stops": 2,
"airlines": "Icelandair",
"airline_codes": "FI",
"outbound_departure": "2026-09-10T20:30:00",
"outbound_arrival": "2026-09-11T11:45:00",
"outbound_duration_minutes": 615,
"outbound_stops": 1,
"outbound_airlines": "Icelandair",
"inbound_departure": "2026-09-17T15:40:00",
"inbound_arrival": "2026-09-18T19:25:00",
"inbound_duration_minutes": 1965,
"inbound_stops": 1,
"inbound_airlines": "Icelandair",
"shareable_url": "https://www.kayak.com/flights/WAS-LON/2026-09-10/2026-09-17"
}

Tips for Best Results

  • Use valid airport or metro codes in IATA format. Kayak recognizes city codes such as WAS as well as airport codes such as DCA.

  • Use future dates. Dates in the past or outside Kayak's search window are adjusted to a safe range, and the adjustment is reported in the run log.

  • Start with results_wanted: 20 and max_pages: 2 to confirm the route before a larger run.

  • Use price_a for low-fare research, duration_a for shorter itineraries, or bestflight_a for Kayak's default ranking.

  • Use stops: 0 for nonstop searches. Availability may be lower than the requested result limit.

  • Use airline IATA codes in airlines, separated by commas. If a route does not offer the selected carriers, Kayak may return fewer results.

  • Some fare, provider, or inbound-leg fields may be absent because availability varies by route, date, passenger mix, and booking provider.

Integrations and Export Formats

  • Google Sheets - Send flight data to spreadsheets for fare tracking.
  • Webhooks - Trigger downstream workflows after a run completes.
  • Make or Zapier - Connect flight datasets to no-code automations.
  • Apify API - Start runs and read datasets programmatically.
  • JSON - Use results in applications and data pipelines.
  • CSV or Excel - Analyze routes and fares in spreadsheet tools.
  • XML - Send results to systems that require XML feeds.

Frequently Asked Questions

Can I use a Kayak URL instead of filling in route fields?

Yes. Provide a full flight URL in startUrl. The Actor reads the route and dates from the URL, and also recognizes supported sort and fs query parameters.

Can I search without a URL?

Yes. Leave startUrl empty and provide origin, destination, and departDate. Add returnDate for a round trip, or select oneway for a one-way search.

Which sorting options are supported?

The supported values are bestflight_a, price_a, duration_a, departure_a, and arrival_a. They represent best result, lowest price, shortest duration, earliest departure, and earliest arrival.

Can I filter for nonstop flights?

Yes. Set stops to 0. Set it to 1 for up to one stop or 2 for two or more stops. A restrictive filter can produce fewer records than results_wanted.

Why did I receive fewer results than requested?

Flight availability depends on the route, dates, passenger mix, selected filters, and live provider inventory. Increase max_pages, remove restrictive filters, or try nearby dates.

Can I run this Actor on a schedule?

Yes. Schedule hourly, daily, weekly, or custom runs in Apify Console for fare monitoring and route tracking.

Are empty fields included in the dataset?

No. Empty values are removed from each record. Inbound fields are normally absent for one-way searches, and a provider may not publish every fare detail.

Public data collection may be subject to applicable laws and Kayak's terms of service. You are responsible for using the data lawfully, respecting website rules, and applying reasonable request volumes.

Support

For issues, feature requests, or custom data collection needs, use the Issues tab on the Actor page. Include the run ID, input mode, route, and a short description of the unexpected result.

This Actor is designed for legitimate collection of publicly available Kayak flight information. Users are responsible for complying with Kayak's terms of service, applicable laws, privacy rules, and any restrictions that apply to their intended use.