Kayak is the travel site every tutorial tells you to open in Selenium, and it is the one that needs a browser least. On 28 September 2026 we fetched the home page through a United States residential exit as a plain HTTP client and got 2,451 words, an h1, a self-referencing canonical, a robots meta of index,follow and three JSON-LD blocks: Website, Organization and a FAQPage with four questions. Rendering the same URL took 40.7 seconds, added 758,775 bytes, and returned 2,455 words. The setting for Kayak proxies is residential, engine: tls, country pinned to the market: no browser, and 46% fewer bytes for the same page.
The keyword is half boats, and the other half wants Selenium
Google autocomplete cannot tell the site from the vessel. "Kayak proxies" completes to kayak problem, prototype, propellers; "kayak scraper" completes to hull care and one real query, "kayak scraping"; "proxies for kayak" and "kayak flight data api" return nothing. The SERP for "kayak scraping" is a mix of sanding tutorials and scraping vendors, with no People Also Ask, no AI Overview and no related searches: a thin term with a clear buyer underneath it.
The two guides that rank open the same way. One recommends Selenium because Kayak often uses JavaScript for data loading; the other opens a browser before it fetches anything. Neither measures the HTML, which is the entire finding of this post: the HTML is the page. If you copy those guides, you will pay for a browser to receive four extra words.
2,451 words over plain HTTP, and the JSON-LD is in the source
We audited kayak.com/ from a United States residential exit twice, as a pure HTTP client and fully rendered, and weighed both responses.
| Fetch | Exit | Bytes | Seconds | Words | h1 | JSON-LD |
|---|---|---|---|---|---|---|
| Plain HTTP | United States | 1,656,272 | 8.7 | 2,451 | Search Flights, Hotels & Rental Cars | Website, Organization, FAQPage |
| Rendered | United States | 2,415,047 | 40.7 | 2,455 | Search Flights, Hotels & Rental Cars | Website, Organization, FAQPage |
| Plain HTTP | United Kingdom | n/a | n/a | 2,124 | Search Flights, Hotels & Hire Cars | Website, Organization, FAQPage |
| Rendered | United Kingdom | n/a | n/a | 2,367 | Search Flights, Hotels & Hire Cars | Website, Organization, FAQPage |
The seo_audit diff for the United States pair is empty on every axis: title unchanged, description unchanged, no h1 only in the render, no canonical missing without JavaScript, no content only in JavaScript. The four words the browser added are the difference between a server-rendered page and the same page after its scripts adjusted a label. That is not a data source; that is noise.
The structured data is where Kayak is unusually generous. We pulled every script type="application/ld+json" from the plain HTML with a CSS extraction and got three blocks. The Website block names the site and its URL. The Organization block carries nine sameAs links, from Facebook to Wikipedia to Crunchbase. The FAQPage block holds four questions and their full answers in the source: how to find deals on Kayak, what makes the app useful, how Trips manages bookings, and what Price Alerts are. If you want the site's own description of its price alert feature, it is 1,656,272 bytes away over plain HTTP and you do not need to render a thing. The three h2 headings are in the HTML too.
The exit country changes the domain, the h1 and 327 words
We repeated the audit from a United Kingdom residential exit, no Accept-Language header, nothing else changed. The request to kayak.com/ landed on kayak.co.uk/?ispredir=true, the canonical became kayak.co.uk/, the h1 became "Search Flights, Hotels & Hire Cars" and the plain HTTP word count dropped from 2,451 to 2,124. The title changed from "Rental Cars" to "Car Hire".
Kayak routes by exit IP to a country storefront, and that storefront is a different page: different copy, different currency in the search widget, a different set of promoted routes. Nothing in the geo path is a wall; it is localisation, and it is the reason to pin the exit. A price tracker for the United States that rotates through a mixed pool will silently collect kayak.co.uk pages in pounds and kayak.com pages in dollars and average them. Pin country: us and the h1 stays "Rental Cars" on every request.
robots.txt is rebuilt every night, and the terms are one sentence
kayak.com/robots.txt is 42,050 bytes and 1,271 lines, and it tells you when it was made: the header reads "Build version: R836d" and "Generated on: Mon Sep 28 01:00:00 EDT 2026", the morning of our measurement. Twenty-three user-agent blocks follow. The wildcard gets 23 allow lines and 106 disallow lines, and the allow list is unusually specific: /api/search/V8/hotel/, /i/api/search/v1/hotels/poll, /flights/$, /hotels/$, /hotels/sitemap. Eight agents get a bare Disallow: /, all of them ad-verification and semantic-analysis bots. ChatGPT-User has its own block with 19 disallow lines. Because the file is regenerated nightly, cache it per day, not per deploy, and read the build version before you trust yesterday's copy.
The Terms of Use are shorter and clearer than most. Section 4 asks you not to scrape, harvest, deep-link to, train AI on, or otherwise use automated tools on the site without written permission, and not to bypass any security feature, access restriction or robot exclusion header. That is one line and it is the one that gets cited: reading Kayak with a script is something its terms prohibit without permission. The permitted route is the KAYAK Affiliate Network, which offers deeplinks, widgets, a whitelabel and an API to approved partners and pays on clicks and bookings.
What a gigabyte buys on Kayak
Every number above came through residential proxies on the Basic line at $0.80/GB. Counting a gigabyte as 10^9 bytes:
| Request | Bytes | Requests per GB | Cost per request | Words |
|---|---|---|---|---|
| Home page, plain HTTP | 1,656,272 | 603 | $0.00133 | 2,451 |
| Home page, rendered | 2,415,047 | 414 | $0.00193 | 2,455 |
Kayak pages are heavy either way; 1.66 MB for a home page is the price of a metasearch site that inlines its scripts. The render adds 46% to that and four words, and it adds 32 seconds. Over a thousand pages, plain HTTP is $1.33 and the browser is $1.93 plus nine hours of browser time. The decision is not close. Mobile exits at $2.30/GB would cost $3.81 per thousand plain fetches for a site that never scored the address in four fetches; keep the cheap line. Our note on how much proxy data you need shows how to turn bytes per request into a monthly plan, and how to rotate proxies in Python shows the country-pinned session that keeps the storefront fixed.
When you want fares, not the home page
The home page is a shell around a search, and the search results are what most readers actually want. A results URL on Kayak is a rendered, polled experience: the page loads, then it asks its own API repeatedly while fares arrive. That is the one place a browser is legitimate, and the web scraping API with render and a wait for the results container handles it, at the rendered cost above. It is also where the terms and the robots file both point elsewhere: the search endpoints are disallowed for the wildcard and the terms exclude automated use without permission.
For fare monitoring that does not depend on one metasearch site's markup, we ran the Google Flights collector once on 28 September 2026 for JFK to LAX on 20 October, currency USD, exit country United States. It returned 15 itineraries in 19.4 seconds: prices from $204 to $294, 14 nonstop and one with a stop, four airlines, each row with departure and arrival time, duration and a CO2 estimate, at $0.003 per itinerary. The same route pair, the same date, no page to parse.
The setting that works on Kayak
Network: residential, Basic line at $0.80/GB; nothing in four fetches from two countries scored the address. Fetch mode: engine: tls, plain HTTP, which returns 2,451 words, the h1, the canonical and all three JSON-LD blocks for 1,656,272 bytes; the browser returns 2,455 words for 2,415,047 bytes and 40.7 seconds, so leave it off. Country to pin: the storefront you are measuring, because a United Kingdom exit is redirected to kayak.co.uk and the page drops to 2,124 words with a different h1 and currency. When the proxy is not enough: for live fares, the google_flights collector, which returned 15 itineraries for JFK to LAX in 19.4 seconds, or the web scraping API with render for a Kayak results page, and every account gets $2 of free API usage per month.
Among the travel metasearch sites we measured, Kayak is the readable one. Skyscanner hands a plain client zero words in every country, and Expedia hands it 72. Kayak hands it 2,451 and a FAQ, and asks only that you do not open a browser you do not need.