Google Flights Scraper (bulk searches)
Pricing
from $1.23 / 1,000 flight listeds
Google Flights Scraper (bulk searches)
Flight options from Google Flights for up to 200 searches per run: price, airlines, flight numbers, times, duration, stops and layovers, aircraft and CO2, in Google's order. One-way or round trip, any cabin class and currency. Pay only for delivered flights.
Pricing
from $1.23 / 1,000 flight listeds
Rating
0.0
(0)
Developer
Steadydata Team
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
15 hours ago
Last modified
Categories
Share
Google Flights Scraper (prices, bulk searches)
Flight options from Google Flights for up to 200 route-and-date searches per run: price, airlines and flight numbers, departure and arrival times, duration, stops and layover airports, aircraft and Google's CO2 estimate, in the order Google Flights shows them ("Top options" first). One-way or round trip, any cabin class, any currency. You only pay for flight options that are actually delivered.
Why this scraper
- The structured data, not a screenshot. Google Flights renders its results from an embedded data block; this actor reads that block, so times are exact, flight numbers are real and nothing is guessed from text.
- Bulk by design. Paste 200 searches such as
AMS LHR 2026-10-15orJFK LAX 2026-11-03 2026-11-10and get one flat table with the search and Google's rank on every row, ready for fare monitoring or route analysis. - Round trips priced as round trips. For a return search the price is Google's round trip total, exactly as the page shows it, with the outbound options listed.
- No residential proxies. Google Flights serves its results page to Apify's standard datacenter pool; in testing on 13-09-2026 a search came back in about 3 seconds with 68 itineraries.
- Only delivered flights are charged. A search with no results, or a badly formed one, comes back as a clear error record at no cost.
Who this is for
Fare monitoring for a set of routes and dates. Travel researchers and analysts comparing airlines, stops and prices across markets. Teams building price alerts or route datasets without scraping a browser.
Who this is not for
This actor returns Google's displayed options, not a booking: bookingUrl opens the
search on Google Flights. Prices are the ones Google shows at the moment of the run and
can change by the hour. Google decides how many itineraries to show for a search; the
actor delivers what is on the page (10 to 70 in testing) and cannot force more. Only
airport codes are accepted, not city names.
Input fields
| Field | Type | Required or default | What it does |
|---|---|---|---|
searches | list of text | required | One search per row: 'FROM TO YYYY-MM-DD' for one-way or 'FROM TO YYYY-MM-DD YYYY-MM-DD' for a round trip, with IATA airport codes, e.g. 'AMS LHR 2026-10-15'. Up to 200 rows; a search without results comes back as a free error record. |
seatClass | text (economy, premium_economy, business, first) | economy | Cabin class for every search. |
adults | number | 1 | Number of adult passengers (1 to 9). |
currency | text | EUR | Three-letter currency code for the prices, e.g. EUR, USD, GBP. |
maxFlightsPerSearch | number | 50 | Cost ceiling per search, in Google's order (its top options first). One delivered flight option is one charged event. |
Input example
{"searches": ["AMS LHR 2026-10-15", "JFK LAX 2026-11-03 2026-11-10"],"seatClass": "economy","adults": 1,"currency": "EUR","maxFlightsPerSearch": 50}
A search is FROM TO YYYY-MM-DD for one-way, with a second date for a round trip.
Output example
| Field | Type | What it holds | Example |
|---|---|---|---|
search | text | The route and dates this row was found with, exactly as they were asked for. | JFK LAX 2026-11-03 2026-11-10 |
rank | number | The place in Google's own order, counting from 1. | 1 |
group | text | Which block Google put the trip in: best, cheapest or other. | top |
price | number | The price as a number, so you can sort and compare on it. | 359 |
currency | text | The currency that price is in. | EUR |
airlines | list | The airlines that operate the flight, in the order you fly them. | ["Delta"] |
airlineCodes | list | The same airlines as two-letter IATA codes, easier to match on than the names. | ["DL"] |
flightNumbers | list | The flight numbers of the legs, in order. | ["DL713"] |
departureAirport | text | The IATA code of the airport you leave from. | JFK |
departureTime | text | The local departure time at the first airport. | 2026-11-03T08:00 |
arrivalAirport | text | The IATA code of the airport you land at. | LAX |
arrivalTime | text | The local arrival time at the last airport; it can fall on the next day. | 2026-11-03T11:05 |
durationMinutes | number | The total travel time in minutes, waiting time included. | 365 |
stops | number | How many stops the trip has; 0 is a direct flight. | 0 |
layoverAirports | list | The airports you change at, in order; empty on a direct flight. | ["BOS"] |
aircraft | list | The aircraft types per leg, as far as Google names them. | ["Airbus A330-900neo"] |
emissionsKg | number | The CO2 emission per passenger in kilograms, as Google estimates it. | 249 |
tripType | text | One way or return, following what was asked for. | round_trip |
seatClass | text | The cabin the price is for: economy, premium economy, business or first. | economy |
bookingUrl | text | A link back to this trip on Google Flights, to book it or check it. | https://www.google.com/travel/flights?tfs=GhoSCjIwMjYtMTE... |
{"search": "AMS LHR 2026-10-15","rank": 1,"group": "top","price": 117,"currency": "EUR","airlines": ["British Airways"],"airlineCodes": ["BA"],"flightNumbers": ["BA443"],"departureAirport": "AMS","departureTime": "2026-10-15T19:40","arrivalAirport": "LHR","arrivalTime": "2026-10-15T19:55","durationMinutes": 75,"stops": 0,"layoverAirports": [],"aircraft": ["Airbus A320"],"emissionsKg": 54.0,"tripType": "one_way","seatClass": "economy","bookingUrl": "https://www.google.com/travel/flights?tfs=...&hl=en&curr=EUR","status": "ok"}
layoverAirports lists the IATA codes of the stopovers in order and is an empty list on a nonstop flight; stops says how many there are. On a long-haul search such as AMS to SYD every row carries them.
A search that yields nothing produces an error record instead, and is not charged:
{"input": "AMS LHR","status": "error","errorCode": "INVALID_SEARCH","error": "Expected 'FROM TO YYYY-MM-DD [YYYY-MM-DD]' with IATA codes, got 'AMS LHR'"}
Error codes: INVALID_SEARCH, NO_FLIGHTS, BLOCKED. INPUT_TRUNCATED appears once when your input is longer than this actor accepts.
Related actors from steadydata
- google-flights-price-calendar: the cheapest day to fly: one row per departure day over a range
- google-hotels-city: the hotels at the destination: ratings, reviews, indicative price
- google-trends-batch: when interest in a destination peaks
Pricing
Pay per event: one flight-listed event per delivered flight option. No charge for
searches that fail, no separate platform-usage surcharge. maxFlightsPerSearch is your
hard cost ceiling per search.
Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.
Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.
FAQ
Times are local? Yes, local to each airport, as Google Flights shows them, without a timezone suffix.
What is group?
Google's own split: top for its "Top options", other for the rest. rank counts
across both, top first.
Does the price include baggage? It is the price Google Flights displays for the itinerary. Fare conditions such as overhead bin access differ per airline and are not part of this data.
Can I search by city or with flexible dates? No. One airport pair and one exact date (or two for a round trip) per row. For flexible dates, add one row per date.
Is personal data collected? No. Nothing on these pages is about a person.
What happens when Google changes something? The data block is positional and Google may reshuffle it. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered flights cost anything.
Is this an alternative to the Amadeus Self-Service flight API? For flight prices and options, yes. Amadeus switched off its self-service APIs on 17 July 2026. This actor returns the flight options Google Flights shows for a route and date, with airlines, times, stops and prices. It does not book tickets and has no fare rules or seat maps.
Can I call it from my own code, like an API? Yes. Every run is available through the Apify API: start it with one HTTP request, then read the results as JSON, CSV or Excel from the dataset endpoint, or use the official Python and JavaScript clients. The input is the same JSON as in the input example above, so a scheduled script, a Make or Zapier step or an AI agent can call it without any changes.