Use case

Proxies for Google Flights: Scraping Fares After the API Went Away

Proxies for Google Flights: why there has been no public fare API since QPX Express closed in 2018, what your location changes on the page, how Google's unusual-traffic block works, and which proxy setup survives.

HProxy Team··11 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

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.

How Google Flights became a page with no feed
  1. 2011-04-08

    Google completes the ITA Software purchase

    the engine behind Google Flights

  2. 2017-11-01

    Google announces the end of QPX Express

    "low interest among our travel partners"

  3. 2018-04-10

    QPX Express API shut down

    no public replacement

  4. 2024-05-22

    Southwest fares appear on Google Flights

    previously only on southwest.com

Source: TechCrunch on QPX Express; Thrifty Traveler on Southwest, May 2024

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 jobProxy typeWhy
Route price tracking across datesRotating residential, country-pinnedWide pool beats a low per-address limit
Market-specific reads (partners, currency, rules)Rotating residential in that countryGoogle localizes by the visitor's location
Low-volume monitor, a few routes dailyISP (static residential)A few clean addresses, kept slow
Runs that keep drawing the unusual-traffic pageMobileCarrier ranges are shared by real users
One manual look, parser testingDatacenter or free listNothing 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

Frequently asked questions

Is there a Google Flights API?
Not a public one. Google shut down the QPX Express API, the paid fare-search API built on the ITA Software technology behind Google Flights, on 10 April 2018, saying there was low interest among its travel partners. Since then the only ways to get Google Flights data are third-party scraping APIs, which scrape the page for you, or scraping it yourself. Booking APIs from airlines and aggregators exist, but they sell tickets rather than mirror what Google shows.
What kind of proxy is best for Google Flights?
Rotating residential proxies pinned to the country whose results you want, driven through a headless browser, because the page renders everything with JavaScript and Google blocks repeated automated queries from one address faster than almost any other site. Datacenter IPs draw the unusual-traffic page almost immediately. Use a short sticky session for each search so the page's follow-up requests come from the same IP as the page load, then rotate between searches.
Does Google Flights show different prices depending on my location?
Your location changes the currency, and Google says it can change which booking partners appear, which payment methods are offered, and refund policies, such as the 24-hour free cancellation rule in the United States. The fare itself is whatever the airline or agency files for that point of sale, so on some routes and carriers the price differs by country and on many it does not. To read the version a traveler in a given country sees, the request has to exit from that country.
Why does Google show an unusual traffic page?
Google's own help page lists the causes: robots, computer programs, automated services, search scrapers, software that tracks rankings, malware on a shared network, and many users on one VPN, school or business network sending automated queries. The page asks for a reCAPTCHA and the address stays flagged for a while. It is a per-network judgement, which is why a shared datacenter IP inherits the flag from everyone who used it before you.
How many proxies do I need to scrape Google Flights?
Size from search count and per-IP tolerance, not from route count. One route with 60 departure dates and 3 trip lengths is 180 searches per refresh, each a full JavaScript page load of a megabyte or more. Google's tolerance per address is low, so the pool has to be wide and the schedule gentle. With rotating residential you buy bandwidth through a pool rather than counting addresses, and the bandwidth is the real cost because the pages are heavy.

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