Crawling API / Kayak

Kayak Scraper.
Live fares, fully rendered.

Send any Kayak URL and get the fully rendered HTML back, through residential proxies with anti-bot handling built in.
Turn it into JSON with the generic extractor.

99% success rate140M residential IPs30 geographies
Kayak URLHTML or JSONwww.kayak.com/flights/NYC-LONCrawlbaseRouteRenderExtractRendered HTMLStructured JSONcrawling-apigeneric-extractorkayak.com · JS challenge passed · 200
Live crawl feed · Kayak1.24M req/minStreaming
200www.kayak.com/flights/NYC-LON/2026-07-01SG136ms
200www.kayak.com/flights/ORD-LHR/2026-12-05ES76ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30DE65ms
200www.kayak.com/flights/LAX-CDG/2026-10-10BR216ms
200www.kayak.com/Tokyo-c20105GB147ms
200www.kayak.com/flights/ORD-LHR/2026-12-05ES194ms
200www.kayak.com/cars/Miami/2026-11-01/2026-11-07US113ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30BR211ms
200www.kayak.com/hotels/Paris/2026-08-20/2026-08-24IN186ms
200www.kayak.com/flight-search/MIA-MEX/2026-07-18FR167ms
200www.kayak.com/cars/Miami/2026-11-01/2026-11-07AU101ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30BR80ms
200www.kayak.com/flights/NYC-LON/2026-07-01JP164ms
200www.kayak.com/flights/ORD-LHR/2026-12-05NL103ms
200www.kayak.com/flights/SFO-TYO/2026-08-15BR98ms
200www.kayak.com/exploreSG130ms
200www.kayak.com/flights/ORD-LHR/2026-12-05FR110ms
200www.kayak.com/flights/NYC-LON/2026-07-01IN98ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30JP103ms
200www.kayak.com/hotels/Barcelona/2026-10-03/2026-10-08US109ms
200www.kayak.com/flights/SFO-TYO/2026-08-15CA163ms
200www.kayak.com/flight-search/MIA-MEX/2026-07-18US134ms
200www.kayak.com/Rome-c31013US158ms
200www.kayak.com/flights/NYC-LON/2026-07-01US75ms
301www.kayak.com/flights/LAX-CDG/2026-10-10ES109ms
200www.kayak.com/hotels/Paris/2026-08-20/2026-08-24US113ms
200www.kayak.com/flights/NYC-LON/2026-07-01SG136ms
200www.kayak.com/flights/ORD-LHR/2026-12-05ES76ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30DE65ms
200www.kayak.com/flights/LAX-CDG/2026-10-10BR216ms
200www.kayak.com/Tokyo-c20105GB147ms
200www.kayak.com/flights/ORD-LHR/2026-12-05ES194ms
200www.kayak.com/cars/Miami/2026-11-01/2026-11-07US113ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30BR211ms
200www.kayak.com/hotels/Paris/2026-08-20/2026-08-24IN186ms
200www.kayak.com/flight-search/MIA-MEX/2026-07-18FR167ms
200www.kayak.com/cars/Miami/2026-11-01/2026-11-07AU101ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30BR80ms
200www.kayak.com/flights/NYC-LON/2026-07-01JP164ms
200www.kayak.com/flights/ORD-LHR/2026-12-05NL103ms
200www.kayak.com/flights/SFO-TYO/2026-08-15BR98ms
200www.kayak.com/exploreSG130ms
200www.kayak.com/flights/ORD-LHR/2026-12-05FR110ms
200www.kayak.com/flights/NYC-LON/2026-07-01IN98ms
200www.kayak.com/flight-search/SEA-SIN/2026-08-30JP103ms
200www.kayak.com/hotels/Barcelona/2026-10-03/2026-10-08US109ms
200www.kayak.com/flights/SFO-TYO/2026-08-15CA163ms
200www.kayak.com/flight-search/MIA-MEX/2026-07-18US134ms
200www.kayak.com/Rome-c31013US158ms
200www.kayak.com/flights/NYC-LON/2026-07-01US75ms
301www.kayak.com/flights/LAX-CDG/2026-10-10ES109ms
200www.kayak.com/hotels/Paris/2026-08-20/2026-08-24US113ms
01 Live demo

Any Kayak URL in. HTML or JSON out.

The Crawling API, typed live. Get the rendered HTML, or switch to the generic extractor for JSON. Hover to pause and read.

ready
keys 1-2 switch · click to pauserun your own URL
Run your first request in minutes. Up to 20,000 free requests, no credit card.Start free
02 Capabilities

One API, everything Kayak throws at you.

Kayak polls fares live, streams results in after load and blocks aggressively. The Crawling API renders it in a real browser, reaches it through residential IPs, and hands you clean HTML or JSON.

render

Full JavaScript rendering

A real browser executes the page and waits for live fares to stream in, so flight, hotel and car results are all captured, not just an empty shell.

proxies

140M residential IPs

Every request rotates a residential IP across 30 geographies, so you reach Kayak like a real local traveller and see local currency and fares.

anti-bot

Blocks handled for you

CAPTCHAs, bot walls and rate limits are cleared automatically. Nothing to solve, nothing to maintain.

format

HTML or JSON

Get the full rendered HTML, or addscraper=generic-extractor to return title, content, images and links as structured JSON.

extras

Screenshots and async

The same call can capture a full-page screenshot, or run asynchronously with webhooks and cloud storage.

one token

One API for every site

The Crawling API works on any URL, so the same token covers Kayak and everything else you crawl.See the live demo.

03 Output

Rendered HTML, or clean JSON.

By default you get the rendered HTML. Add thegeneric-extractor and the same page comes back as typed JSON.

{ "title": "NYC to LON Flights | KAYAK", "favicon": "https://www.kayak.com/favicon.ico", "meta": { "description": "Find cheap flights from New York to London on KAYAK.", "keywords": "..." }, "content": "Flight results with airlines, times, stops and prices for the route...", "canonical": "https://www.kayak.com/flights/NYC-LON/2026-07-01", "images": [ "..." ], "og_images": [ "..." ], "links": [ "..." ] }

Page

title · string  canonical · string  favicon · string

Meta

meta.description · string  meta.keywords · string

Content

content · string

Media

images · array  og_images · array

Links

links · array

04 How it works

From URL to data in one call.

Every Kayak request moves through the same path. You send a URL, we operate everything in between.

01

Send the URL

Pass any public Kayak URL with your token: a flight search, hotel or car results, the explore map or a destination page.

02

Rotate a proxy

A residential IP and geography that reach Kayak cleanly, drawn from 140M IPs across 30 regions.

03

Render the page

A real browser loads the page and waits for fares to poll and results to stream in before capture.

04

Clear anti-bot

Kayak's bot checks and rate limits are handled automatically. Nothing to solve, nothing to maintain.

05

Return HTML or JSON

The fully rendered HTML comes back, or typed JSON when you add the generic extractor.

05 Use cases

What teams build on Kayak data.

USE / 01Fares

Fare & price monitoring

Track flight, hotel and car prices across routes and dates to spot drops, surges and the best time to book.

USE / 02Aggregators

Travel aggregators & meta-search

Power comparison sites and apps with live fares, schedules and availability pulled through one API.

USE / 03Market

Market research

Benchmark prices, carriers and routes against competitors to understand the travel market.

USE / 04Routes

Route & demand analysis

Map which routes, airlines and times appear, and how their prices move over time.

USE / 05Revenue

Revenue & pricing teams

Feed live competitor fares into pricing models so rates stay sharp without manual checks.

USE / 06Coverage

Any URL, one API

Crawl flights, hotels, cars, explore and destination pages, plus any other site you need.

06 Notes

Good to know when scraping Kayak.

Prices load after the page

Kayak polls fares live and renders results with JavaScript; the Crawling API runs a real browser and waits for results to stream in, so the captured HTML reflects live prices, not an empty shell.

HTML by default, JSON on request

You get the full rendered HTML. Add scraper=generic-extractor for parsed title, content, images and links, or parse the HTML yourself.

Geography moves the price

Kayak adapts currency and fares by region; geotargeting across 30 locations captures prices as a local traveller would see them.

Built for aggressive blocks

Rate limits and bot walls are cleared automatically across 140M residential IPs, so access stays consistent without managing proxies.

07 Why Crawlbase

Built to crawl Kayak at scale.

The Crawling API runs on the same network that serves 46,000+ paying customers and 70,000+ developers. No proxies to buy, no browsers to run, nothing to patch when Kayak changes.

99%
Average request success rate
140M
Residential IPs, plus 98M datacenter
30
Geographies for accurate local results
20/s
Requests per second by default, more on request

One token, official SDKs for Python, Node and Ruby, and a 99.99% uptime network underneath.

08 FAQ

Kayak scraping questions.

Send the Kayak URL to the Crawlbase Crawling API with your token. Crawlbase rotates a residential proxy, renders the page in a real browser, waits for prices to stream in, clears bot checks, and returns the fully rendered HTML. Add scraper=generic-extractor to get structured JSON instead.
Yes. By default the Crawling API returns rendered HTML; add the generic extractor (scraper=generic-extractor) to receive title, meta, content, images and links as JSON, or parse the HTML yourself.
Yes. Kayak polls fares and renders results with JavaScript after the page loads. A real browser executes the page and waits for results to stream in, so the captured HTML reflects the live prices, not an empty shell.
Crawlbase routes each request through rotating residential IPs across 30 geographies and clears bot checks and rate limits automatically. You do not manage proxies or solve CAPTCHAs, and there is nothing to maintain when Kayak changes its setup.
Yes. Any public Kayak URL works: flight searches, hotel and car results, the explore map and destination pages. The same API works on any other travel site too.
It can. Kayak adapts currency and fares by region, so geotargeting across 30 locations lets you capture prices as a local traveller would see them.
Start free with up to 20,000 requests and no credit card. Paid plans scale with usage, and the same token works across the Crawling API and every Crawlbase scraper.

Start scraping Kayak.
Skip the proxies and blocks.

Free to begin with up to 20,000 requests. One token for the Crawling API and every scraper.