Google Flights Scraper — Fares, Routes, Booking Links
Pricing
from $3.00 / 1,000 flight itinerary returneds
Google Flights Scraper — Fares, Routes, Booking Links
Scrape Google Flights for one-way and round-trip itineraries. Prices, airlines, stops, layovers, aircraft, carbon emissions, and direct booking deeplinks. MCP-ready.
Pricing
from $3.00 / 1,000 flight itinerary returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Google Flights Scraper is an Apify Actor for travel apps, automation workflows, and AI agents that need Google Flights itineraries from a single search request. It accepts origin and destination airport codes, a departure date, and optional trip, passenger, market, and result-limit settings. Each dataset record represents one flight itinerary and can include price, airlines, stops, total duration, carbon estimates, booking URLs, and the Google Flights search URL. This Actor is usable through Apify MCP. This Actor is designed as a focused workflow.
Best fit and connected workflows
This Actor fits workflows that start with a route and date, then need structured flight options for comparison, routing, or downstream automation.
Common ways to use it:
- Fare tracking for a specific origin-destination pair
- Travel planning that combines flight options with lodging or local events
- Agent workflows that need one record per itinerary and a direct booking deeplink
- Market-specific searches where
country,currency, andlanguageshape the returned Google Flights view - Round-trip or one-way searches with passenger counts and cabin filters
If your workflow later expands into destination research, accommodation search, or itinerary enrichment, this Actor can sit at the flight-search step and feed the next stage with structured itinerary rows.
Practical scenario
Priya is planning a business trip from LAX to JFK. She starts with the airport codes, a future departure date, one adult passenger, and economy cabin. The dataset returns itineraries with price, airlines, stops, totalDurationMinutes, carbonKg, isBestFlight, and bookingUrl. Priya compares the duration and stops, then opens the direct booking link for the itinerary that fits her schedule.
Input
The Actor accepts these fields from the live schema. Required fields are origin, destination, and departureDate.
| Field | Type | Required | Purpose |
|---|---|---|---|
origin | string | Yes | Origin airport IATA code, 3 uppercase letters |
destination | string | Yes | Destination airport IATA code, 3 uppercase letters |
departureDate | string | Yes | Outbound date in YYYY-MM-DD format |
returnDate | string | No | Return date in YYYY-MM-DD format for round trips |
adults | integer | No | Adult passengers, default 1 |
children | integer | No | Child passengers, default 0 |
infantsInSeat | integer | No | Infants with their own seat, default 0 |
infantsOnLap | integer | No | Lap-held infants, default 0 |
cabinClass | string | No | economy, premium_economy, business, or first |
maxStops | integer | No | Maximum stops, from 0 to 2 |
currency | string | No | ISO 4217 currency code |
country | string | No | Google search market, such as us or uk |
language | string | No | Response language code |
maxResults | integer | No | Maximum itineraries per run, up to 200 |
Focused JSON example:
{"origin": "LAX","destination": "JFK","departureDate": "2026-08-15","returnDate": "2026-08-22","adults": 1,"children": 0,"infantsInSeat": 0,"infantsOnLap": 0,"cabinClass": "economy","maxStops": 1,"currency": "USD","country": "us","language": "en","maxResults": 30}
Output
Each dataset row is one flight itinerary returned by Google Flights.
| Field | Type | Meaning |
|---|---|---|
searchId | string | Stable hash of the search inputs |
tripType | string | one_way or round_trip |
origin | string | Origin IATA code |
destination | string | Destination IATA code |
departureDate | string | Outbound date |
returnDate | string or null | Return date, or null on one-way searches |
price | number or null | Total trip price for the selected passengers |
currency | string | Currency code for price |
isBestFlight | boolean | True when Google places the itinerary in the suitable Flights section |
cabinClass | string | Cabin searched |
totalDurationMinutes | number or null | Total trip duration including layovers |
stops | number | Total stops across the itinerary |
airlines | array of string | Distinct airline names across all legs |
outbound | object | Outbound leg details |
return | object or null | Return leg details, or null on one-way searches |
carbonKg | number or null | Estimated CO2 emissions per passenger |
carbonVsTypical | string or null | Emissions relative to a typical flight on the route |
bookingUrl | string or null | Direct Google Flights URL for the itinerary |
googleFlightsUrl | string | Google Flights search URL for the result set |
scrapedAt | string | ISO 8601 timestamp of the scrape |
Illustrative JSON record:
{"searchId": "a1b2c3d4e5f6","tripType": "round_trip","origin": "LAX","destination": "JFK","departureDate": "2026-08-15","returnDate": "2026-08-22","price": 487,"currency": "USD","isBestFlight": true,"cabinClass": "economy","totalDurationMinutes": 720,"stops": 0,"airlines": ["Delta"],"outbound": {"origin": "LAX","destination": "JFK"},"return": {"origin": "JFK","destination": "LAX"},"carbonKg": 412,"carbonVsTypical": null,"bookingUrl": null,"googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=...","scrapedAt": "2026-05-16T18:00:00.000Z"}
How it works
This Actor uses a SerpAPI backend to fetch Google Flights search results. The live contract shows a pure HTTP implementation with Node 24 and the Apify SDK, 512 MB default memory, and no browser stack. The actor writes flight itineraries to the default dataset and exposes dataset and CSV links in its output schema. The pay-per-event contract includes actor start, search completed, and flight itinerary returned events.
Pricing
This Actor uses Pay per event pricing plus Apify platform usage. Open the live Pricing tab on the Actor page for the current pricing view.
The live contract defines these chargeable events:
Actor StartSearch completedFlight itinerary returned
For planning, think in terms of search volume and itinerary count. For example, a run that returns ten itineraries is billed for one search completed event and ten flight itinerary returned events, plus the actor start event. That makes the cost shape easy to estimate from the number of itineraries you expect to save.
Use with AI agents (MCP)
This Actor is available as an Apify Actor through Apify MCP, so an agent can pass structured flight-search inputs and read structured itinerary records from the dataset.
Tool description:
- Search Google Flights for one-way and round-trip itineraries and return structured fare, route, booking, and emissions fields.
Tool identity:
khadinakbar/google-flights-scraper
Typical agent prompt:
Search Google Flights itineraries from LAX to JFK for a future departure date, returning economy results for one adult. Include price, airlines, stops, duration, carbon estimate, booking URL, and the full Google Flights search URL.
How to interpret the output:
searchIdgroups records from the same input combination.tripTypeindicates whether the search is one-way or round-trip.isBestFlightmarks itineraries Google places in the suitable Flights section.bookingUrlis the direct itinerary link when present.googleFlightsUrlis the search-level link for the full result set.outboundandreturnhold the leg-level structure for one-way and round-trip searches.scrapedAtis the provenance timestamp for the record.
Scope and provenance guidance:
- The Actor returns Google Flights itinerary data for the input route, date, passengers, cabin, market, and language settings.
- Each dataset row corresponds to one itinerary saved from that search.
- Result volume and cost both scale with the number of itineraries saved to the dataset.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/google-flights-scraper').call({origin: 'LAX',destination: 'JFK',departureDate: '2026-08-15',returnDate: '2026-08-22',adults: 1,cabinClass: 'economy',currency: 'USD',country: 'us',language: 'en',maxResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(items);
Best results and outcome guidance
For the most focused searches, start with exact airport codes, a future departureDate, and the smallest maxResults that still covers the itineraries you need. Use country to select the Google search market and currency to control the displayed fare currency. Set maxStops when you want to narrow the returned itineraries by connection count. For round trips, keep returnDate on or after departureDate.
Continue the workflow
- Then use Hotels.com Scraper to extend Google Flights Scraper — Fares, Routes, Booking Links with a neighboring travel and hospitality research source when the brief calls for Hotels data.
- Then use Expedia Hotels Scraper — Prices, Ratings & Reviews to extend Google Flights Scraper — Fares, Routes, Booking Links with a neighboring travel and hospitality research source when the brief calls for Expedia data.
Design note
I found that the dataset contract always includes bookingUrl and googleFlightsUrl, while bookingUrl can be null and googleFlightsUrl stays present for every record. That makes the search-level link a consistent fallback for downstream workflows.
FAQ
When should I use origin and destination as airports instead of cities?
Use airport IATA codes because the input schema is defined around 3-letter airport codes. For multi-airport cities, choose the specific airport you want returned.
How do I route one-way and round-trip searches?
Leave returnDate empty for one-way searches. Provide a return date for round trips.
What tells me which itinerary Google highlights first?
Check isBestFlight. It marks itineraries Google places in the suitable Flights section.
How should I use country and currency together?
Use country for Google's search market and currency for the displayed fare currency. They serve different parts of the search request.
What should I read first when I only need one decision field?
Start with price, stops, totalDurationMinutes, airlines, and bookingUrl. Those fields support quick itinerary comparison and follow-up booking.
Responsible use
Use this Actor in ways that fit your organization's policies, Google Flights terms, and applicable law. Keep requests scoped to the routes, dates, and passenger counts you need, and review the returned itinerary data before using it in automated decision-making or customer-facing flows.