Google Flights is the fare search most travelers open first, and it is the one flight site with no back door at all. Google closed its public fare API in 2018, the page draws every result with JavaScript after it loads, and Google enforces its per-network limits on automated queries harder than any airline does. Proxies for Google Flights are the answer to a narrow question: how do you read the fares Google shows travelers in a given country, on a schedule, without one address being flagged as a robot before the second search finishes.
We keep this kind of traffic online, so we see what people build against Google Flights (route price trackers, deal-alert services, market monitors for airlines, metasearch competitors checking their own coverage) and what fails. This is the practical version: why there is no API, what your location actually changes, how the block works, which proxy type survives, and how to size it. The sector background is in travel fare aggregation; the two closest siblings are proxies for Skyscanner and proxies for Kayak, which both have partner APIs that Google lacks.
What proxies are best for Google Flights?
Rotating residential proxies pinned to the country whose results you want, driven through a headless browser, with a short sticky session per search and rotation between searches. Google treats repeated automated queries from one address as unusual traffic within minutes, and it distrusts datacenter ranges on sight, so home connections in a wide pool are the only setup that reads the page repeatedly. Datacenter is for a single manual look. ISP and mobile tiers are rarely needed here, because nothing on Google Flights requires a persistent account.
There is no API, and there has not been one since 2018
Google Flights runs on technology from ITA Software, which Google bought for $700 million. For several years Google sold access to that engine as the QPX Express API, and it was used by Kayak, Orbitz, Bing Travel and airlines including United, American and Virgin Atlantic. Google shut it down on 10 April 2018 with a one-line explanation: "We decided to no longer support the QPX Express API given the low interest among our travel partners" (TechCrunch).
Nothing public replaced it. The airline side of the industry offers booking APIs (the airlines' own NDC connections, and aggregators such as Duffel that sell tickets through them), but those return an airline's offers to a seller, not the comparison Google draws across airlines and agencies for a traveler in a specific country. When people say "Google Flights API" today they mean one of two things: a third-party scraping API that loads the page for you and sells the parsed result, or their own scraper. Both are reading the public page. That is the job this guide covers, and Google's terms of service apply to it either way.
2011-04-08
Google completes the ITA Software purchase
the engine behind Google Flights
2017-11-01
Google announces the end of QPX Express
"low interest among our travel partners"
2018-04-10
QPX Express API shut down
no public replacement
2024-05-22
Southwest fares appear on Google Flights
previously only on southwest.com
What your location changes, and what it does not
Google is unusually explicit about this, which makes it a good place to separate the real geo effect from the folklore. The default experience is determined by your computer's location and your browser settings, and the location you choose may affect booking partners (airlines and online travel agencies), payment methods (which credit or debit cards are offered), and refund policies, with Google's own example being that in the United States you usually have 24 hours to change or cancel a flight without a fee (Google Travel Help, customize your currency, language or location). Currency follows the same setting.
The fare itself is a different matter. Google displays what airlines and agencies file for a point of sale, and airlines do file some fares by market. That produces real differences on some routes and carriers, and none on others. When EXPERTE tested four long routes from four countries on Skyscanner, wiping cookies between sessions, every price came back identical (EXPERTE, cheaper flights with a VPN). So the honest framing for a fare tracker is this: exiting from the target country guarantees you see that market's booking partners, currency and rules, and it is the only way to catch a market-specific fare when one exists. It does not guarantee the fare will differ.
For a data product that is the whole point. A tracker selling "the price a traveler in Brazil sees" has to read the page from Brazil, partners and all, or it is selling a guess.
How Google blocks you
The wall on Google Flights is the same one every Google scraper meets: the page that says "Our systems have detected unusual traffic from your computer network" and asks for a reCAPTCHA. Google's help page lists what triggers it: robots, computer programs, automated services, search scrapers, software tracking website rankings, malware on a shared network, and multiple users on the same VPN, school or business network sending automated searches (Google Search Help, unusual traffic). Two words in that list matter for proxy choice: "computer network." Google judges the network, not only the address, which is why a shared datacenter range arrives pre-flagged by everyone who scraped through it before you.
Underneath the block is the page's structure. Google Flights is a highly dynamic site that relies on JavaScript to load flight data, so simple HTTP requests return blank or incomplete pages, and frequent requests from the same IP result in immediate blocks (Oxylabs, how to scrape Google Flights). The search itself is encoded in the URL's tfs parameter, with curr for currency and hl for language. After the page loads, its scripts make follow-up requests to fetch and refine results. If those follow-ups arrive from a different IP than the page load, the session looks like two different visitors sharing one browser, which is its own bot signal.
Which proxy type fits: residential, datacenter, ISP, or mobile
Datacenter proxies are the cheapest and the first to die here. Google's network-level judgement flags hosting ranges quickly, and a shared datacenter IP has usually already earned the unusual-traffic page. Use them for one manual look, or for testing your parser against a saved page.
Rotating residential proxies are real home connections pulled from a large pool, country-pinned, with a fresh IP per search. They read as the ordinary travelers Google expects, they clear the network judgement, and they place each search in the market whose partners and currency you want. This is the setup that holds. It is metered by the gigabyte, and Google Flights pages are heavy, so the bandwidth discipline in the setup section is where the money goes.
ISP proxies hold one static residential IP. Google Flights has no account state worth holding (price tracking alerts need a Google account, but nobody scrapes through those), so ISP is rarely the answer here. It fits if you run a small, slow monitor from a handful of addresses you want to keep clean.
Mobile proxies are carrier IPs shared by many handsets, and Google is generous to them because blocking a carrier range blocks thousands of real users. That makes mobile the tier for the hardest runs, at a price most trackers do not need to pay.
| Google Flights job | Proxy type | Why |
|---|---|---|
| Route price tracking across dates | Rotating residential, country-pinned | Wide pool beats a low per-address limit |
| Market-specific reads (partners, currency, rules) | Rotating residential in that country | Google localizes by the visitor's location |
| Low-volume monitor, a few routes daily | ISP (static residential) | A few clean addresses, kept slow |
| Runs that keep drawing the unusual-traffic page | Mobile | Carrier ranges are shared by real users |
| One manual look, parser testing | Datacenter or free list | Nothing at stake |
Free versus paid for Google Flights
A free proxy will sometimes load Google Flights once. It will rarely load it twice, because the working free pool is shared datacenter space and Google's judgement is per network. We put a batch of free proxies from our own list in front of Google Flights and counted what came back in free proxies for Google Flights. For a one-off look at another country's results, start with our free proxy list (refreshed every few minutes, 100+ countries) and confirm the exit with the free proxy checker. For anything repeated, paid residential is the floor, and ours is $0.44/GB pay-as-you-go with no KYC, so a first test costs cents rather than a subscription.
Setting it up
Drive a real browser. Playwright or Puppeteer behind a residential exit is the practical minimum, because the results only exist after JavaScript runs; our setup guides for Playwright and Puppeteer cover the proxy wiring. Build the search URL yourself (origin, destination, dates, curr, hl) so you are not automating clicks through the search form, and wait for the result list to render before you read it.
Hold one IP for one search. Set a sticky session that lasts long enough for the page load and its follow-up requests, then rotate to a fresh residential IP for the next search. That keeps each search internally consistent while no single address accumulates a history.
Cut the page weight. A Google Flights load pulls scripts, fonts and images you never read. Block image and font requests at the browser level, keep the scripts the page needs, and you cut the gigabytes without changing what Google sees in the result list.
Set the location deliberately. Google infers it from the exit IP, but the currency and language parameters in the URL and the location selector at the bottom of the page decide what the page renders. A Brazilian exit with curr=USD and hl=en is a mixed signal. Match all three to the market you are reading.
Read Southwest and other late arrivals correctly. Southwest fares began appearing on Google Flights in May 2024 after years of being available only on southwest.com (Thrifty Traveler), so a tracker that hard-coded "Southwest is never on Google" is now wrong. Coverage changes; re-check your assumptions about which carriers appear.
How many IPs, and how fast
The unit is a search, and searches multiply faster than routes.
Sizing (rotating residential, one refresh cycle):
searches/cycle = routes x departure dates x trip lengths
= 20 routes x 60 dates x 3 lengths = 3,600 searches
page weight = ~1 MB or more per search with JavaScript
-> block images and fonts, keep the result scripts
Per-address tolerance on Google is low, so:
one sticky IP per search, a fresh IP for the next,
gentle pacing, and the pool does the spreading.
Bandwidth, not address count, is the bill. Trim the pages, refresh only the dates that matter (near-term dates move daily, far dates weekly), and a tracker that once needed thousands of heavy loads a day needs hundreds. Our pricing is per gigabyte with no expiry, so a pause in the schedule costs nothing.
Staying unblocked on Google Flights
- Never scrape Google from a datacenter range. It is the fastest route to the unusual-traffic page, and the flag follows the network.
- One search, one IP, then rotate. The page load and its follow-up requests must share an address; the next search must not.
- Look like a browser because you are one. Real Chrome behind the proxy, with a current user agent, a normal viewport and no automation flags left on. Google reads the TLS fingerprint as well as the IP.
- Pace like a person. Space searches, jitter the gaps, and avoid clockwork schedules. The full list is in avoiding IP bans while scraping.
- Treat a 200 as unverified. The unusual-traffic page can arrive with a normal status. Check for the results list in the DOM and count a miss when it is absent.
- Back off on the first challenge. A reCAPTCHA from one address is a signal to slow the whole schedule, not to solve it and continue.
The limits worth knowing
Proxies fix the two things Google Flights punishes hardest: one address doing too much, and a request arriving from the wrong country. They do not fix a bare HTTP client on a JavaScript page, an automation fingerprint, or a schedule that runs on the minute. They do not restore an API that Google removed on purpose, and they do not change Google's terms of service. A provider claiming its proxies alone beat Google is selling a story.
For a first look, our free proxy list and proxy checker are free. When the tracker has to run on a schedule, rotating residential at $0.44/GB pay-as-you-go, one sticky IP per search and a fresh one for the next, pinned to the market you are reading, is the setup that keeps Google Flights readable.
Sources
- TechCrunch, Google will pull its QPX Express API in April 2018, on the shutdown date, Google's reason and the ITA Software purchase.
- Google Travel Help, customize your currency, language or location, on what differs by location.
- Google Search Help, unusual traffic from your computer network, on what triggers the block.
- Oxylabs, how to scrape Google Flights, on JavaScript rendering, URL parameters and per-IP blocks.
- EXPERTE, cheaper flights with a VPN: does it work?, the four-route, four-country test.
- Thrifty Traveler, Southwest fares now appear on Google Flights, May 2024.