Use case

Proxies for Kayak: Polling a Metasearch That Bans Proxies Early

Proxies for Kayak: how its search polls an internal endpoint in phases, why the country site decides prices and providers, why Kayak bans proxies faster than its siblings, and which residential setup holds.

HProxy Team··10 min read
HProxy.Use case

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

See plans & pricing

Kayak searches hundreds of other travel sites at once and shows the results on more than 60 country sites in 25 or more languages, which makes it two things to a data team: a single page that summarizes an entire market's flight, hotel and car prices, and a page whose contents change depending on which country's version you open. Proxies for Kayak are the answer to the second half. To read what a traveler on kayak.de or kayak.co.uk is shown, the request has to look like it came from Germany or Britain, and to read it on a schedule, it has to come from enough different addresses that Kayak's bot management never sees one machine.

We run a proxy network, and Kayak traffic reaches us from fare trackers, travel-data vendors and metasearch competitors auditing their own coverage. This page is the practical version for Kayak specifically: the partner-only API, the way the site polls for results in phases, why the country site is the price, how Kayak blocks and why it blocks proxies early, which proxy type holds, and how to size it. The sector background is in travel fare aggregation; the closest siblings are proxies for Google Flights and proxies for Skyscanner, and the parent company's hotel site is covered in proxies for Booking.com.

What proxies are best for Kayak?

Rotating residential proxies pinned to the country of the Kayak site you are reading, with a sticky session that covers one whole search (the page load and every poll behind it) and a fresh address for the next search. Kayak checks the address, the consistency of the session and the browser fingerprint, and it bans proxies faster than its sibling aggregators, so datacenter ranges do not survive a schedule. ISP suits a small monitor on a few clean addresses; mobile is the rare tier for the hardest runs.

The partner API, and the public site everyone else reads

Kayak pioneered travel metasearch in 2004 and describes itself as a search engine rather than a seller: it compares airlines, hotels, car rental companies and online travel agencies and sends you to them to book (Kayak, about). It is owned by Booking Holdings, the parent of Booking.com, Agoda and Priceline, and it has become the group's metasearch brand: when Ryanair signed its partnership with Booking Holdings on 26 August 2025, Kayak was one of the four brands named (Booking Holdings).

Kayak's own APIs are inside its affiliate program. Partners apply with a description of their business, Kayak approves, and approved partners get the Affiliate Portal with deep links, search widgets, white-label products and APIs for flights, hotels, cars and packages (Kayak Affiliates); there is no self-serve developer signup. If you send Kayak traffic and can qualify, that is the sanctioned route. Everyone else is reading the public site, and Kayak's terms of use restrict automated access to it. A proxy does not change that. It changes whether the read succeeds and which market it reads.

Kayak, by Kayak's own description

60+
Country sites

each one a market

25+
Site languages
hundreds
Sites searched per query

airlines, hotels, cars, OTAs

Source: kayak.com/about

The search is a poll, and the first answer is often empty

Kayak's results page is not a document you fetch once. The live results only populate after the page runs JavaScript and calls an internal endpoint, https://www.kayak.com/i/api/search/dynamic/flights/poll, and the page keeps polling it as providers answer. ScrapFly's guide to Kayak documents the shape: the first page needs a rendered browser and a wait for the results container, after which pagination is a plain POST to the poll endpoint reusing the same session and the headers Kayak's own browser sent. The very first poll response can land while Kayak's back end is still searching, with status: "first-phase" and filteredCount: 0, and the fix is to retry the same page on the same session up to five times, two seconds apart, rather than record an empty result (ScrapFly, how to scrape Kayak).

How a Kayak search fills in
  1. Page load

    JavaScript, rendered browser

  2. First poll

    first-phase, 0 results

  3. Retry, same session

    2 seconds apart

  4. Providers answer

    results grow

  5. Complete list

    JSON: legs, segments, airlines

Source: ScrapFly, how to scrape Kayak, on the poll endpoint and first-phase responses

Two consequences for proxies follow. The page load and every poll are one session, so they must share one IP; a poll arriving from a different address than the page is the session inconsistency Kayak looks for. And the useful data is structured JSON (legs, segments, airline lookups), which is far more stable to parse than the rendered markup, so once the first page is rendered the rest of a search is cheap requests, not more browser time.

The country site is the market

Kayak's prices, currency and the providers it shows shift with the geographic context of the request (ScrapFly), and on Kayak that context is the country domain: kayak.com, kayak.co.uk, kayak.de and the rest of the 60-plus sites. Airlines and online travel agencies file fares by point of sale, so the same itinerary can price differently for sale in one country than another, and some providers only distribute in some markets at all.

That last point matters more on Kayak than on the airline sites, because Kayak's value is coverage, and coverage arrives market by market. Southwest, which for years sold only on southwest.com, began appearing on Kayak in August 2024 (Thrifty Traveler); Ryanair arrived across the Booking Holdings brands in August 2025. A tracker that reads only kayak.com is reading one market's providers and one market's prices. To say what a German traveler sees, read kayak.de from a German residential exit, with the currency the site chooses for that visitor.

How Kayak blocks you

Kayak's detection is layered: IP reputation checks, session consistency validation, browser fingerprint analysis, and aggressive proxy bans at volume, and community reports say it bans proxies harder than sibling aggregators (ScrapFly). In practice that means three things get you cut off. A datacenter or already-shared address, which fails the reputation check on arrival. A session whose page load and polls come from different addresses or carry different headers, which fails consistency. And a client whose TLS handshake and header order do not match the user agent it claims, which fails the fingerprint. Only the first of those is about the proxy, but the proxy setup (sticky per search, rotating between) decides the second.

Which proxy type fits: residential, datacenter, ISP, or mobile

Datacenter proxies fail Kayak's reputation check first and get banned at volume fastest. Use them to develop your parser against saved responses, not to run.

Rotating residential proxies are home connections from a large pool, pinned to the country site's market, held sticky for one search and rotated for the next. They pass the reputation check, they place the search in the right market, and the pool absorbs a schedule no single address could carry. This is the setup for Kayak (background in what is a residential proxy).

ISP proxies are static residential addresses. Kayak searches need no account, so ISP fits only a small, slow monitor on a few addresses you keep clean and pace carefully.

Mobile proxies are carrier addresses shared by many phones, the tier for runs that keep getting flagged. Most Kayak trackers never reach for them.

Kayak jobProxy typeWhy
Fare and hotel tracking across datesRotating residential, sticky per searchThe page load and polls must share an IP; the pool spreads searches
Per-market reads (kayak.de, kayak.co.uk)Rotating residential in that countryPrices, currency and providers follow the market
Small daily monitorISP (static residential)Few addresses, kept slow and clean
Runs that keep drawing bansMobileCarrier ranges are shared by real users
Parser developmentDatacenter or free listSaved responses, nothing at stake

Free versus paid for Kayak

A free proxy is a shared datacenter address, the exact profile Kayak's reputation check rejects, and it will rarely survive the ten to thirty seconds a search session lasts. For a one-off manual look at another country site, our free proxy list and proxy checker are the free route, and they are also right for testing your setup before you pay for bandwidth. For anything scheduled, paid residential is the floor; ours starts at $0.44/GB pay-as-you-go with no KYC, so the first test run costs cents rather than a subscription.

Setting it up

Render the first page in a real browser behind a residential exit, wait for the results container, and capture the session and headers Kayak's own page sends to the poll endpoint. Our guides for Playwright and Puppeteer cover the proxy wiring. From there, page through the poll endpoint with plain POSTs on the same session, and retry a first-phase response instead of storing it.

Pin the market three ways: the country domain, the exit country and the currency the site selects for that visitor. A German site read from a Brazilian exit is the kind of inconsistency the session check exists to catch, and it returns a market nobody lives in.

Hold the session for the search, then drop it with the IP. A sticky window of a minute covers the page load and the polls. The next search gets a fresh residential address and a fresh session, so no address accumulates a monitor's history. The general split is explained in rotating vs static residential proxies.

Trim the render. The first page of a search is the expensive part: block images and fonts, keep the scripts the results need, and let the JSON polls carry the rest. That is where most of the bandwidth goes and where most of the savings are.

How many IPs, and how fast

The unit is a search session: one rendered page plus its polls, on one address.

Sizing (rotating residential, one refresh cycle):
  sessions/cycle = routes x dates x country sites
                 = 40 routes x 30 dates x 3 sites = 3,600 sessions
  per session    = 1 rendered page (~1 MB, trim it) + a few JSON polls
  per address    = a handful of sessions, then rotate

Bandwidth is the bill; the pool handles the spreading.

Refresh near-term dates daily and far dates weekly and the count halves. Our pricing is per gigabyte with no expiry, so a tracker that pauses for a season pays nothing while it waits.

Staying unblocked on Kayak

  • One address per search, start to finish. Page load and polls on one IP; the next search on another. Session consistency is a check Kayak runs by name.
  • Never run from a datacenter range. Kayak bans proxies early, and shared datacenter space arrives already burned.
  • Match domain, exit and currency. A consistent visitor on a consistent market.
  • Retry first-phase, do not record it. An empty first poll is a timing artefact, not a result.
  • Keep the fingerprint honest. Real browser for the render, and the captured headers for the polls, so the TLS fingerprint and header order match the user agent.
  • Pace and jitter. Spread markets across the day and never on the clock; the full checklist is in avoiding IP bans while scraping.

The limits worth knowing

Proxies give a Kayak search the right address in the right market and spread a schedule across enough addresses that Kayak sees travelers rather than a tracker. They do not fix a poll read too early, a session split across addresses, or a client whose handshake gives it away, and they do not change Kayak's terms of use or stand in for the partner API if you can qualify for it.

For a manual look at another country site, start free with our free proxy list and proxy checker. For a tracker, rotating residential at $0.44/GB pay-as-you-go, sticky for each search and pinned to each market, is what keeps Kayak readable.

Sources

Frequently asked questions

Does Kayak have a public API?
No. Kayak's search and data APIs live inside its affiliate program, which is partner-only: you apply, Kayak reviews the business, and approved partners get credentials and an account manager. There is no self-serve developer signup. Without a partnership, the data comes from the public site, which is what this page covers and what Kayak's terms of use restrict.
What kind of proxy is best for Kayak?
Rotating residential proxies pinned to the country of the Kayak site you are reading, with a sticky session that lasts the whole search. Kayak's results arrive by polling an internal endpoint in phases over a single session, so the page load and every poll must come from one address, and a fresh address should carry the next search. Kayak checks IP reputation, session consistency and browser fingerprint, and community reports say it bans proxies harder than sibling aggregators, so datacenter ranges do not last.
Why do Kayak prices differ between kayak.com and kayak.co.uk?
Because each country site is a market. Kayak's prices, currency and the set of providers it shows shift with the geographic context of the request, and the country domain is that context. Airlines and agencies file fares by point of sale, so a route can price differently on the German site than on the American one, and some providers only appear on some sites. Reading a market means reading that market's site from an IP in that market.
Why does my Kayak scraper return zero flights?
Because you read the poll too early. The first poll response can arrive while Kayak's back end is still searching, with a first-phase status and a filtered count of zero, even though the request succeeded. Retrying the same page on the same session a few times, two seconds apart, is the fix. Treating the empty first phase as a real result is the most common Kayak scraping bug.
How many proxies do I need to scrape Kayak?
Size from search sessions, not routes: routes times dates times country sites, with each session holding one IP for the page load and its polls. Kayak's per-address tolerance is low, so keep each IP to a few searches and let a rotating residential pool spread the rest. Bandwidth is the real cost, because the first page of every search is a full JavaScript render; block images and fonts.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup