Google Flights Scraper - Airfare, Price Calendar & Alerts avatar

Google Flights Scraper - Airfare, Price Calendar & Alerts

Pricing

from $1.28 / 1,000 flight delivereds

Go to Apify Store
Google Flights Scraper - Airfare, Price Calendar & Alerts

Google Flights Scraper - Airfare, Price Calendar & Alerts

Get Google Flights prices by origin, destination and date: fares with a booking link per flight, cheapest price for every date up to 10 months ahead, typical price range and alerts below your target or cheaper than the last run. Airline, stops and cabin filters. No login. Free input checks.

Pricing

from $1.28 / 1,000 flight delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Google Flights Scraper

Google Flights Scraper turns Google Flights airfare into clean JSON, CSV or Excel, without login or an API key: flight prices with a real booking link per flight, the cheapest price for every departure date, Google's typical price range, and price alerts that charge only for the fares you want. It returns three kinds of rows:

  • Flights: price, airlines, stops, layovers, every leg with its flight number and aircraft, CO2, and a booking link for that flight.
  • Price calendar: the cheapest price for every departure date up to about 10 months ahead, as in Google's date grid.
  • Price insight: Google's typical price range for the route (low, typical or high) and about 60 days of price history.

Routes can be one way or round trip, from airport or city codes (NYC, LON). You can choose any cabin, passenger count, airline and currency.

Google Flights scraper pricing at a glance

EventFree planBronzeSilverGold and above
Flight delivered, per 1,000US$ 1.50US$ 1.43US$ 1.35US$ 1.28
Calendar date delivered, per 1,000US$ 1.00US$ 0.95US$ 0.90US$ 0.85

No start fee and no monthly fee. Price insight rows, input checks and error rows are free.

  • 43 fields across the three row types (28 on a flight row, plus 8 more with price tracking), all in the output fields.
  • Booking link per flight: bookingUrl opens Google Flights with that flight selected, showing the airline and travel agency offers at the price in the row
  • Price alerts: alertBelowPrice and onlyPriceDrops deliver, and charge, only fares below your target or cheaper than in the previous run
  • Price calendar: cheapest price per departure date, up to ~290 dates per route in one run
  • Price insight: typical price range, low/typical/high, ~60 days of history, free
  • Routes: airport or city codes, several origins × destinations × dates in one run
  • Filters: cabin, adults, children, max stops, airlines, currency, country
  • Free input checks: past dates, unknown airport codes and a return before departure are free rows with an errorCode, and the rest of the input still runs

What data the Google Flights scraper returns

Run on 2026-10-14, JFK to LHR, one way, 2 adults, airline BA. The booking link was opened in a browser: Google Flights showed "Book with British Airways, $735", the same total as the row.

{
"type": "flight",
"origin": "JFK",
"destination": "LHR",
"departureDate": "2026-11-28",
"price": 735,
"currency": "USD",
"isBest": true,
"airlines": ["British Airways"],
"stops": 0,
"legs": [{ "flightNumber": "BA 178", "from": "JFK", "to": "LHR" }],
"bookingUrl": "https://www.google.com/travel/flights/booking?tfs=CBwQAho_EgoyMDI2LTExLTI4Ih8KA0pGSxIKMjAyNi0xMS0yOBoDTEhSKgJCQTIDMTc4MgJCQWoFEgNKRktyBRIDTEhSQAFAAUgBmAEC&hl=en&gl=us&curr=USD"
}

Calendar date (round trip of 7 days, run on 2026-09-30, the cheapest of 288 dates):

{ "type": "calendar_day", "origin": "NYC", "destination": "LON", "departureDate": "2026-11-09", "returnDate": "2026-11-16", "tripLengthDays": 7, "price": 429, "currency": "USD" }

Price insight for a search: {"lowestPrice": 733, "typicalPriceLow": 490, "typicalPriceHigh": 670, "priceLevel": "high", "flightsFound": 31}, with 61 days of priceHistory.

  • One way: bookingUrl opens the Google Flights booking page of that flight, with the offers from the airline and travel agencies. In our tests the airline offer matched the row price (US$ 295 for a JetBlue nonstop, US$ 319 for a two-leg ITA flight, US$ 735 for 2 adults on British Airways).
  • Round trip: Google prices the outbound flight with the whole trip. bookingUrl opens Google Flights with that outbound flight already chosen, on the screen where you pick the return; the cheapest return shown there gives the row price.
  • The link carries the passengers, cabin, currency and country of your input, so the price on screen is for the same trip. Fares move during the day, so a link opened hours later can show a new price.
  • googleFlightsUrl is the search page for the route and date, also on every calendar row.

Google Flights price alerts: pay only for the fares you want

Set a target and schedule the run. Every fare is checked, but only the ones that pass are saved and charged.

InputWhat is delivered and charged
alertBelowPrice: 400Flights and calendar dates priced below 400 in your currency
onlyPriceDrops: trueFlights and dates cheaper than in the previous run, plus new flights cheaper than anything that search had before. The first run of a search is the baseline
bothBelow 400 and new or cheaper than last time: you pay once when a fare crosses your target, and again only if it drops further
{ "origins": ["JFK"], "destinations": ["LHR"], "departureDates": ["2026-12-08"], "tripLengthDays": 7, "includePriceCalendar": true, "calendarDays": 30, "alertBelowPrice": 700, "onlyPriceDrops": true }

Each delivered row says why in alertReason: below_target, price_drop, new_cheaper_option or first_run, with previousPrice and priceChange. A search where nothing passes returns one free row:

{ "type": "error", "errorCode": "NO_PRICE_ALERT", "error": "15 flights checked: 14 at or above your target 700 USD, 1 not cheaper than in the previous run (not charged)", "cheapestPriceSeen": 697 }

Save the input as a Task with fixed dates and attach a daily Schedule. Add a webhook or an integration (email, Slack) on "run succeeded" and the dataset only has rows when there is news.

What you can do with Google Flights data

  • Fare alerts: a daily Task that only charges when a route drops under your budget.
  • Find the cheapest dates: one calendar run shows the whole season for a route. Sort by price.
  • Travel content and deal sites: "cheapest month to fly to London" pages from real data, with a booking link per fare.
  • Airline and route analysis: who flies the route, with how many stops, on which aircraft, at what price and CO2.

Google Flights scraper input

FieldWhat it does
origins, destinations3-letter airport or city codes (JFK, NYC, LHR, LON). Every origin is combined with every destination
departureDatesYYYY-MM-DD or a number of days from today (30)
tripLengthDays0 = one way; 7 = return 7 days later (flights and calendar)
returnDateFixed return date for the flight search (optional)
scrapeFlightsFlight rows (default on)
includePriceCalendar, calendarDaysCheapest price per departure date, from the earliest departure date, up to 330 days
adults, children, cabinClass, maxStopsFilters. Prices are the total for all passengers
airlinesOnly flights where every leg is flown by these airlines (BA, AA, LH)
currency, country, languageUSD, EUR, GBP...; the Google Flights site country; names language
maxFlightsPerSearchDefault 50 (Google shows up to ~40 per route and date)
alertBelowPrice, onlyPriceDropsPrice alerts, see above
compareWithPreviousRun, onlyChangedPrice tracking between runs, see below
{ "origins": ["NYC"], "destinations": ["LON", "PAR"], "departureDates": ["30"], "tripLengthDays": 7, "includePriceCalendar": true, "calendarDays": 180, "currency": "USD" }

Free input checks

Every value is checked before any search. A bad value becomes one free row with an errorCode and a message that says what to fix, and the rest of the input still runs. Nothing is charged for these rows.

  • "departureDates": ["2026-01-10"] gives PAST_DATE: "the departure date 2026-01-10 is in the past (today is 2026-10-14 UTC); use a future date, or a number of days from today such as 30 so a saved Task never goes stale".
  • "returnDate": "2026-11-01" with a departure on 2026-11-28 gives RETURN_BEFORE_DEPARTURE, and only that date is skipped.
  • QQQ gives INVALID_AIRPORT: "Google Flights does not recognize QQQ as an airport or city code".
  • 2026-02-30 gives INVALID_DATE, a date over 331 days ahead gives DATE_TOO_FAR.

Tip: in a saved Task, use a number of days (30) instead of a fixed date, unless the Task is a price monitor.

Track Google Flights prices between runs

compareWithPreviousRun keeps the last price of every flight and calendar date in a key-value store on your own account, google-flights-scraper-price-history, and adds to each row previousPrice, previousSeenAt, priceChange, priceChangePct, isNew, isNewLowest, lowestSeenPrice and firstSeenAt.

  • onlyChanged delivers, and charges, only new rows and fare changes up or down. A search with no change returns one free row with errorCode: NO_PRICE_CHANGES.
  • A flight is matched by its flight numbers and times, one record per route and dates; a calendar date by its departure and return dates, one record per route, so the calendar keeps tracking the same dates as the window moves forward.
  • A relative date such as 30 moves every day, so every run is a new flight search; use fixed dates for a monitor. Rows that leave the result stay in the history for 90 days.

Google Flights output fields

  • Flight rows (type: "flight"): price, currency, isBest, airlines, stops, durationMinutes, departureAirport, arrivalAirport, departureTime, arrivalTime, layovers, legs (flightNumber, airline, from, to, departure, arrival, durationMinutes, aircraft, legroom), co2Grams, co2TypicalGrams, co2DiffPercent, bookingUrl, googleFlightsUrl.
  • Calendar rows (type: "calendar_day"): departureDate, returnDate, tripLengthDays, price, currency, googleFlightsUrl.
  • Price insight rows (type: "price_insight", free): lowestPrice, typicalPriceLow, typicalPriceHigh, priceLevel, priceHistory, flightsFound.
  • With alerts or tracking: alertReason, alertBelowPrice, previousPrice, priceChange, priceChangePct, isNew, isNewLowest, lowestSeenPrice, firstSeenAt, previousSeenAt.

Error codes (never charged)

errorCodeMeaning
PAST_DATE, INVALID_DATE, DATE_TOO_FARA departure date in the past, not a real date, or more than 331 days ahead
RETURN_BEFORE_DEPARTUREThe fixed return date is before that departure date
INVALID_AIRPORTNot a 3-letter code, or a code Google Flights does not know
NO_FLIGHTS, NO_CALENDARGoogle Flights has nothing for this route and date (or for your airline and stops filters)
NO_PRICE_ALERTEvery fare was checked and none passed your price alert; cheapestPriceSeen says how close it got
NO_PRICE_CHANGESWith onlyChanged: nothing is new or changed since the previous run
BLOCKEDGoogle blocked the request on several IPs; run again
NOT_REACHED, UNEXPECTEDThe run timeout arrived, or something unforeseen broke; only that search is lost

Google Flights scraper pricing

Prices per plan are in At a glance. On the Free plan, a daily alert on one route that finds 3 fares under your target costs US$ 0.0045 that day, and a day with nothing under the target costs nothing. A 180 date calendar costs US$ 0.18, and 40 flights cost US$ 0.06. Price insight, input check and error rows are free, and there is no Apify compute bill on top.

Integrations, scheduling and AI agents

Video guides from Apify: how to schedule an Actor and how to connect it to other apps.

  • Schedule a Task with fixed dates and alertBelowPrice or onlyPriceDrops in Apify schedules: the dataset only has rows when a fare is worth your attention.
  • Export as JSON, CSV, Excel, XML or HTML, or read the dataset from the Apify API.
  • Connect it to Make, n8n, Zapier, Google Sheets, Slack, email or a webhook through Apify integrations, for example a Slack message when a route drops under your budget.
  • AI agents: the Actor works as a tool through the Apify MCP server in Claude, ChatGPT, Cursor and other MCP clients, for example "find the cheapest week in December to fly from New York to Lisbon".
  • API call: scrapewise/google-flights-scraper with the Apify API or the Python and JavaScript clients.

Google Flights scraper FAQ

Do I need a Google account or an API key? No. The Actor reads public Google Flights pages.

Is there an official Google Flights API? No. Google Flights has no public API; Google closed its flight search API (QPX Express) in 2018. This Actor reads the public Google Flights pages and returns prices, legs, CO2, a booking link per flight and the price calendar.

Is the price the same one I see on Google Flights? Yes, at the time of the run, for the passengers, cabin, currency and country in your input. In our tests the booking link opened with the same total as the row. Fares move during the day.

How do I find the cheapest day to fly? Turn on includePriceCalendar, set calendarDays (up to 330) and sort the calendar_day rows by price.

Can I get multi-city itineraries? No. One way and round trip only, from any number of origins, destinations and dates in one run.

Does it return the airline or agency checkout page? No. bookingUrl opens Google Flights on that flight, with the airline and agency offers; the purchase happens on the site you choose there.

Google Flights scraper limitations

  • On round trips, Google lists the outbound flights with the total round trip price. Return flight options are chosen on Google's next screen, which is where the round trip bookingUrl lands.
  • The booking link opens Google Flights; the final purchase happens on the airline or agency site that you choose there.
  • The calendar goes up to about 324 days from today, the limit of Google's own date grid. The airline filter applies to flight rows, not to the calendar.
  • Prices are what Google Flights shows at the time of the run. This Actor reads public pages only.

Changelog

  • 16 Oct 2026: price per plan in At a glance, integrations and FAQ on this page; the pricing section no longer lists a start fee the Actor does not charge.
  • 2026-10-14, 0.2: Real booking links, price alerts below your target, friendly date errors. bookingUrl on every flight (tested to open with the same price), alertBelowPrice and onlyPriceDrops for alerts that charge only the fares you want, airlines filter, googleFlightsUrl on calendar rows, and free per-value input checks (PAST_DATE, RETURN_BEFORE_DEPARTURE, INVALID_AIRPORT, INVALID_DATE, DATE_TOO_FAR) instead of stopping the whole run.
  • 2026-10-04: price tracking between runs with compareWithPreviousRun and onlyChanged.
  • 2026-09-30, 0.1: first release. Flights with legs, layovers and CO2, price calendar up to ~10 months, free price insight rows, city codes, any currency.