Google Flights Scraper avatar

Google Flights Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Google Flights Scraper

Google Flights Scraper

Scrape Google Flights search results with price, airline, departure/arrival times, duration, stops. One-way + round-trip + cabin class + airline filters: maxLayoverMinutes, directOnly, excludeBasicEconomy.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(8)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

8

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Search Google Flights and emit one structured record per flight option — price, airline, departure/arrival times, duration, and stop count. One-way and round-trip in 4 cabin classes. Pro filters narrow the result set to exactly the flights you want.

What this actor does

  • Builds a Google Flights search URL from your airports + dates + cabin class
  • Drives a headless Chromium (Playwright) through Apify residential proxy
  • Dismisses cookie banners and "Show more flights" buttons
  • Parses each flight option from the rendered DOM aria-labels
  • Applies Pro filters (airline, stops, layover, duration, fare type)
  • Emits one record per flight option

Output per flight option

  • price (integer, normalised to your currency input), currency
  • airline (display name), airlineCode (IATA, when resolvable)
  • flightNumber (when extractable)
  • departureAirport (IATA), departureTime
  • arrivalAirport (IATA), arrivalTime
  • durationMinutes, pricePerHour (derived)
  • stops
  • cabin, outboundDate, returnDate (echoed from input)
  • priceBelowThreshold — only when priceAlertThresholdUsd is set
  • recordType: "flight", scrapedAt

Empty fields are omitted from the output (no nulls).

Input

FieldTypeDefaultDescription
originAirportstringJFKOrigin IATA (3 letters)
destinationAirportstringLHRDestination IATA
outboundDatestring30 days aheadDeparture date YYYY-MM-DD
returnDatestringReturn date — empty for one-way
adultsint1Adult passengers (1–9)
childrenint0Child passengers (0–9)
infantsint0Infant passengers (0–9)
cabinClassenumeconomyeconomy / premium_economy / business / first
currencyenumUSDDisplay currency
languageenumenGoogle Flights UI language
countryenumUSgl country code
maxStopsenumanyany / nonstop / one_stop / two_or_fewer
airlinesarray[]IATA airline allowlist (e.g. ["UA","DL"])
excludeAirlinesarray[]IATA airline blocklist
maxResultsint50Hard cap on emitted records
minPriceintDrop flights below this price (in chosen currency)
maxPriceintDrop flights above this price
directOnlyboolfalseAlias for maxStops=nonstop
maxLayoverMinutesintDrop connections with a layover longer than this
maxDurationMinutesintDrop flights longer than this many minutes
excludeBasicEconomyboolfalseDrop fares labelled Basic / Light / Saver
priceAlertThresholdUsdnumberTag flights at-or-below this price with priceBelowThreshold: true
useApifyProxybooltrueRoute through Apify residential proxy (recommended)

Example: cheapest round-trip JFK → LHR

{
"originAirport": "JFK",
"destinationAirport": "LHR",
"outboundDate": "2026-06-15",
"returnDate": "2026-06-22",
"cabinClass": "economy",
"directOnly": true,
"maxResults": 25
}

Example: business-class SFO → HND with airline allowlist

{
"originAirport": "SFO",
"destinationAirport": "HND",
"outboundDate": "2026-09-10",
"returnDate": "2026-09-25",
"cabinClass": "business",
"airlines": ["NH", "JL", "UA"],
"maxLayoverMinutes": 240
}

Example: one-way budget search with price alert

{
"originAirport": "LAX",
"destinationAirport": "MEX",
"outboundDate": "2026-04-30",
"cabinClass": "economy",
"maxResults": 50,
"priceAlertThresholdUsd": 200
}

Use cases

  • Travel-deal alerts — daily run with priceAlertThresholdUsd, push the matched flights to Slack
  • Corporate travel benchmarking — weekly export of business-class prices on key routes
  • Price-tracking dashboards — feed each flight option into a time-series store
  • Itinerary planning — combine with a hotel scraper for end-to-end trip cost
  • Frequent-flyer comparison — enrich with our flight-award-scraper-pro to compare cash vs. miles

FAQ

Does it require a login or cookies? No.

Why does it need an Apify residential proxy? Google rate-limits cloud datacenter IPs aggressively on Flights URLs — without a residential exit you'll typically hit a 429 or captcha. The actor uses Apify residential by default.

Why is airlineCode sometimes missing? Some airlines aren't in our name → IATA lookup yet (we cover ~50 carriers). The display name is always populated when extracted; the code is best-effort.

Why does the run sometimes return 0 flights? Causes (in order of likelihood): (1) Google captcha blocked the page (rotate proxy and retry), (2) the route has no flights on those dates, (3) every flight was filtered out by your Pro filters, (4) Google's DOM changed faster than our extraction. The status message tells you which.

Are multi-city itineraries supported? Not in this MVP. Use multiple separate runs with different origin/destination/date pairs.

Can I get a direct booking link? Booking-deeplink resolution is on the roadmap — Google Flights routes booking through an OTA selector that requires deeper interaction. The current actor returns the price/airline/duration/stops you need to make booking decisions.

What's the difference between economy and excludeBasicEconomy? cabinClass=economy searches the economy cabin (covers Basic, Main, and Premium variants). excludeBasicEconomy drops the cheapest fares within that cabin (those labelled Basic / Light / Saver) — useful when you want a reliable Main Cabin baseline.

Is the price guaranteed? No. Google Flights prices are advisory; the actual price is set by the airline / OTA at booking time. We capture the displayed price at scrape time.