Home › Guides › Google Flights scraper

Google Flights scraper: every itinerary, Google's own price insight, and a tracker that reports only what changed

Google Flights shows a short list and hides the rest behind “View more flights”. The Google Flights Scraper & Price Tracker returns every flight Google Flights has for a route and dates, hidden ones included, with price, airlines, flight numbers, times, stops and layovers, CO₂, aircraft, legroom, codeshares and “operated by” — plus Google's own price level, typical price range and price history (61–62 days for most searches). No Google account, no API key, no browser: one request to Google per search.

Who it is for

Three modes

ModeWhat you getTypical use
search (default)Every flight for each route and dates, one row per itinerary, plus one route row per search with the lowest price, Google's price level, typical range and price historyFare research, competitor schedules, emissions reporting
monitorOnly the flights that changed since the previous run of the same search: NEW, CHEAPER, PRICIER, GONE (and PRICE_ADDED / PRICE_REMOVED); CHEAPER and PRICIER rows carry the previous price and the changePrice tracking on a schedule
cheapest-daysOne row per departure day with the lowest fare, the cheapest flight, Google's price level and a flag on the cheapest day“Cheapest day to fly” content, flexible-date planning

What you get

Every row has a type: flight, route, day or status.

A trimmed route row from a platform run on 2026-09-30 (FRA-BKK, 10 November 2026, economy, 1 adult, USD). Google had 177 flights for this search and hid 165 of them behind “View more flights”:

{
  "type": "route",
  "route": "FRA-BKK",
  "lowestPrice": 489,
  "priceLevel": "typical",
  "priceVsTypicalRange": "within",
  "typicalPriceLow": 395,
  "typicalPriceHigh": 560,
  "priceHistoryDays": 61,
  "flightsFound": 177,
  "hiddenFlightsCount": 165
}

Example inputs

The quick start — one route, 30 days from today, 20 flights. In a platform run it returned 20 flight rows and one route row in about 4 seconds; Google had found 92 flights and hidden 80 of them.

{
  "routes": ["IST-LHR"],
  "departureDate": "+30",
  "maxFlightsPerSearch": 20
}

The cheapest day to fly in a two-week window starting 20 days from today, for one-week round trips:

{
  "mode": "cheapest-days",
  "routes": ["IST-LHR"],
  "departureDate": "+20",
  "scanDays": 14,
  "returnDate": "+7"
}

Routes are two 3-letter airport codes (LHR, not the city code LON). A route line can carry its own dates, such as JFK-LAX 2026-11-05 2026-11-12 for a round trip. Filters cover cabin class, adults (1–9), stops, airlines, currency and the searcher's market.

How the price tracker works

In monitor mode, each search's flights are stored with their itineraryKey in the key-value store google-flights-monitor-<monitorName> of your Apify account. The next run compares every flight with the price last reported for it:

Prices move often, mostly by small amounts. On the platform, 43 of 314 monitored flights changed price within 31 minutes: 38 by less than 1%, and 5 by 1% or more (up to −14.7%). At the default threshold, monitor mode would have reported only those 5.

Measured data quality

From the Apify platform runs of 2026-09-30 (build 0.1.1): 2,834 flight rows, 35 route rows and 47 day rows from 23 runs.

Limits worth knowing

“Google” and “Google Flights” are trademarks of Google LLC. This Actor is not affiliated with or endorsed by Google.

How it is billed

Pay per event: flight for every flight row delivered (in monitor mode, every change row), route-check once per search that delivered at least one flight row, and date-price for every cheapest-days row that has a price. Status rows for searches that were empty, failed or duplicated are free. If the Pricing tab lists an Actor start event, it is charged once per run. Current prices are on the Actor's Pricing tab on Apify.

Price tracking works the same way in retail: the Google Shopping scraper guide covers Google's typical price range and store price history for products. To run any scraper from your own code or on a schedule, see calling foXLabs scrapers through the API.

Frequently asked questions

What are the hidden flights in Google Flights?

Google Flights shows a short list and hides the rest behind “View more flights”: dearer or slower combinations. The scraper asks for the whole list in the same single request. The route row says how many flights Google hides (hiddenFlightsCount) and whether they are included (hiddenFlightsIncluded).

How does the price tracker decide what changed?

In monitor mode each search's flights are stored with their itineraryKey in a key-value store in your Apify account. The next run compares prices with the price last reported for each flight and delivers only NEW, CHEAPER, PRICIER and GONE flights. A price counts as changed from minPriceChangePercent on (1% by default); smaller moves add up until they pass it. Monitor mode needs a fixed departure date, so that it compares the same flights from run to run.

Are Google Flights prices per person?

No. Prices are for all adults together, as Google Flights shows them. A round-trip price is Google's “From … round trip total” for that outbound flight: the lowest total with a matching return.

Do I need a Google account, an API key or a proxy?

No account and no API key. A proxy is not needed either: with the default setting the Actor asks Google directly and switches to Apify residential proxy by itself if Google rate-limits it.

Can I get the list of websites that sell the ticket?

Not in the data, because Google protects that request. The googleFlightsUrl of a one-way flight opens Google's booking page for exactly those flights, and that page lists the sellers.

Start small: run the quick-start input, check the route row's price level and history, then schedule monitor mode with fixed dates on the routes you care about. More scrapers for travel data: travel data on foXLabs.

Open Google Flights Scraper on Apify →