Google Flights Scraper - Flight Prices & Price Calendar avatar

Google Flights Scraper - Flight Prices & Price Calendar

Pricing

from $0.25 / 1,000 flights

Go to Apify Store
Google Flights Scraper - Flight Prices & Price Calendar

Google Flights Scraper - Flight Prices & Price Calendar

Google Flights API alternative: every flight for your route and dates with price, airlines, flight numbers, times, stops, layovers and CO2, one-way or round trip, any cabin. Cheapest fare per date (price calendar), many routes per run, and price-drop monitoring.

Pricing

from $0.25 / 1,000 flights

Rating

0.0

(0)

Developer

Alom Dev

Alom Dev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Scrape Google Flights for any route and date: every itinerary Google lists, with the price, airlines, flight numbers, departure and arrival times (with time zones), duration, stops and layovers, aircraft, legroom and CO2 emissions, one-way or round trip, in any cabin class and currency. Or get Google's price calendar: the cheapest fare for every departure date over the next weeks or months. Run many routes at once, and schedule it to get only the prices that changed.

  • Pure HTTP against Google's own data, no browser. Fast (about 1,600 flights from 12 routes in 35 seconds) and cheap to run.
  • Honest runs. Bad input is caught before the run starts, unknown airports are named in the status message, and a run that could not deliver says "partial" or "failed" instead of "succeeded with 0 results".
  • Built for monitoring. Relative dates (+30) keep schedules valid, and the monitor mode delivers only new or changed prices with the previous price.

What can you use Google Flights data for?

  • Fare tracking and alerts: watch a route every day and get a row only when the price moves.
  • Finding the cheapest dates: the price calendar shows the lowest fare for each departure date in one run.
  • Travel apps, AI agents and dashboards: clean JSON for your app, Google Sheets, BI tool or LLM workflow.
  • Market and route research: which airlines fly a route, how often, nonstop or not, at what price and CO2.
  • Travel agencies and corporate travel: compare options for many routes and dates in one run.

Two modes

  • Flights (default): what you see on Google Flights after searching a route and a date. One row per itinerary. For round trips Google first lists outbound flights priced as the cheapest round-trip total; turn on includeReturnFlights to also get the return flight that makes up that price.
  • Price calendar: the cheapest fare per departure date, starting at your departure date, for calendarDays days (up to about 11 months, as far as Google sells). For round trips the trip length is kept (e.g. always 7 nights). One row per date.

Input

FieldWhat it is
origin, destinationAirport code (JFK), several (JFK,EWR), a city or country name (New York, Japan), or a metro code (NYC, LON)
departureDate, returnDate2026-11-20, or relative (+30 = 30 days from today, tomorrow). No return date = one-way
routesMore routes in the same run: [{"origin": "LHR", "destination": "JFK", "departureDate": "+45"}]
mode, calendarDaysflights or calendar; number of dates for the calendar (default 60)
adults, children, infantsInSeat, infantsOnLapPassengers (max 9). Prices are the total for everyone
cabinClasseconomy, premium_economy, business, first
maxStopsany, 0 (nonstop), 1, 2
airlinesOnly these airlines (DL, BA) or alliances (ONEWORLD, SKYTEAM, STAR_ALLIANCE)
sortBy, maxResultsbest, price, duration, departure, arrival, emissions; flights per route (max 300)
currency, country, languagee.g. EUR, DE, de
onlyNewSinceLastRun, monitorNameMonitoring: deliver only new or changed prices
{
"origin": "New York",
"destination": "LHR",
"departureDate": "+30",
"returnDate": "+37",
"adults": 2,
"cabinClass": "economy",
"maxStops": "1",
"maxResults": 50,
"includeReturnFlights": true,
"currency": "USD"
}

What data does Google Flights Scraper extract?

Flight rows

FieldWhat it is
price, currency, priceTypeTotal price for all passengers; one_way_total or round_trip_total
isBest, isCheapest, rankGoogle's "top flights" mark, the cheapest fare of this search, position after sorting
airlines, airlineCodes, flightNumberse.g. ["Delta"], ["DL"], ["DL 713"]
departureAirport, arrivalAirport (+ ...Name)IATA codes and airport names
departureDate, departureTime, arrivalDate, arrivalTimeLocal dates and times
departureDateTime, arrivalDateTimeThe same with the airport's UTC offset, e.g. 2026-11-16T22:40:00-08:00
durationMinutes, duration, arrivalDayOffsetTotal travel time; +1 / +2 for overnight arrivals
stops, layovers, layoverAirportsNumber of stops; each layover's airport, city, duration and change of airport
segmentsEvery flight: number, airline, airports, times, duration, aircraft, legroom, codeshares, CO2
co2Kg, co2TypicalKg, co2DiffPercent, emissionsLevelGoogle's emissions estimate vs. typical for the route
typicalPriceLow, typicalPriceHighGoogle's "similar trips usually cost" range
returnFlightWith includeReturnFlights: the return flight (same fields) that makes up the round-trip price
googleFlightsUrl, searchUrlThe itinerary on Google Flights (booking page when the trip is complete) and the search
route, tripType, searchOrigin, searchDestination, cabinClass, passengers, country, languageContext
previousPrice, priceChangeMonitoring mode: the price in the previous run
{
"type": "flight", "route": "JFK -> LAX 2026-11-06", "rank": 1, "isBest": true, "isCheapest": true,
"price": 204, "currency": "USD", "priceType": "one_way_total",
"airlines": ["Delta"], "flightNumbers": ["DL 701"], "departureAirport": "JFK", "arrivalAirport": "LAX",
"departureDateTime": "2026-11-06T14:00:00-05:00", "arrivalDateTime": "2026-11-06T17:12:00-08:00",
"duration": "6 hr 12 min", "stops": 0, "layovers": [], "co2Kg": 240, "co2TypicalKg": 324, "emissionsLevel": "lower",
"typicalPriceLow": 90, "typicalPriceHigh": 260,
"googleFlightsUrl": "https://www.google.com/travel/flights/booking?tfs=..."
}

Price calendar rows

FieldWhat it is
departureDate, weekday, returnDate, tripLengthDaysThe date (and the return date for round trips)
price, currency, priceTypeCheapest fare Google has for that date, total for all passengers
isCheapestThe cheapest date of the range
googleFlightsUrlThat date's search on Google Flights

Every run also saves a free RESULTS_FLAT.csv (one line per row, lists joined) in the run's key-value store, handy for Excel and Google Sheets.

How much does it cost to scrape Google Flights?

Pay per result, platform usage included. Failed, duplicate and unchanged (monitoring) rows are never charged.

Apify planFlights per 1,000Price-calendar dates per 1,000
Free$0.50$0.20
Starter (Bronze)$0.40$0.15
Scale (Silver)$0.30$0.12
Business (Gold) and above$0.25$0.10

A flight row is one itinerary with all its details (with includeReturnFlights, its return flight included at no extra charge). A calendar row is one date's cheapest fare. Examples on the Free plan: 50 flights for one route = $0.025; a 90-day price calendar = $0.018.

Switching from another Google Flights scraper?

Common input names from other Google Flights actors and from SerpApi-style APIs are accepted, so most inputs work as they are:

You may have usedHere
origin / destination, from / to, departure_id / arrival_idorigin / destination (codes, comma lists or city names)
departDate, outbound_date, datedepartureDate (also accepts +30)
return_datereturnDate
searches (a list of routes)routes (searches also works; each entry may use departureDate or departDate)
tripType: "one-way"leave returnDate empty (tripType: "one-way" is honoured too)
travel_class 1-4, cabinClasscabinClass (economy ... first, or 1-4)
max_stops / maxStops 0, 1, 2maxStops (0 = nonstop)
infantsinfantsOnLap (and infantsInSeat)
gl, hl, marketcountry, language
maxItemsmaxResults (per route)
priceGraphDaysmode: "calendar" + calendarDays
deltaModeonlyNewSinceLastRun + monitorName

What you get on top: ISO times with time zones, CO2 vs. typical, Google's best/cheapest marks, run-wide dedup across routes, a price calendar in the same actor, and monitoring that only charges for changed prices. Not here (yet): booking options per airline / travel agency, multi-city trips, explore / "anywhere" destinations.

How to use it

  1. Click Try for free.
  2. Type the route (JFK -> LAX, or New York -> London) and the departure date (+30 = in 30 days). Add a return date for a round trip.
  3. Optionally set passengers, cabin class, stops, airlines, currency.
  4. Click Start and download JSON, CSV or Excel, or read the dataset via API.

Price calendar input

{
"mode": "calendar",
"origin": "LHR",
"destination": "BCN",
"departureDate": "+7",
"returnDate": "+11",
"calendarDays": 120
}

Monitoring: only changed prices

Set onlyNewSinceLastRun: true and a monitorName, then create a schedule. Each run delivers only flights or dates that are new or whose price changed since the previous run with that name, with previousPrice and priceChange. If nothing changed, the run says so ("empty: no price changed since the previous run...") and costs nothing.

Tip: to watch one trip, use fixed dates (2026-12-20). Relative dates move every day, so each day is a new search and everything counts as new. To watch a season, use the price calendar with fixed or relative dates: each date keeps its own price history.

Google Flights API in Python, JavaScript, Make, Zapier, n8n and AI agents

Run it from the Apify API with the Python or JavaScript client, schedule it, or connect it to Make, Zapier, n8n and Google Sheets. AI agents can call it through the Apify MCP server. See the API tab for ready-made code.

from apify_client import ApifyClient # pip install "apify-client>=3"
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("alom/google-flights-scraper").call(run_input={
"origin": "JFK", "destination": "LHR", "departureDate": "+30", "returnDate": "+37", "maxResults": 20,
})
for f in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f["price"], f["airlines"], f["departureDateTime"], f["stops"])

Limitations

  • Prices are what Google Flights shows at the moment of the run. Fares change constantly, and the price on the airline's site can differ (fare rules, bags, seat selection).
  • Up to 300 flights per route and date, Google's complete list. If Google refuses the full list from the proxy IPs for a while, the run still delivers Google's default list (the top 10-35 flights) and logs it.
  • Round trips: the outbound rows carry the cheapest round-trip total. Return flights are an extra request per row (includeReturnFlights), so those runs take longer (about 1 second per row).
  • Not included: booking options per airline / agency ("Book with"), baggage fees, seat maps, multi-city trips, explore ("anywhere") searches, and Google's price-level label (low / typical / high). The "usually costs" range is included.
  • Country and language localise names and links. In our tests the fares themselves did not change with the country; the currency is what changes the numbers.
  • Google Flights sells up to about 11 months ahead; later dates are refused with a clear message.

FAQ

Is there an official Google Flights API? No. Google shut down its QPX Express flight API in 2018, and there is no public API for Google Flights results. This Actor returns what the Google Flights website shows, as structured data.

Is it legal to scrape Google Flights? The Actor reads publicly available flight information without logging in. You are responsible for how you use the data.

Why is the price different on the airline's website? Fares move all the time and Google's price may include or exclude some fees for some airlines. Use the googleFlightsUrl to open the itinerary and its booking options.

Can I search a whole city or country? Yes: New York covers JFK, LGA and EWR; Japan covers every Japanese airport Google offers for the route.

More scrapers from the same developer

Feedback

Missing a field, found a bug, or need a feature? Open an issue in the Issues tab and I'll take a look. If this Actor saved you time, a short review on the Store page helps other people find it.