Google Flights Scraper - Most Comprehensive avatar

Google Flights Scraper - Most Comprehensive

Pricing

from $0.05 / 1,000 flights

Go to Apify Store
Google Flights Scraper - Most Comprehensive

Google Flights Scraper - Most Comprehensive

🔥 ~$0.05/1K flights 🔥 Search one-way, round-trip, and multi-city flights, compare flexible dates and destinations, and add optional booking choices.

Pricing

from $0.05 / 1,000 flights

Rating

0.0

(0)

Developer

Kai

Kai

Maintained by Community

Actor stats

3

Bookmarked

799

Total users

285

Monthly active users

6 days ago

Last modified

Share

Search Google Flights for one-way, round-trip, and multi-city trips. Each flight has the total price, duration, stops, airlines, and every segment with flight number, aircraft, airports, local times, layovers, and CO2 emissions. Add flexible-date prices, priced destinations, and booking choices from airlines and travel sites. The Actor also keeps Google's original data with the results.

Search one route or a batch of 20. Search several airports together, such as JFK,EWR,LGA, or paste a Google Flights link. Filter by stops, price, duration, airline or alliance, and departure and arrival times. Choose the cabin, the passengers, the currency, the country, and the language. A one-way search takes about 3 seconds. A round trip with 28 booking lookups takes about 30 seconds. Starting at $0.05 per 1,000 flights.

What can you do with it?

  • Fare comparison. Compare prices across airlines, stops, and times for one route, and sort by price, duration, or time.
  • Price monitoring. Run your routes every day or week, and save the price with the run date. Match the same flight between runs with the flight numbers and the departure times.
  • Cheapest day to fly. Add Calendar prices to see the price of every date around your travel dates, for one-way trips and for round trips with a fixed stay.
  • Flexible trip ideas. Find priced destinations from an airport for a weekend, a week, or two weeks, in one month or in the next six months.
  • Booking links and provider prices. Get the offers from airlines and travel sites for a flight, with the price, the booking form, and the baggage policy link.
  • Multi-city trips. Price one ordered journey with up to 20 legs and one total price.
  • Metro-area searches. Search all airports of a city together, such as JFK,EWR,LGA or LHR,LGW,STN.
  • Family and group trips. Set adults, children, infants on a lap, and infants in a seat. The prices cover everyone.
  • Red-eye and time-window searches. Keep only the flights that leave or land in your hours, also across midnight.
  • Nonstop and alliance searches. Keep only nonstop flights, or only Star Alliance, Oneworld, or SkyTeam flights.
  • Market comparison. Run the same route with another country, language, and currency to see how Google shows it in that market.
  • Travel-tech data feeds. Load clean flight JSON into your own app, and keep Google's original data for your own parsing.
  • Import a search. Paste a link from Google Flights and the Actor reads the route, dates, cabin, passengers, and market from it.
  • Cost control. Limit the flights for each route and the booking lookups, and set a maximum cost for the run.

What data does it extract?

DataWhen you get it
Route, departure date, return date, trip type, and cabinEvery flight
Total price and currency for all passengersEvery flight. The price is null when Google shows a schedule without a fare.
Total duration and stops for all legsEvery flight
Airlines and airline codesEvery flight
Legs with duration, stops, and segmentsEvery flight. Round trips and multi-city journeys also have legs.
Segment airline, flight number, aircraft, airports, local times with UTC offset, and durationEvery flight. The aircraft is null when Google gives none.
Layover airport and durationFlights with a connection
CO2 emissions in gramsWhen Google gives them
Booking tokenWhen Google gives one. You need it for booking details.
Calendar prices with the date, the return date, and the priceWhen Include Calendar Prices is on
Destination rows with city, country, airport, dates, price, airline, stops, and durationWhen Explore From (airport) is set
Booking options with provider, airline-direct flag, flight numbers, price, and booking formWhen Include Booking Details is on, the flight has a booking token, and Google has offers
Baggage policy links and booking linksWith booking details
Google's original response dataOn the first row of each operation. If no row can carry it, the Actor saves one response record.

Google does not have every field for every flight. A field without data is null or [].

Quick start

  1. Enter the origin, the destination, and the departure date in Flight Searches. You can also paste a link in Google Flights URL.
  2. Click Start. Replace the sample dates with future dates.
  3. Download the results as JSON, CSV, Excel, or HTML.

The same input as JSON:

{
"searches": [
{
"origin": "SFO",
"destination": "LAX",
"departureDate": "2026-12-03"
}
]
}

Examples by use case

Replace the sample dates with future dates.

The cheapest flights of a route. Sort by price and keep the first 10:

{
"searches": [
{ "origin": "SFO", "destination": "JFK", "departureDate": "2026-12-03" }
],
"sortBy": "cheapest",
"maxResults": 10
}

A round trip. A returnDate makes the route a round trip. Each row has both legs and one total price:

{
"searches": [
{
"origin": "SFO",
"destination": "JFK",
"departureDate": "2026-12-03",
"returnDate": "2026-12-10"
}
]
}

Nonstop flights only:

{
"searches": [
{ "origin": "SFO", "destination": "JFK", "departureDate": "2026-12-03" }
],
"maxStops": "0"
}

All airports of a city. Use a list or an array. This example searches New York to London in pounds:

{
"searches": [
{
"origin": ["JFK", "EWR", "LGA"],
"destination": "LHR,LGW,STN",
"departureDate": "2026-12-03"
}
],
"country": "GB",
"language": "en-GB",
"currency": "GBP",
"maxResults": 20
}

One alliance. Star Alliance flights, up to one stop, under 900 dollars:

{
"searches": [
{ "origin": "SFO", "destination": "FRA", "departureDate": "2026-12-03" }
],
"airlines": ["STAR_ALLIANCE"],
"maxStops": "1",
"maxPrice": 900
}

A business-class trip. One run uses one cabin. To compare cabins, start one run for each cabin:

{
"searches": [
{
"origin": "SFO",
"destination": "LHR",
"departureDate": "2026-12-03",
"returnDate": "2026-12-17"
}
],
"cabinClass": "business",
"currency": "EUR"
}

A family trip. Two adults, two children, and one infant on a lap:

{
"searches": [
{ "origin": "LAX", "destination": "HNL", "departureDate": "2026-12-03" }
],
"adults": 2,
"children": 2,
"infantsOnLap": 1
}

Morning departures:

{
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" }
],
"departureTimeEarliest": "06:00",
"departureTimeLatest": "09"
}

Red-eye flights. The earliest time is later than the latest time, so the range crosses midnight. This keeps departures from 22:00 to 06:59:

{
"searches": [
{ "origin": "SFO", "destination": "JFK", "departureDate": "2026-12-03" }
],
"departureTimeEarliest": "22",
"departureTimeLatest": "6"
}

A multi-city trip. One ordered journey with one total price:

{
"tripType": "multi-city",
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" },
{ "origin": "LAX", "destination": "LAS", "departureDate": "2026-12-06" },
{ "origin": "LAS", "destination": "SFO", "departureDate": "2026-12-09" }
]
}

The cheapest day to fly. Add the prices of the next 30 days, one-way:

{
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" }
],
"includeCalendarPrices": true,
"calendarMode": "graph",
"calendarDays": 30
}

The best days for a round trip with a fixed stay. This round trip lasts 7 nights. Each Calendar price keeps the 7 nights:

{
"searches": [
{
"origin": "SFO",
"destination": "LAX",
"departureDate": "2026-12-03",
"returnDate": "2026-12-10"
}
],
"includeCalendarPrices": true,
"calendarMode": "picker",
"calendarDays": 30
}

Weekend trips from an airport. Priced destinations for a weekend in February. An empty searches list means no route search:

{
"searches": [],
"exploreOrigin": "SFO",
"tripDuration": "weekend",
"exploreMonth": "february"
}

Booking links for the cheapest flights. Booking details for the three cheapest nonstop flights:

{
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" }
],
"maxStops": "0",
"sortBy": "cheapest",
"maxResults": 3,
"includeBookingDetails": true
}

Another market. The same route with German settings and euro prices:

{
"searches": [
{ "origin": "FRA", "destination": "BCN", "departureDate": "2026-12-03" }
],
"country": "DE",
"language": "de",
"currency": "EUR"
}

Import a Google Flights link:

{
"flightUrl": "https://www.google.com/travel/flights?q=Flights+from+JFK+to+LHR+on+2026-12-03&curr=GBP&hl=en-GB&gl=GB",
"maxResults": 20
}

Monitor several routes. One run searches up to 20 routes. One-way and round trips can share a run. Run it on a schedule:

{
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" },
{
"origin": "SFO",
"destination": "SEA",
"departureDate": "2026-12-04",
"returnDate": "2026-12-08"
},
{ "origin": "LAX", "destination": "LAS", "departureDate": "2026-12-06" }
],
"sortBy": "cheapest",
"maxResults": 5
}

Flights, Calendar prices, destinations, and booking details in one run. Explore and route work share the run. The destination rows come first:

{
"searches": [
{ "origin": "DAD", "destination": "SGN", "departureDate": "2026-12-03" }
],
"maxStops": "0",
"airlines": ["VN"],
"includeCalendarPrices": true,
"calendarDays": 5,
"includeBookingDetails": true,
"maxBookingDetails": 5,
"exploreOrigin": "SGN"
}

Choose the routes

Put one or more routes in searches. Each route has an origin, a destination, a departureDate, and an optional returnDate.

  • Airports. Use three-letter IATA airport codes. Codes are trimmed, changed to uppercase, and deduplicated. The Actor does not accept city names or Google place IDs.
  • Airport groups. An origin or a destination can be one code, a comma-separated list, or an array. The Actor searches all codes together in one search. Each flight row shows the airports that the flight really uses. Calendar rows and requestContext keep the groups that you asked for.
  • Dates. Use real dates in YYYY-MM-DD format. The Actor skips a route with a departure date in the past, or with a return date before the departure date. The log names the skipped route. A run in which every route is skipped can end with no results.
  • One-way or round trip. Each route is a round trip when it has a returnDate, and one-way when it has none. One run can mix both. An explicit tripType of one-way or round-trip does not override the dates.
  • A batch. The Actor processes up to 20 routes in your order. It drops the routes after the first 20 with a warning. It skips an invalid route with a warning, and the other routes still run.
  • Multi-city. Set tripType to multi-city. The list is then one ordered journey with up to 20 legs and one total price. One invalid leg, or more than 20 legs, skips the whole journey. Each leg ignores returnDate.
  • No route. An empty list, "searches": [], without Explore From (airport) means no work, and the run ends without results. If you leave searches out, the Actor runs a sample search for SFO to LAX on the first day of the next month.

Set flightUrl to import a search. The Actor reads the settings from the link and does not open it.

  • Accepted links. HTTPS links on google.com or www.google.com, with the path /travel/flights or /travel/flights/search.
  • Two forms. A link with a tfs value can hold a one-way, round-trip, or multi-city search, with airport groups, the cabin, and the passengers. A link with a q value must have this text: Flights from SFO to LAX on 2026-12-03. Add returning 2026-12-10 for a round trip.
  • Market. The hl, gl, and curr values set the language, the country, and the currency. The values authuser, source, and utm_* are ignored.
  • What replaces what. The link replaces searches and tripType. Your own settings for the cabin, passengers, currency, country, and language win over the link. The input form sends preset values for these fields, so these values win too. Omit a field from the JSON input to use the value from the link. Limits and filters still apply.
  • Not accepted. Google city and place IDs, links to a selected flight, and filters inside the link, such as tfu or stops. A link with more than 9 passengers, or with more infants on a lap than adults, is also rejected. Set filters in the Actor input. An invalid or unsupported link stops the run with an input error. A blank or null link counts as not set.

Filter the flights

Filters are combined. A flight must match every filter that you set. Inside the airlines filter, a flight can match any of the values.

For round trips and multi-city journeys, the stop, duration, airline, and time filters apply to every leg. The price filter applies to the whole itinerary.

  • maxStops. 0 for nonstop only, 1 for up to one stop, or 2 for up to two stops.
  • maxPrice. The highest total price for all passengers, in the selected currency. Use a positive whole number.
  • maxDuration. The longest duration of each leg, in minutes. Use a positive whole number.
  • airlines. Airline codes such as UA and AA, or the alliance names ONEWORLD, STAR_ALLIANCE, and SKYTEAM. Values are trimmed and changed to uppercase.
  • departureTimeEarliest and departureTimeLatest. The local time of the departure airport.
  • arrivalTimeEarliest and arrivalTimeLatest. The local time of the arrival airport.
  • showAllResults. Ask Google for more flight choices before the filters run. Use it when narrow filters return too few rows.

Give each time bound as a whole hour (6, 18) or as HH:MM (06:30). A whole-hour latest time includes the complete hour, so 18 includes departures through 18:59. If the earliest time is later than the latest time, the range crosses midnight. For example, 22 to 6 means 22:00 to 06:59. Flight time filters use exact minutes.

This example keeps nonstop and one-stop Oneworld flights under 600 dollars that take at most 8 hours for each leg and leave before noon:

{
"searches": [
{
"origin": "SFO",
"destination": "JFK",
"departureDate": "2026-12-03",
"returnDate": "2026-12-10"
}
],
"maxStops": "1",
"maxPrice": 600,
"maxDuration": 480,
"airlines": ["ONEWORLD"],
"departureTimeLatest": "11",
"showAllResults": true
}

A maxPrice or maxDuration that is not a positive whole number is ignored with a warning. A blank or non-string entry in airlines is ignored with a warning.

Choose the flight order

sortBy sets the order. The default is best.

ValueOrder
bestGoogle's order.
cheapestThe lowest fare first. Schedules without a fare come last.
fastestThe shortest total duration first.
departure-timeThe earliest departure first.
arrival-timeThe earliest arrival first.

For round trips and multi-city journeys, cheapest and fastest use the whole itinerary. departure-time and arrival-time use the final leg.

The Actor sorts after it filters. maxResults then keeps the first flights of the sorted list. It does not make the search faster. It limits the rows after the search finishes. A round-trip row or a multi-city row counts as one flight. Calendar and destination rows do not count.

Compare travel dates

Set includeCalendarPrices to add the prices of nearby dates to a route. Calendar prices use the same stop, price, duration, airline, passenger, cabin, and time settings as the route. Airport groups work too.

calendarModeDatesDefault
graphA forward series of departure dates that starts on the requested date.61 dates
gridA window that is centered on the requested departure date.7 dates
pickerA forward series of departure and return pairs that keep the stay length of your round trip. It needs a returnDate.61 pairs

calendarDays sets the number of dates or pairs. The Actor truncates decimals, limits the value to 1 to 90, and makes a Grid window odd.

  • One-way routes get one price for each date.

  • Round-trip routes get a price for each pair of dates. Each pair keeps the stay length of your departureDate and returnDate, in every mode. returnDate is in each Calendar row.

  • Where the prices go. The Actor adds calendarPrices to the first flight row of the route. maxResults does not change the Calendar window or the place of the prices. If no flight row exists, the Actor saves one Calendar record instead.

  • No prices. calendarPrices is null when Calendar could not be checked. The flight rows stay.

  • Multi-city. Calendar uses the first leg of a multi-city journey.

Find destinations

Set exploreOrigin to get priced destinations for a flexible month and stay. You do not need a destination or a date.

  • tripDuration. weekend for stays of 1 to 4 days, 1-week for 6 to 9 days, or 2-weeks for 13 to 16 days. The default is 1-week.
  • exploreMonth. next-6-months, or a month name from january to december. The default is next-6-months. Google covers about the next 10 months. A month beyond that gives no destinations and a warning with the month name.
  • What applies. The cabin, passengers, currency, country, and language apply. The stop, price, duration, airline, and time filters, the sort order, and maxResults do not apply to destinations. A destination row has no booking details.
  • With routes. If searches has routes too, the Actor runs both. It saves the destination rows first.

Each destination is one row. A destination can have an airport that is empty when it is a region, and airlineCode is "multi" when the trip uses more than one airline.

Add booking details

Set includeBookingDetails to get the offers for each flight that has a booking token. Each offer has the provider, the price, a booking form, and the baggage policy links.

  • Limit the lookups. maxBookingDetails limits the lookups for each route or for the whole multi-city journey. Use maxResults to limit the flight rows first. A round trip uses one limit for the whole journey.
  • What counts. Only flights with a booking token count. A lookup that fails counts toward the limit. 0 turns the lookups off. If you leave the field out or use null, the Actor looks up every flight that has a token.
  • Flights outside the limit stay in the output with bookingDetails: null.
  • Book a flight. Use the bookingForm of an option. Send all its fields together to its action. displayUrl is the text that Google shows for the provider. It is not always a link that you can open.

Set passengers, cabin, and market

  • Cabin. cabinClass is economy, premium-economy, business, or first. The default is economy.
  • Passengers. adults (1 to 9), children (0 to 9), infantsOnLap (0 to 9), and infantsInSeat (0 to 9). The Actor does not add a combined limit and does not compare infants on a lap with adults. Google can return no flights for an unusual group. The prices cover all passengers.
  • Currency. A three-letter code, such as USD, EUR, or JPY. The Actor asks Google for prices in that currency and does not convert them. A malformed code uses USD with a warning. The amount or currency at checkout can differ by provider.
  • Country and language. country is a two-letter code, such as US, GB, or SE. UK becomes GB. language is a language tag, such as en-US, sv, or de. They apply to flights, Calendar prices, destinations, and booking details. An invalid country or language gives a warning and uses the default. The country setting does not change the proxy country.

Connection settings

Apify Proxy is on by default, and no proxy group is selected. Keep Apify Proxy on. Without it, most searches return no results.

{
"searches": [
{ "origin": "SFO", "destination": "LAX", "departureDate": "2026-12-03" }
],
"proxyConfiguration": {
"useApifyProxy": true
}
}

In proxyConfiguration, an empty apifyProxyGroups or proxyUrls list counts as not set. A null value turns the proxy off.

Input reference

All fields are optional. Use searches, flightUrl, or exploreOrigin to say what to search.

FieldTypeDefaultDescription
flightUrlstringnoneA supported HTTPS Google Flights airport-search link. It replaces searches and tripType. Your own travel settings win over the link.
searchesobject[]sample routeUp to 20 routes with origin, destination, departureDate, and an optional returnDate. Each endpoint accepts one code, a comma-separated list, or an array. [] means no route work.
tripTypestringfrom the datesone-way, round-trip, or multi-city. Independent routes use their own dates. multi-city makes the list one ordered journey.
exploreOriginstringnoneA three-letter IATA airport code for a destination search.
tripDurationstring1-weekweekend (1 to 4 days), 1-week (6 to 9 days), or 2-weeks (13 to 16 days).
exploreMonthstringnext-6-monthsnext-6-months, or january to december.
cabinClassstringeconomyeconomy, premium-economy, business, or first.
adultsinteger1Adults, from 1 to 9.
childreninteger0Children, from 0 to 9.
infantsOnLapinteger0Infants on an adult's lap, from 0 to 9.
infantsInSeatinteger0Infants in their own seat, from 0 to 9.
currencystringUSDA three-letter currency code. It also applies to destination runs.
countrystringUSA two-letter country code. UK becomes GB.
languagestringen-USA language tag, such as sv, de, or en-GB.
maxStopsstringnone0, 1, or 2.
maxPricenumbernoneThe highest total price, as a positive whole number in the selected currency.
maxDurationnumbernoneThe longest duration of each leg in minutes, as a positive whole number.
airlinesstring[]noneAirline codes or the alliance names ONEWORLD, STAR_ALLIANCE, and SKYTEAM.
departureTimeEarlieststringnoneThe earliest local departure time, as an hour or HH:MM.
departureTimeLateststringnoneThe latest local departure time, as an hour or HH:MM.
arrivalTimeEarlieststringnoneThe earliest local arrival time, as an hour or HH:MM.
arrivalTimeLateststringnoneThe latest local arrival time, as an hour or HH:MM.
sortBystringbestbest, cheapest, fastest, departure-time, or arrival-time.
showAllResultsbooleanfalseAsk Google for more flight choices before the filters run.
maxResultsintegerall rowsThe most flight rows for each route or each journey, after the filters and the sort.
maxBookingDetailsintegerall lookupsThe most booking lookups for each route or each journey. 0 turns them off.
includeCalendarPricesbooleanfalseAdd the prices of nearby dates to the first flight of each route.
calendarModestringgraphgraph, grid, or picker.
calendarDaysnumberby modeThe number of dates or pairs, from 1 to 90. The default is 61 for graph and picker, and 7 for grid.
includeBookingDetailsbooleanfalseAdd provider offers, booking forms, and baggage policy links.
proxyConfigurationobjectApify Proxy onConnection settings that Apify manages.

Input rules

  • Unknown input fields are ignored. Settings for work that is not active are ignored too.
  • A blank or null optional field counts as not set.
  • An invalid optional setting gives a warning and uses its default. An invalid flightUrl, maxResults, or maxBookingDetails stops the run.

Output

Each item in the dataset is one of four records:

  • A flight row has outbound.
  • A destination row has destinationId.
  • A Calendar record has recordType: "calendar". The Actor saves it when Calendar work finishes and no flight row can carry the prices.
  • A response record has recordType: "google-response". It holds only Google's original data.

The Overview table shows the record type, the origin, the destination, the city, the dates, the price, the currency, and the stops. When a run has destination work and route work, the destination rows come first. Independent routes follow your order.

Prices cover all passengers and use the selected currency. Durations and layovers are in minutes. co2Emissions is in grams. Departure and arrival times are local airport times with the UTC offset of that date. The Actor keeps Google's bookingToken unchanged.

Most examples in this section are real records from runs of this Actor on 14 October 2026. Prices and schedules change. Booking tokens and form values are shortened, and googleResponses is left out.

The output schema links to the dataset and the key-value store. It does not check the fields inside the items. Allow null, missing, and extra fields, because Google can change its results.

Fields by topic

  • Trip. origin, destination, departureDate, returnDate, tripType, and cabinClass. For a multi-city journey, origin is the first departure airport and destination is the last arrival airport.
  • Price. price for all passengers and currency.
  • Duration and stops. totalDuration and stops for all legs.
  • Airlines. airlines and airlineCodes.
  • Legs. outbound, return, and legs. A leg has duration, stops, and segments.
  • Segments. The airline, the code, the flight number, the aircraft, the airports, the local times, the duration, and the layover after the segment.
  • Emissions. co2Emissions.
  • Booking. bookingToken and bookingDetails.
  • Calendar. calendarPrices on the first flight, or a Calendar record.
  • Google data. googleResponses.

One-way flight example

This flight came from a one-way search with airport groups and a 3-day Graph Calendar. legs is only in round trips and multi-city journeys. calendarPrices is null when you do not ask for Calendar prices.

{
"origin": "SFO",
"destination": "LAX",
"departureDate": "2026-12-03",
"returnDate": null,
"tripType": "one-way",
"cabinClass": "economy",
"price": 24,
"currency": "USD",
"pricePerPassenger": null,
"totalDuration": 87,
"stops": 0,
"airlines": ["Frontier"],
"airlineCodes": ["F9"],
"outbound": {
"duration": 87,
"stops": 0,
"segments": [
{
"airline": "Frontier",
"airlineCode": "F9",
"flightNumber": "F92858",
"aircraft": "Airbus A321neo",
"departureAirport": "SFO",
"arrivalAirport": "LAX",
"departureTime": "2026-12-03T21:31:00-08:00",
"arrivalTime": "2026-12-03T22:58:00-08:00",
"duration": 87,
"layover": null
}
]
},
"return": null,
"co2Emissions": 46940,
"co2EmissionsLabel": null,
"bookingToken": "CjRIN2hRVGJRbXBz…",
"fareClass": null,
"bookingDetails": null,
"calendarPrices": [
{ "date": "2026-12-03", "price": 24 },
{ "date": "2026-12-04", "price": 29 },
{ "date": "2026-12-05", "price": 19 }
]
}

Round-trip example

A round trip has outbound, return, and legs. legs lists the same two legs as outbound and return, so this example leaves it out. Its Calendar prices come in date pairs that keep the 7-night stay.

A multi-city row has the same shape. outbound is the first leg, return is null, and legs has every leg in travel order. origin is the first departure airport and destination is the last arrival airport.

Flight fields

The fields pricePerPassenger, co2EmissionsLabel, and fareClass are always null. They stay so that existing integrations keep working.

Google can show the same flight more than once. The Actor keeps the first row for each booking token, in Google's order. A row without a token is a repeat when its fare, currency, flight numbers, airports, and times match another row. Rows with different tokens or different fares stay separate rows. googleResponses keeps all repeated values.

Calendar prices

calendarPrices is in date order. Pairs with the same departure date are in return-date order. The array is [] when the check finished without matching prices. It is null when you did not ask for Calendar prices or the Actor could not check them.

A one-way Graph window of 3 dates:

[
{ "date": "2026-12-03", "price": 24 },
{ "date": "2026-12-04", "price": 29 },
{ "date": "2026-12-05", "price": 19 }
]

A round-trip Graph window of 3 date pairs. The stay length is the same in every pair:

[
{ "date": "2026-12-03", "returnDate": "2026-12-10", "price": 48 },
{ "date": "2026-12-04", "returnDate": "2026-12-11", "price": 77 },
{ "date": "2026-12-05", "returnDate": "2026-12-12", "price": 38 }
]

A Grid window of 7 dates around the requested date:

[
{ "date": "2026-11-30", "price": 31 },
{ "date": "2026-12-01", "price": 31 },
{ "date": "2026-12-02", "price": 31 },
{ "date": "2026-12-03", "price": 31 },
{ "date": "2026-12-04", "price": 31 },
{ "date": "2026-12-05", "price": 31 },
{ "date": "2026-12-06", "price": 39 }
]

A Picker pair:

[
{ "date": "2026-12-15", "returnDate": "2026-12-24", "price": 43 }
]

When Calendar work finishes and no flight row can carry the prices, the Actor saves a Calendar record. This one came from a run with maxPrice: 1, so no flight and no Calendar date matched:

{
"recordType": "calendar",
"origin": "DAD",
"destination": "SGN",
"departureDate": "2026-12-03",
"returnDate": null,
"tripType": "one-way",
"cabinClass": "economy",
"adults": 1,
"children": 0,
"infantsOnLap": 0,
"infantsInSeat": 0,
"calendarMode": "graph",
"calendarDays": 5,
"currency": "USD",
"calendarPrices": []
}

Booking details

When a booking lookup returns data, the Actor adds it to bookingDetails. This example came from a live run. The run returned 3 booking options for the flight. Two are shown, and the form values are shortened.

bookingDetails is null when you did not ask for booking details, the flight has no booking token, the limit stopped the lookup, or Google had no booking data. bookingOptions, fareRules, bookingLinks, and baggagePolicies can be empty.

Destination example

Each destination is one row. These two rows came from an Explore-only run with 1-week stays.

[
{
"destinationId": "/m/030qb3t",
"city": "Los Angeles",
"country": "United States",
"airport": "LAX",
"departureDate": "2026-12-05",
"returnDate": "2026-12-12",
"price": 38,
"cheapestPrice": null,
"currency": "USD",
"airline": "Frontier",
"airlineCode": "F9",
"stops": 0,
"duration": 93
},
{
"destinationId": "/m/0d35y",
"city": "Phoenix",
"country": "United States",
"airport": "PHX",
"departureDate": "2026-11-07",
"returnDate": "2026-11-14",
"price": 56,
"cheapestPrice": null,
"currency": "USD",
"airline": "Frontier",
"airlineCode": "F9",
"stops": 0,
"duration": 123
}
]

price is the quote for the trip. cheapestPrice is a comparison value that can be higher or lower. Rows with a trip quote come before rows with only a comparison value, and each group is sorted by its own price. At least one price field has a value. airline, stops, and duration can be null.

Google response data

The Actor keeps Google's original data in googleResponses. The first row of each operation carries the array. Booking data stays with its flight. If no row can carry the data, for example when every result is filtered out, the Actor writes one response record.

rawResponse is Google's original data. It keeps the original order, repeated values, null values, and fields that the Actor does not use. requestContext has only public route values, such as the origin, the destination, the dates, the journey stage, and the Calendar variant. It never has booking tokens.

This record came from an earlier run whose only route returned no itineraries. rawResponse is shortened, and responseBlocks, method, and transport are left out.

Large values go to the key-value store of the run under keys that start with GOOGLE_RESPONSE_. rawResponseKey or rawResponseKeys then points to them.

FAQ

How many flights can I get?

There is no fixed limit. Google decides how many flights it lists. In our tests, a one-way route returned 30 to 100 rows. Use showAllResults to ask Google for more choices before the filters run. Use maxResults to keep fewer rows for each route.

Why did I get fewer flights than I expected?

Your filters can remove flights, and maxResults keeps only the first rows. Google can also list few flights for a route, a date, or a narrow filter. Try showAllResults. For round trips and multi-city journeys, a result has one complete set of earlier legs and the alternatives for the final leg. It does not list every possible mix of legs.

Set includeBookingDetails. Each option in bookingDetails.bookingOptions has a bookingForm. Send all its fields together to its action to reach the provider. Use maxResults and maxBookingDetails to limit the lookups.

How do I track prices over time?

The Actor has no price history. Run it on a schedule and save the results. Match a flight between runs with the flight numbers and the departure times of its segments.

Does it support city names?

No. Use airport codes. To search a whole city, list its airports, such as JFK,EWR,LGA.

A feature or field that I need is missing. What can I do?

Tell us in the Issues tab. Describe what you need and give an example search.

Where can I report a problem?

Open an issue in the Issues tab. Include the run ID and the input, so that we can reproduce it.

Similar Actors

  • Google Hotels & Vacation Scraper. Google Hotels and vacation rentals with price, hotel class, guest rating, and amenity filters, booking links, and reviews.
  • Booking Hotels Scraper. Booking hotel profiles, guest reviews, facilities, photos, nearby places, and stay availability.
  • Airbnb Scraper. Airbnb listings by URL, listing ID, or location search, with full listing details.
  • Google Maps Scraper. Google Maps places with photos, review breakdowns, contacts, and coordinates.
  • TripAdvisor Places Scraper. TripAdvisor hotels, restaurants, and things to do for cities and supported neighborhoods.