Skyscanner is the metasearch site where no fetch mode returns a fare, because no fetch mode returns a word. On 28 September 2026 we fetched the home page through a United Kingdom residential exit: a plain HTTP client received a title, a description, a canonical and one WebSite JSON-LD block, and zero words of body text, for 265,657 bytes. A full browser render received zero fare words for 408,075 bytes. From a United States exit the same URL redirected to skyscanner.com and returned zero words again. The setting for Skyscanner proxies is therefore not a proxy fetch at all. It is the Google Flights collector, which returned 15 London Heathrow to New York JFK itineraries, priced in pounds, in 33.7 seconds the same afternoon.
The keyword wants an API, and Skyscanner sells one
"Skyscanner proxies" returns nothing in Google autocomplete for the United Kingdom, and neither does "proxies for skyscanner". The completions that exist are "skyscanner scraper" followed by github, python, api and data scraper, and the buyer phrasing: "skyscanner flights live prices api", "skyscanner api python", "skyscanner price data", "skyscanner price history". The demand is for fares as data.
The first page for "skyscanner scraper api" is four scraping-API vendors, a hosted actor, a no-code robot, a personal GitHub CLI marked for personal use, and, at position nine, Skyscanner's own partner page inviting you to apply for its Flights API. The best tutorial on the page is 4,711 words long and honest about the mechanics: the prices never arrive in the first HTML response, so it renders the search, waits for it to settle and captures the search XHR instead of parsing cards. Our measurement confirms the first half. Our answer to the second half is shorter.
Zero words with JavaScript, zero without, in two countries
We audited skyscanner.net/ from a United Kingdom residential exit as a pure HTTP client and fully rendered, then repeated both from the United States.
| Fetch | Exit | Bytes | Seconds | Words | Title | Canonical | JSON-LD |
|---|---|---|---|---|---|---|---|
| Plain HTTP | United Kingdom | 265,657 | 4.2 | 0 | Compare Cheap Flights & Book Airline Tickets to Everywhere | skyscanner.net/ | WebSite |
| Rendered | United Kingdom | 408,075 | 31.5 | 0 fares | changed | none | none |
| Plain HTTP | United States | n/a | n/a | 0 | same title, US description | skyscanner.com/ | WebSite |
| Rendered | United States | n/a | n/a | 0 fares | changed | none | none |
The plain HTTP row is the honest one. The head of the page is complete and well-formed: a title, a 152-character description about comparing cheap flight prices, a self-referencing canonical, a content-language: en header and a WebSite JSON-LD block. The body has no text a parser can count. Skyscanner's home page is a shell that its scripts fill in, and the 265,657 bytes are the scripts.
The rendered row costs 54% more bytes and 27 more seconds and returns no fare either: the title changes, the canonical disappears and the body holds no search results. The seo_audit diff reports an h1 that exists only in the render and no content in either view. That is the definition of a target where the browser does not earn its price: it did not add a fare, it removed the canonical.
The United States exit adds the geo fact. A request to skyscanner.net from a United States address is redirected to skyscanner.com with a session hand-off token in the URL, the description changes to the American wording, the canonical becomes skyscanner.com/, and the body is still zero words. Skyscanner runs one market per domain and routes by exit IP; that is how you would pin a market if there were a fetch worth pinning, and it is the reason the collector below takes a country and a currency explicitly.
What robots.txt and the terms say
skyscanner.net/robots.txt is 10,882 bytes and 394 lines, opening with one Sitemap line and then eleven user-agent blocks. Eight agents get a bare Disallow: /: Leikibot, ShopWiki, NPBot, psbot, HenryTheMiragoRobot, gigabot, appie and Meta-ExternalAgent. The wildcard shares a block with AhrefsBot and carries 324 disallow lines, almost all of them the localised path prefixes for transport pages in every language the site ships, from /doprava/* to /trasporti/*, plus /deeplink* and /transport_deeplink*. The flight search paths are not the subject of the file; the shell is.
The Terms of Service are the subject. They say you agree not to use any unauthorised automated computer program, software agent, bot, spider or other software to scan, copy, index, sort or otherwise exploit the services or the data on them, that Skyscanner offers access to travel data on a commercial API basis, that any breach is a material breach, and that the company reserves the right to take technical or legal action to detect and restrict unauthorised automated access. That is one paragraph and it is unambiguous: reading Skyscanner's fares with a script is something its terms prohibit. The permitted route is the one the SERP already showed at position nine.
The partner Travel API covers flights, hotels and car hire, mixes real-time and indicative pricing, and is described on the developer site as supporting 52 markets and 30 languages with access to over 1,300 supply partners. It is the same API that powers Skyscanner's own search, it requires an application, and it is where a travel business that wants Skyscanner's specific inventory should go.
The collector returns 15 fares in 33.7 seconds
For fare monitoring that does not depend on Skyscanner's markup or its terms, we ran the google_flights collector once on 28 September 2026: departure LHR, arrival JFK, outbound 20 October, currency GBP, exit country United Kingdom, up to 15 results. It finished in 33.7 seconds and delivered 15 itineraries, none partial.
| Field | What the 15 rows contained |
|---|---|
| Price | £520 to £1,015, as text and as a numeric price_value |
| Stops | 12 nonstop, 3 with one stop |
| Airlines | 8: TAP Air Portugal, JetBlue, Royal Air Maroc, Icelandair, British Airways, Virgin Atlantic, Delta, American |
| Duration | 7 h 45 min nonstop to 29 h 35 min with a stop |
| Times | departure and arrival for every row |
| Emissions | 254 kg to 565 kg CO2e as shown |
Three things in that output are worth more than the row count. The cheapest fare in the set, £520, is a one-stop itinerary of 13 h 45 min; the cheapest nonstop is £584; six of the nonstops on one carrier are priced identically at £1,008. A tracker that stores only the minimum price is comparing a connection against a nonstop across days. Store stops with the price. Second, the currency is the pound because we asked for it with the country; ask for USD from a United States exit and the same route reprices in dollars, which is the cross-market comparison the terms forbid you to build by scraping the site. Third, the row carries the CO2 estimate as Google shows it, which is the field the best tutorial on the SERP does not capture.
What a gigabyte buys on Skyscanner
Every measurement 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 | Fares |
|---|---|---|---|---|
| Home page, plain HTTP | 265,657 | 3,764 | $0.00021 | 0 |
| Home page, rendered | 408,075 | 2,450 | $0.00033 | 0 |
| google_flights, one itinerary | billed per row | n/a | $0.003 | 1 |
A gigabyte buys 3,764 plain fetches or 2,450 rendered ones, and the fare count in both columns is zero. The collector is billed per delivered itinerary and failed rows are never charged, so the 15-row London run cost $0.045. Mobile exits at $2.30/GB would raise the first two rows by 2.9 times and leave the zeros where they are; nothing about the address was the barrier. If you are sizing a pool for the pages that do return content, how much proxy data you need does that arithmetic; for a target like this one, size the job in rows.
The setting that works on Skyscanner
Network: residential, Basic line at $0.80/GB, underneath the collector only. Fetch mode: neither engine: tls nor rendered, because both returned 0 words of body from the home page in both countries; the fetch that returns fares is the google_flights collector at $0.003 per itinerary. Country to pin: the market whose fares you want, passed as both the exit country and the currency, because Skyscanner runs one market per domain and redirected our United States exit from skyscanner.net to skyscanner.com; our run pinned gb and GBP and every price came back in pounds. When the proxy is not enough: on this target that is always, and the collector answered LHR to JFK with 15 itineraries in 33.7 seconds; for hotels on the same trip the Google Hotels collector prices a stay by dates, and for any page on the domain that does carry text the web scraping API with render is the fallback, and every account gets $2 of free API usage per month, which is 666 itineraries.
Among the flight metasearch sites we measured, Skyscanner is the closed end of the range. Kayak hands a plain client 2,451 words and a FAQPage in the source; Expedia hands it 72 words and fences off every dated search in robots.txt. Skyscanner hands it a head and nothing else, and says in its terms where the data is sold.