Google Flights Search Scraper
Pricing
from $0.01 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
32
Total users
4
Monthly active users
9 days ago
Last modified
Categories
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,ORYorJFK,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
Simple One-Way Search
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.
Filtered Search
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
| Parameter | Type | Default | Description |
|---|---|---|---|
departureAirports | string | LAX | IATA 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 |
arrivalAirports | string | JFK | IATA 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 |
outboundDate | string | 30 days out | Departure date in YYYY-MM-DD format. Leave it empty and the search runs 30 days from today |
returnDate | string | Return date in YYYY-MM-DD. Set this for a round-trip; leave empty for one-way | |
multiCityLegs | array | [] | Multi-city itinerary legs. Each leg has departureAirports, arrivalAirports, and date. Overrides the simple route fields when set |
Passengers
| Parameter | Type | Default | Description |
|---|---|---|---|
adults | integer | 1 | Adult passengers (age 12+). Minimum 1 |
children | integer | 0 | Child passengers (ages 2β11) |
infants | integer | 0 | Infant 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
| Parameter | Type | Default | Description |
|---|---|---|---|
maxPrice | integer | no limit | Only 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 |
maxStops | string | "" | "" = any number of stops, "0" = direct only, "1" = up to 1 stop, "2" = up to 2 stops |
airlines | string | Preferred airline IATA codes, comma-separated (e.g. UA,AA,DL) | |
excludeBasicEconomy | boolean | false | Hide basic economy fares (no free carry-on or seat selection) |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
currency | string | "USD" | Currency for prices β 20 ISO 4217 codes supported (USD, EUR, GBP, CAD, AUD, JPY, CHF, INR, CNY, and more) |
language | string | "en" | Result language β 29 options (English, Spanish, French, German, Chinese, Japanese, Arabic, Hindi, and more) |
country | string | "us" | Country market Google searches from β 39 options. Affects available fares and airlines |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
fetchBookingOptions | boolean | false | Include direct booking links with fare family and baggage details. One-way searches only. Each resolved link is billed separately |
maxPages | integer | 1 | How 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
| Field | Type | Description |
|---|---|---|
search_parameters | object | Echo of the resolved search β trip type, routes, dates, passengers, language, country, currency |
search_metadata | object | Aggregate stats β total flights found, best/other counts, pages processed, booking options count |
search_timestamp | string | ISO-8601 timestamp of when this page was fetched |
page_number | integer | 1-indexed page number |
best_flights | object[] | Google's top-recommended flights for this search |
other_flights | object[] | Additional flight options beyond the best picks |
price_insights | object | First page only β tells you whether the current price is low, typical, or high versus history |
airports | object[] | First page only β full details for every airport referenced in the results |
booking_options | object[] | Populated only when fetchBookingOptions=true on a one-way search |
Flight object
| Field | Type | Description |
|---|---|---|
price | number | Price in the chosen currency for all passengers in the search combined, not per person |
airline | string | Primary airline IATA code |
airlineName | string | Full airline name |
departureAirport | string | IATA code of the origin airport |
arrivalAirport | string | IATA code of the final destination |
departureDate | string | YYYY-MM-DD |
departureTime | string | 24-hour local time (HH:MM) |
arrivalDate | string | YYYY-MM-DD |
arrivalTime | string | 24-hour local time (HH:MM) |
durationMinutes | number | Total trip duration in minutes (including layovers) |
stops | number | Number of stops (0 = nonstop) |
flightId | string | Unique identifier for this flight option |
legs | object[] | Per-segment details (airline, flight number, aircraft, times, airports) |
bookingToken | string | Token you can feed back into fetchBookingOptions to resolve direct booking links |
Price insights
| Field | Type | Description |
|---|---|---|
priceLevel | string | "low", "typical", or "high" compared to historical fares |
lowestPrice | number | Lowest price currently available |
typicalPrice | number | Typical price for this route at this time of year |
typicalPriceRange | number[] | [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
| Field | Type | Description |
|---|---|---|
code | string | IATA code (e.g. LAX) |
name | string | Full airport name |
city | string | City name |
country | string | Country 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"andcurrency="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,EWRas 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
maxPagesto 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
maxPricefor the whole party, not one seat β prices are all-passenger totals, so a family of four willing to pay $250 each should setmaxPricearound 1000; setting it to 250 filters almost everything out - Combine
airlineswithexcludeBasicEconomyβ 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.
| Searches | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 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:
| Setting | Flights per search | Cost per search | Cost 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
Legal & Ethical Use
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.