Google Flights Scraper | Fares, Price Calendar & Alerts avatar

Google Flights Scraper | Fares, Price Calendar & Alerts

Pricing

from $1.50 / 1,000 fares

Go to Apify Store
Google Flights Scraper | Fares, Price Calendar & Alerts

Google Flights Scraper | Fares, Price Calendar & Alerts

Scrape Google Flights fares and flights: one-way, round trip, multi-city legs, flexible-date price calendar, Google's low/typical/high verdict and 60-day price history. Monitor mode returns only price drops, with webhook alerts. Plain HTTP.

Pricing

from $1.50 / 1,000 fares

Rating

0.0

(0)

Developer

Alex Morain

Alex Morain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

What does Google Flights Scraper do?

Google Flights Scraper reads Google Flights and returns fares and flights as structured data: one-way, round trip and multi-city legs, a flexible-date price calendar, Google's own low / typical / high price verdict with the usual price range, the 60-day price history of the route and the best time to book. A monitor mode turns a scheduled run into a flight price alert: only the fares that dropped are returned and charged, and a webhook can post them to Slack or Discord.

It works as a Google Flights API alternative over plain HTTP: no browser, no account, no API key. The included datacenter proxy is enough; residential proxies only step in when Google refuses a search again and again, at no extra charge to you.

Why use Google Flights Scraper?

Two things decide whether a Google Flights scraper gives you the truth, and both are measured.

Google refuses searches without saying so. From a datacenter IP, Google answers part of the searches with a normal-looking page (HTTP 200) whose results block is an error. A scraper that does not look for it returns "no flights" for a route that has plenty. We measured it on 50 searches from Apify servers on 18 October 2026:

Same 50 searchesAnswered on the first tryAfter retries on fresh IPs
One fixed datacenter IP30 / 5048 / 50
Apify datacenter proxy, new IP per try (this Actor)44 / 5050 / 50

On a 200-search price calendar run the next day: 200 / 200 priced, 1.09 page requests per search. A search that still fails after every retry comes back as a free row marked failed, never as a silent "no flights".

Google's results page shows a selection, not every flight. On JFK to LAX the page lists 29 flights, all nonstop, while the same page names 14 airlines flying the route. Turn on More results and the Actor also searches each airline of the route and merges the flights: on three test routes it went from 60 to 109 flights. On the routes we checked, the cheapest fare was already on the main page, so you only need it for longer flight lists.

What you can do with it:

  • Fare monitoring and price alerts: schedule a run every morning, get only the drops, or a ping when a route falls under your target price.
  • Price calendars: cheapest fare for each of the next 30, 60 or 90 departure dates, with Google's verdict per date.
  • Travel apps and content: route pages, deal newsletters, "is now a good time to book" widgets built on Google's verdict and history.
  • Market research: airlines on a route, nonstop availability, fares by cabin and by date, CO2 per itinerary.

Every Apify feature applies: scheduling, API access, webhooks, integrations with Make, Zapier, n8n or Google Sheets, proxy rotation and run monitoring.

What data can Google Flights Scraper extract?

The dataset has two kinds of rows. A fare row is one priced search (a route and its dates). A flight row is one flight option of that search.

FieldRowDescription
cheapestPricefareCheapest fare for the search, all travellers, after your filters
priceLevelfareGoogle's verdict: low, typical or high
typicalPriceLow / typicalPriceHighfareThe price range Google considers usual for this trip
priceHistoryfareLowest fare of the route for this date, day by day over ~60 days
cheapestBookingWindowfareWhen this trip is usually cheapest to book (days before departure)
airlinesOnRoute, nonstopAvailablefareAirlines flying the route, nonstop or not
previousPrice, priceChange, isPriceDropfareMonitor mode: what changed since the last run
price, airlines, flightNumbersflightFare, airlines and flight numbers
departureTime, arrivalTime, durationMinutes, stopsflightSchedule and connections
legs, layoversflightEach flight with aircraft, legroom, airports; each layover with its duration
co2Grams, co2LabelflightEmissions estimate and how it compares to the route
returnFlightflightRound trips: the matching return flight
bookingUrlflightGoogle Flights page of that exact itinerary, with the airlines and agencies selling it

How to scrape Google Flights

  1. Open the Actor and add one line per trip in Searches: CDG JFK 2026-12-03 2026-12-10. Codes are IATA airport codes (JFK, LHR) or city codes (NYC, PAR, LON cover every airport of the city).
  2. Leave the dates out of a line to use Depart in N days and Trip length instead, the right choice for scheduled runs. For a single trip you can also use From, To and Departure date.
  3. For a price calendar, set Flexible dates to the number of extra departure dates to price.
  4. Set the cabin, travellers and filters you need.
  5. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them through the API.
  6. For price alerts, save the input as a task, set Monitor mode to drops and schedule the task daily.

How much does it cost to scrape Google Flights?

Pay per result, prices for the Apify Free plan (larger plans pay less, down to $0.0015 a fare and $0.0003 a flight):

EventPrice
Run start$0.002
Fare (one priced search, one calendar date)$0.003
Flight (one flight row)$0.0005

Searches with no flights, searches Google refused, unchanged fares in monitor mode and the multi-city total row are free.

Examples: one search with its ~20 flights costs about $0.015. A 30-day price calendar with fares only costs $0.092. Watching 50 routes every morning in drops mode costs $0.002 a day plus $0.003 per alert.

Input

See the input tab for every option. The filters split in two groups. Stops, airlines, alliances, connecting airports and layover durations are applied by Google. Excluded airlines, maximum price, maximum duration and time windows are applied by the Actor to the flights Google returns, because Google ignores them on its side.

Example input for a round trip with return flights and a 14-day calendar:

{
"origin": "CDG",
"destination": "JFK",
"departureDate": "2026-12-03",
"returnDate": "2026-12-10",
"flexibleDays": 13,
"maxStops": "1",
"returnFlightsForTop": 2,
"currency": "EUR"
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. A fare row and a flight row, shortened:

[
{
"type": "fare",
"tripType": "round-trip",
"origin": "CDG",
"destination": "JFK",
"departureDate": "2026-12-03",
"returnDate": "2026-12-10",
"currency": "USD",
"cheapestPrice": 545,
"priceLevel": "typical",
"typicalPrice": 684,
"typicalPriceLow": 475,
"typicalPriceHigh": 930,
"savingsVsTypical": 139,
"cheapestBookingWindow": {"from": "2026-05-17", "to": "2026-08-15", "daysBeforeDepartureFrom": 200, "daysBeforeDepartureTo": 110},
"priceHistory": [{"date": "2026-08-19", "price": 612}, {"date": "2026-08-20", "price": 598}],
"flightsFound": 18,
"status": "ok"
},
{
"type": "flight",
"rank": 1,
"price": 552,
"currency": "USD",
"priceIncludes": "round trip, all travellers",
"airlines": ["AA"],
"flightNumbers": ["AA 43"],
"stops": 0,
"durationMinutes": 500,
"departureTime": "2026-12-03T11:25",
"arrivalTime": "2026-12-03T13:45",
"returnFlight": {"flightNumbers": ["AA 42"], "departureTime": "2026-12-10T18:00", "stops": 0},
"bookingUrl": "https://www.google.com/travel/flights/booking?tfs=..."
}
]

Tips and advanced options

  • Fares only is the cheap setting. Turn off Include flight details for calendars and monitoring: you get the cheapest price, the verdict and the history without paying for 20 flight rows per search.
  • Round trips: Google prices a round trip on the outbound flight. The outbound rows carry the round-trip total. Set Return flights for the top N to get the actual return flights of the first N outbounds.
  • Multi-city: Google serves multi-city fares only inside its own app. The Actor prices each leg as a one-way ticket and adds a free row with the sum of the cheapest legs.
  • Rolling dates in monitor mode: with Depart in N days, the memory follows "N days ahead" from one run to the next, so a daily task alerts when the fare for a trip a month out drops. With fixed dates and Flexible dates, past dates are skipped and the task keeps running until the last date.
  • Monitor memory: runs with the same searches share their memory automatically. Set Monitor memory name to share it between tasks or to start over.
  • Webhook: the summary carries text and content fields, so a Slack or Discord incoming webhook URL works without any glue.
  • Calling it from code (Python):
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("alexmorain/google-flights-scraper").call(run_input={
"searches": ["JFK LAX 2026-12-01", "SFO NRT 2026-12-05 2026-12-19"],
"includeFlights": False,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["origin"], row["destination"], row["cheapestPrice"], row["priceLevel"])

FAQ, disclaimers and support

Does it need a Google account, an API key or residential proxies?

No. It reads the public Google Flights results page over HTTP through Apify's datacenter proxy. If Google keeps refusing a search, the Actor retries it through residential proxies by itself, at no extra charge to you.

Why are there fewer flights than on the Google Flights website?

Google's page shows a selection and loads the rest when you click "more flights". Turn on More results to search each airline of the route as well. Booking options with every agency's price are loaded the same way and are not in the dataset: the bookingUrl opens that page.

From today up to 330 days ahead, like Google Flights. Dates outside that window are rejected before the run spends anything.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. Google Flights results contain no personal data.

Something is wrong or missing

Open an issue in the Issues tab: it gets read and answered. For programmatic access, see the API tab.