Google Flights Search Scraper avatar

Google Flights Search Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Google Flights Search Scraper

Google Flights Search Scraper

[πŸ’°Cheap, reliable and fast] Search Google Flights for one-way, round-trip, and multi-city trips. Filter by price, stops, and airlines, pull direct booking links from airlines and travel agencies, and get every result as clean, ready-to-use data.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

4

Monthly active users

9 days ago

Last modified

Share

Extract real-time flight prices, airlines, schedules, and routes from Google Flights at scale. Search one-way, round-trip, or complex multi-city itineraries with full control over passengers, filters, currency, and locale β€” and get clean, structured JSON every time.

Why This Scraper?

  • Full trip-type coverage β€” One-way, round-trip, and multi-city searches with 2+ legs all in a single actor
  • Multi-airport support β€” Search across several origin or destination airports at once (e.g. CDG,ORY or JFK,LGA,EWR)
  • Rich flight details β€” Price, airline, flight number, aircraft type, departure and arrival times, layovers, total duration, and stop count for every leg
  • Party-total pricing β€” Every price covers all passengers in the search combined, so a 2-adult, 2-child query returns the real family total instead of a single-seat teaser fare
  • Powerful filters β€” Cap maximum price, restrict to specific airlines, limit stops (nonstop only, up to 1 stop, up to 2), and hide basic economy fares
  • 29 languages Γ— 39 countries Γ— 20 currencies β€” Pull results the way your target traveller sees them
  • Price insights included β€” First-page results tell you whether the current price is low, typical, or high versus the historical average, plus the lowest price available
  • Airport directory β€” Every referenced airport comes back with full name, city, and country β€” no extra lookups needed
  • Non-technical input β€” Friendly labels and dropdowns for languages, countries, currencies, and stop limits; no need to remember Google's internal codes

Use Cases

Travel & Fare Monitoring

  • Track prices on specific routes over time to identify the best booking windows
  • Monitor competitor fares for OTA and metasearch pricing strategies
  • Build fare alert systems that notify users when prices drop

Travel Agencies & OTAs

  • Compare airline offers across multiple routes and dates in seconds
  • Populate search results for travel booking sites and mobile apps
  • Feed live fare data into CRM systems for personalised customer offers

Market Research & Analytics

  • Analyse price trends between city pairs, seasons, or airlines
  • Study how fares shift across currencies, booking country, or trip type
  • Benchmark basic economy vs. main cabin pricing across carriers

Corporate Travel & Expense Management

  • Audit booked fares against live market prices for policy compliance
  • Surface cheaper alternatives for frequent business routes
  • Build internal dashboards comparing travel spend to real-time market rates

Product Development & Data Enrichment

  • Enrich itinerary databases with live pricing, durations, and layover details
  • Power route-planning tools with accurate multi-city trip data
  • Feed ML models with structured historical fare and availability signals

Getting Started

The minimum input β€” origin, destination, and a date:

{
"departureAirports": "LAX",
"arrivalAirports": "JFK",
"outboundDate": "2026-08-15"
}

Round-Trip with Passengers

Add a return date to run a round-trip search:

{
"departureAirports": "SFO",
"arrivalAirports": "SEA",
"outboundDate": "2026-09-10",
"returnDate": "2026-09-17",
"adults": 2,
"children": 1
}

Every price that comes back covers all three passengers together, not one seat.

Cap price, limit stops, and restrict to specific airlines:

{
"departureAirports": "LHR",
"arrivalAirports": "JFK,EWR",
"outboundDate": "2026-10-05",
"returnDate": "2026-10-19",
"maxPrice": 800,
"maxStops": "0",
"airlines": "BA,AA,VS",
"excludeBasicEconomy": true,
"currency": "GBP",
"country": "uk",
"language": "en"
}

Multi-City Itinerary

Build a custom multi-leg trip by listing each leg:

{
"multiCityLegs": [
{ "departureAirports": "LAX", "arrivalAirports": "JFK", "date": "2026-07-10" },
{ "departureAirports": "JFK", "arrivalAirports": "MIA", "date": "2026-07-15" },
{ "departureAirports": "MIA", "arrivalAirports": "LAX", "date": "2026-07-22" }
],
"adults": 1,
"currency": "USD"
}

When multiCityLegs is provided, the simple route fields above are ignored.

Input Reference

Route

ParameterTypeDefaultDescription
departureAirportsstringLAXIATA airport codes to depart from, comma-separated (e.g. LAX or CDG,ORY). Clearing the field stops the run rather than searching a different route
arrivalAirportsstringJFKIATA airport codes to arrive at, comma-separated (e.g. JFK or LAX,SEA). Clearing the field stops the run rather than searching a different route
outboundDatestring30 days outDeparture date in YYYY-MM-DD format. Leave it empty and the search runs 30 days from today
returnDatestringReturn date in YYYY-MM-DD. Set this for a round-trip; leave empty for one-way
multiCityLegsarray[]Multi-city itinerary legs. Each leg has departureAirports, arrivalAirports, and date. Overrides the simple route fields when set

Passengers

ParameterTypeDefaultDescription
adultsinteger1Adult passengers (age 12+). Minimum 1
childreninteger0Child passengers (ages 2–11)
infantsinteger0Infant passengers (under 2)

Prices in the results are always the total for everyone in the search combined. Two adults plus two children means every price you get back is the four-passenger total, not a per-seat fare.

Filters

ParameterTypeDefaultDescription
maxPriceintegerno limitOnly return flights at or below this price, in the chosen currency. Measured against the all-passenger total, not the per-person fare β€” a 4-passenger search needs roughly 4Γ— the per-seat budget. Leave it empty for no limit; 0 is refused up front instead of returning nothing
maxStopsstring"""" = any number of stops, "0" = direct only, "1" = up to 1 stop, "2" = up to 2 stops
airlinesstringPreferred airline IATA codes, comma-separated (e.g. UA,AA,DL)
excludeBasicEconomybooleanfalseHide basic economy fares (no free carry-on or seat selection)

Localization

ParameterTypeDefaultDescription
currencystring"USD"Currency for prices β€” 20 ISO 4217 codes supported (USD, EUR, GBP, CAD, AUD, JPY, CHF, INR, CNY, and more)
languagestring"en"Result language β€” 29 options (English, Spanish, French, German, Chinese, Japanese, Arabic, Hindi, and more)
countrystring"us"Country market Google searches from β€” 39 options. Affects available fares and airlines

Options

ParameterTypeDefaultDescription
fetchBookingOptionsbooleanfalseInclude direct booking links with fare family and baggage details. One-way searches only. Each resolved link is billed separately
maxPagesinteger1How many result batches to collect. Page 1 is the shortlist (20–35 flights); page 2 adds every remaining flight held behind Google's "show more flights" link, often 3–5Γ— as many. Nothing exists after page 2

Output

Each dataset item represents one page of results. Here's a trimmed example:

{
"search_parameters": {
"tripType": "one-way",
"legs": [
{ "departureAirports": ["LAX"], "arrivalAirports": ["JFK"], "date": "2026-08-15" }
],
"passengers": { "adults": 1, "children": 0, "infants": 0 },
"language": "en",
"country": "us",
"currency": "USD"
},
"search_metadata": {
"total_flights_found": 25,
"best_flights_count": 3,
"other_flights_count": 22,
"pages_processed": 1,
"booking_options_count": 0
},
"search_timestamp": "2026-04-20T22:15:00+00:00",
"page_number": 1,
"best_flights": [
{
"price": 174,
"airline": "B6",
"airlineName": "JetBlue",
"departureAirport": "LAX",
"arrivalAirport": "JFK",
"departureDate": "2026-08-15",
"departureTime": "20:50",
"arrivalDate": "2026-08-16",
"arrivalTime": "05:25",
"durationMinutes": 335,
"stops": 0,
"flightId": "OriFxc",
"legs": [
{
"airline": "B6",
"airlineName": "JetBlue",
"flightNumber": "424",
"aircraft": "Airbus A321",
"departureAirport": "LAX",
"arrivalAirport": "JFK",
"departureDate": "2026-08-15",
"departureTime": "20:50",
"arrivalDate": "2026-08-16",
"arrivalTime": "05:25",
"durationMinutes": 335
}
],
"bookingToken": "CjRIMXV1M21..."
}
],
"other_flights": [ "..." ],
"price_insights": {
"priceLevel": "high",
"lowestPrice": 174,
"typicalPrice": 139,
"typicalPriceRange": [125, 190]
},
"airports": [
{ "code": "LAX", "name": "Los Angeles International Airport", "city": "Los Angeles", "country": "US" },
{ "code": "JFK", "name": "John F. Kennedy International Airport", "city": "New York", "country": "US" }
]
}

All Available Fields

Top-level

FieldTypeDescription
search_parametersobjectEcho of the resolved search β€” trip type, routes, dates, passengers, language, country, currency
search_metadataobjectAggregate stats β€” total flights found, best/other counts, pages processed, booking options count
search_timestampstringISO-8601 timestamp of when this page was fetched
page_numberinteger1-indexed page number
best_flightsobject[]Google's top-recommended flights for this search
other_flightsobject[]Additional flight options beyond the best picks
price_insightsobjectFirst page only β€” tells you whether the current price is low, typical, or high versus history
airportsobject[]First page only β€” full details for every airport referenced in the results
booking_optionsobject[]Populated only when fetchBookingOptions=true on a one-way search

Flight object

FieldTypeDescription
pricenumberPrice in the chosen currency for all passengers in the search combined, not per person
airlinestringPrimary airline IATA code
airlineNamestringFull airline name
departureAirportstringIATA code of the origin airport
arrivalAirportstringIATA code of the final destination
departureDatestringYYYY-MM-DD
departureTimestring24-hour local time (HH:MM)
arrivalDatestringYYYY-MM-DD
arrivalTimestring24-hour local time (HH:MM)
durationMinutesnumberTotal trip duration in minutes (including layovers)
stopsnumberNumber of stops (0 = nonstop)
flightIdstringUnique identifier for this flight option
legsobject[]Per-segment details (airline, flight number, aircraft, times, airports)
bookingTokenstringToken you can feed back into fetchBookingOptions to resolve direct booking links

Price insights

FieldTypeDescription
priceLevelstring"low", "typical", or "high" compared to historical fares
lowestPricenumberLowest price currently available
typicalPricenumberTypical price for this route at this time of year
typicalPriceRangenumber[][min, max] typical price band

Like price, every figure here covers all passengers in the search combined, so it scales with your passenger count.

Airport

FieldTypeDescription
codestringIATA code (e.g. LAX)
namestringFull airport name
citystringCity name
countrystringCountry code

Tips for Best Results

  • Use future dates within the next 12 months β€” Google Flights rarely returns results for dates more than a year out
  • Match currency and country to your use case β€” a search with country="uk" and currency="GBP" shows fares and airlines as a UK traveller would see them, which can differ significantly from the US view
  • Leverage multi-airport search β€” JFK,LGA,EWR as a single origin often surfaces cheaper or more convenient options than any single airport alone
  • Start with maxStops="0" for premium routes β€” nonstop filters cut noise on busy business routes and reveal only the most attractive fares
  • Set maxPages to 2 when you want the whole market β€” page 1 is the shortlist most travellers see, page 2 unlocks the full list (a New York to London search grows from 24 flights to 79); leave it at 1 when you only need the headline options
  • Budget maxPrice for the whole party, not one seat β€” prices are all-passenger totals, so a family of four willing to pay $250 each should set maxPrice around 1000; setting it to 250 filters almost everything out
  • Combine airlines with excludeBasicEconomy β€” perfect for corporate travel auditing or loyalty-program-aware fare monitoring

Pricing

From $0.05 per flight search β€” $50 per 1,000 searches on the Gold tier. You pay a small fee when a run starts plus a fixed fee for each page of results collected. There are no compute or time-based charges, and pages that come back empty or fail are never charged.

One search covers one route and one date (or one multi-city itinerary) and returns 20–35 flights on the first page. Each search adds one row to your dataset holding every flight it found. Bronze, Silver, and Gold subscribers pay progressively less; the table shows the all-in cost of a default single-page search at each discount tier.

SearchesNo discountBronzeSilverGold
100$6.00$5.70$5.30$5.00
1,000$60.00$57.00$53.00$50.00
10,000$600.00$570.00$530.00$500.00
100,000$6,000.00$5,700.00$5,300.00$5,000.00

You are billed per page, not per flight, so the fuller the page, the less each flight costs:

SettingFlights per searchCost per searchCost per 1,000 flights
maxPages: 1 (default)20–35$0.06$1.70–$3.00
maxPages: 2 (full market)79–135$0.08$0.60–$1.00

Collecting the second page costs a third more per search and typically returns three to five times as many flights, which makes it the cheaper way to buy volume.

Booking links are the one costly option. With fetchBookingOptions switched on for a one-way search, every resolved link is charged at $0.02 and a typical search resolves 80–120 of them, adding roughly $1.60–$2.40 to that one search. Leave it off unless you need the direct booking URLs.

Figures above assume the default run size, and the start portion of the fee scales with it β€” a smaller run costs less to start. Standard Apify platform fees apply on top.

Integrations

Export results in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n β€” Workflow automation
  • Google Sheets β€” Direct spreadsheet export
  • Slack / Email β€” Notifications on new results
  • Webhooks β€” Custom API integrations
  • Apify API β€” Full programmatic access to runs and datasets

This actor is designed for legitimate fare monitoring, travel research, pricing analysis, and data enrichment. Users are responsible for complying with applicable laws and Google's Terms of Service. The data returned is publicly available flight pricing β€” do not use it for spam, resale-as-inventory, or any deceptive purpose.