Google Flights Scraper and Fare Tracker

CleanScrape · @cleanscrape

Google Flights fares for your routes and dates: prices, airlines, stops, times and CO2, with only new or cheaper flights on a schedule.

About

A Google Flights scraper and flight price tracker: check fares for your routes and dates and download them as CSV, Excel or JSON, with price, airlines, flight numbers, stops and layovers, departure and arrival times with time zones, aircraft and CO2. Each search also gets a summary with the cheapest fare, Google's typical price and its price level for the trip (low, typical or high). Schedule it with Only new flights or lower prices and each run gives you only what changed.

No login or API key is needed. This Actor reads Google Flights result pages. It is not affiliated with Google and is not an official API.

Start with a small run

The form opens with two routes, JFK-LAX and London to Rome, departing 30 days after the run date, and 10 flights per search. Start it as it is, or replace the routes with your own.

  1. Enter Routes, one per line.
  2. Choose Departure dates: a date, a range, or +30 for 30 days after the run date.
  3. Start the run. The run's dataset has the flights; the SEARCHES record in its key-value store has the cheapest fare per route and date.
  4. Download the flights as CSV, Excel or JSON.

Examples

Find the cheapest day to fly in a month (the cheapest flight for each departure day, as a price calendar):

{
  "routes": ["NYC-LON"],
  "departureDates": ["+30..+60"],
  "maxFlightsPerSearch": 1
}

Round trip London to Barcelona for 4 days, with the return flights for the 2 cheapest outbound options:

{
  "routes": ["London to Barcelona"],
  "departureDates": ["+30"],
  "tripType": "round_trip",
  "tripLengthDays": 4,
  "returnFlightsFor": 2,
  "maxFlightsPerSearch": 5
}

Nonstop business-class fares from New York to London:

{
  "routes": ["NYC-LON"],
  "departureDates": ["+45"],
  "cabin": "business",
  "maxStops": "nonstop",
  "maxFlightsPerSearch": 10
}

Chicago, Dallas and Los Angeles to Cancun, to see which departure city is cheapest:

{
  "routes": [
    "Chicago to Cancun",
    "Dallas to Cancun",
    "Los Angeles to Cancun"
  ],
  "departureDates": ["+40"],
  "maxFlightsPerSearch": 5
}

Watch one trip for price drops: schedule it daily, and each run saves only flights that are new or cheaper than last time:

{
  "routes": ["JFK-MIA"],
  "departureDates": ["2026-12-20"],
  "maxFlightsPerSearch": 10,
  "onlyNewOrCheaper": true,
  "watchName": "miami-christmas"
}

Routes

You writeThe Actor searches
JFK-LAXOne airport to another
NYC-LONAll New York airports to all London airports (city codes)
London to Rome, Helsinki → ParisCities by name. Big cities use all their airports.
jfk laxSame as JFK-LAX

City codes that cover several airports: NYC, LON, PAR, TYO, OSA, SEL, BJS, CHI, WAS, YTO (Toronto), SAO, RIO, BUE, MIL, ROM, MOW. DTT, YMQ, STO, REK and JKT work too and use their main airport. A city name that matches one airport uses that airport, and the run says which one it picked. Use a code when you want a particular airport.

Dates

You writeDeparture dates
2026-12-08That day
2026-12-01..2026-12-07Each day in the range (7 searches per route)
+3030 days after the run date: a scheduled run always looks the same distance ahead (a different departure day on every run)
+30..+36A week, starting 30 days after the run date

Every route is searched for every date. Past dates and dates more than 330 days ahead are skipped with a note. Maximum searches (default 200) caps the route and date combinations in one run.

Round trips

Choose Round trip and a Trip length in days. The outbound flights are priced as Google shows them for the whole trip. Set Return flights for the cheapest outbound flights to 1-5 to also save the return flights Google offers with each of the cheapest outbound flights; return rows have leg: return and outboundFlightNumbers, and their price is the total for that outbound and return together.

Fare tracking

Turn on Only new flights or lower prices, give it a Tracking name (optional), and schedule the run, for example daily. Each run then saves a flight only when:

  • it wasn't saved before for the same route and dates, or
  • its price is lower than last time (previousPrice and priceChange show by how much).

This also applies to return flights. A flight a run couldn't save (for example when it reached its time limit) stays new for the next run. Prices are compared only in the same currency, country, passengers, cabin, stops and airlines: if you change one of these and keep the tracking name, tracking starts fresh and the run message says so.

The SEARCHES record still gets an entry for every search, with cheapestPrice, previousCheapestPrice and cheapestChange, so you can see the trend even when no flight is new. The history is kept for 60 days in your own Bytewells account (a named key-value store), and two runs with the same tracking name never overlap.

To watch one trip for price drops, use fixed dates such as 2026-12-20. A +30 date is a different departure day on every run (always 30 days ahead), so its flights are new each time: use it to follow the fare level for trips a month out, not the price of one flight.

Filters and options

SettingWhat it does
PassengersAdults, children, infants in seat or on lap (up to 9)
CabinEconomy, premium economy, business or first
StopsAny, nonstop only, 1 or 2 stops at most
AirlinesCodes such as BA or UA, or ONEWORLD, SKYTEAM, STAR_ALLIANCE
Currency and country22 currencies; the country (point of sale) can change prices
Flights per searchUp to 100
Which flights to keepCheapest first (default), Google's order, shortest, or earliest

Output

Flights (one row per itinerary):

FieldExample
route, from, toJFK-LAX, JFK, LAX
departure, arrival2026-12-08T21:35:00-05:00, 2026-12-09T00:57:00-08:00
duration, stops, layovers6 h 22 min, 1, MUC 2 h 20 min
airlines, flightNumbers, aircraftLufthansa, LH2485, LH1868, Airbus A320neo
price, currency, priceFor295, USD, 1 passenger, round trip
co2Kg, co2VsTypicalPercent157, 27
isNew, previousPrice, priceChangeWith tracking
segments, layoverDetailsEach flight and connection in detail
googleFlightsUrlThe same search on Google Flights

Times are local to each airport and include the UTC offset, so an overnight arrival keeps its own date. price is Google's total for all passengers in the chosen currency.

Searches (the SEARCHES record in the run's key-value store, one entry per route and date): cheapestPrice, cheapestFlight, nonstopCheapestPrice, bestPrice, googlePriceLevel (low, typical or high), googleTypicalPrice, googleTypicalLow, googleTypicalHigh, priceHistory (Google's lowest price per day for about 60 days), flightsFound, flightsSaved, status and note. With tracking, also previousCheapestPrice and cheapestChange.

The run report (SUMMARY in the key-value store) counts searches with flights, without flights and failed.

Pricing

$29 a month to rent it, after a 3-day free trial. Cancel at any time; access runs to the end of the month you paid for.

Runs use compute, paid from your Bytewells credit at Bytewells' rates, separately from the rental. A datacenter proxy is used only if Google refuses the run's own connection. In tests on Bytewells, one route with 20 flights used $0.0003 of credit, 11 departure days $0.0006, and a round trip with return flights $0.0007.

There is no charge per flight or per search, so daily fare tracking and month-long price calendars cost the same rental.

Speed and limits

  • About 0.5 to 1 second per search, up to 6 routes and dates at a time. 300 searches took about 3 minutes in tests.
  • Google's results page lists about 15 to 75 flights per search. Flights per search (default 20, up to 100) keeps the cheapest by default.
  • About 1% of flights show no price on Google; their price is empty.
  • Departure dates up to 330 days ahead.

Use it from the API

The Actor runs through the Bytewells API, which works with Apify's API clients: point the client's base URL at Bytewells (see Bytewells docs) and call cleanscrape/google-flights-scraper with an input from the examples above. The flights are in the run's default dataset; SEARCHES and SUMMARY are JSON records in its key-value store.

Common questions

Is this the Google Flights API?

No. Google doesn't offer a public flights API. This Actor reads the same result pages a browser shows.

Can I export to Excel or CSV?

Yes. Download the run's dataset as CSV, Excel or JSON. The SEARCHES record is JSON.

What does a run cost on top of the rental?

Only the compute it uses, from your Bytewells credit. Test runs used $0.0003 to $0.0007 each.

Do I need a Google account or a proxy?

No. The Actor needs no login, cookies or API key. It switches to a datacenter proxy on its own only if Google refuses the run's connection.

Why does a run have fewer flights than Google shows?

Flights per search (default 20) limits each search, and Which flights to keep decides which ones: the cheapest by default. Raise it to 100 to keep every flight the results page lists.

Are prices final?

They are the prices Google Flights shows at that moment for the chosen passengers, cabin, currency and country. Bags and seat selection can cost extra, and prices change often. Book on the airline's or agency's site.

Can I search a whole month?

Yes: 2026-12-01..2026-12-31 searches each day of December. Set Flights per search to 1 to get just the cheapest flight per day; the SEARCHES record then works as a price calendar.

Is it legal?

The Actor reads publicly available flight prices and schedules, with no login. You're responsible for how you use the data and for following the laws and terms that apply to you. If unsure, ask a lawyer.

Support

CleanScrape maintains this Actor and fixes it when Google Flights changes. Questions or a problem? Email [email protected] with the run ID and the route. Never include API tokens or private data.

Disclaimer

CleanScrape is independent and not affiliated with, endorsed by, or sponsored by Google. Google and Google Flights are trademarks of Google LLC. Prices and schedules belong to the airlines and are shown as Google Flights displays them.

More tools from CleanScrape

FAQ

Is this the Google Flights API?
No. Google doesn't offer a public flights API. This Actor reads the same result pages a browser shows.
How do I track a fare?
Turn on Only new flights or lower prices, give it a tracking name and schedule it with fixed dates. Each run saves only flights that are new or cheaper than last time, with the previous price.
Can I find the cheapest day to fly?
Yes. Use a date range such as +30..+60 and set Flights per search to 1: the SEARCHES record then works as a price calendar.
What does a run cost on top of the rental?
Only the compute it uses, from your Bytewells credit. Test runs used $0.0003 to $0.0007 each.
Are prices final?
They are the prices Google Flights shows at that moment for the chosen passengers, cabin, currency and country. Bags and seats can cost extra, and prices change often.

More Actors from the same publisher.

View all from @cleanscrape