Google Flights Scraper - Fares, Routes & Price Monitoring avatar

Google Flights Scraper - Fares, Routes & Price Monitoring

Pricing

from $0.12 / 1,000 flight itineraries

Go to Apify Store
Google Flights Scraper - Fares, Routes & Price Monitoring

Google Flights Scraper - Fares, Routes & Price Monitoring

Scrape live Google Flights fares without a browser. Compare one-way and round-trip quotes across multi-route and flexible-date matrices with segments, aircraft, emissions, stable IDs, and price-change monitoring.

Pricing

from $0.12 / 1,000 flight itineraries

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

5

Monthly active users

2 hours ago

Last modified

Share

Google Flights Scraper — fares, flexible dates, and price monitoring

What you get

Search live Google Flights results without running a browser. Compare one-way and round-trip quotes; scan up to 120 route/date combinations in one run; and publish only new or price-changed fares on a schedule.

The Actor returns one structured row per unique priced flight choice with price, airline, airports, exact times, stops, duration, aircraft, layovers, carbon emissions, a stable ID, and the matching Google Flights URL.

Why use this Actor?

  • Fast, reliable extraction: uses the fastest connection available and only falls back when needed.
  • Route matrix: compare many routes against the same date or date window in one run.
  • Flexible-date fare calendar: search every day or week across a date range.
  • Real fare monitoring: stable itinerary IDs let scheduled runs emit only new itineraries or changed prices.
  • Failure-safe batches: one failed route/date fails the run by default instead of quietly returning an incomplete comparison.
  • Low-cost by design: priced well below the established rate for Google Flights data on Apify, without cutting route-matrix or fare-monitoring features.

Quick start

{
"origin": "JFK",
"destination": "LAX",
"departureDate": "2026-08-15",
"maxResults": 50
}

Round trip

{
"origin": "LHR",
"destination": "JFK",
"departureDate": "2026-09-10",
"returnDate": "2026-09-17",
"cabinClass": "business",
"currency": "GBP"
}

Compare routes across flexible dates

{
"routes": ["JFK-LAX", "EWR-LAX", "JFK-SFO"],
"dateRangeStart": "2026-08-15",
"dateRangeEnd": "2026-08-21",
"dateStepDays": 1,
"maxStops": 1,
"maxResults": 1000
}

That input performs 21 searches: three routes × seven departure dates. The hard safety limit is 120 searches per run.

Output example

{
"itinerary_id": "807951432bf709130c623a56",
"search_label": "JFK-LAX 2026-08-15",
"trip_type": "one-way",
"primary_airline_code": "AA",
"price": 234,
"currency": "USD",
"airlines": ["American"],
"stops": 1,
"total_duration_minutes": 422,
"departure": "2026-08-15T08:04",
"arrival": "2026-08-15T15:16",
"origin": "JFK",
"destination": "LAX",
"segments": [
{
"origin": "JFK",
"origin_name": "John F. Kennedy International Airport",
"destination": "CLT",
"destination_name": "Charlotte Douglas International Airport",
"departure": "2026-08-15T08:04",
"arrival": "2026-08-15T10:10",
"duration_minutes": 126,
"aircraft": "Boeing 737"
}
],
"carbon_emissions_grams": 384000,
"typical_carbon_emissions_grams": 324000,
"google_flights_url": "https://www.google.com/travel/flights/search?...",
"observed_at": "2026-07-19T12:00:00+00:00"
}

Fare monitoring

Use an Apify Schedule with the same input. The Actor derives a stable store from every fare-affecting input, so cabin, currency, passenger, and filter combinations cannot overwrite one another. Set monitorStoreName when you want an explicit human-readable watch key.

{
"origin": "DEL",
"destination": "DXB",
"departureDate": "2026-09-10",
"monitorMode": "price-changes",
"monitorStoreName": "del-dxb-september"
}

The first run emits every newly observed itinerary. Later runs emit only:

  • change_type: "new" for a new itinerary;
  • change_type: "price_changed" with previous_price when a known itinerary moves.

Unchanged scheduled runs write no dataset items and therefore incur no result charge.

Input reference

InputWhat it controls
origin, destinationOne route using three-letter IATA airport codes
departureDate, returnDateExplicit one-way or round-trip dates
departureInDays, tripLengthDaysRelative dates for reusable saved Tasks
routesMany ORIGIN-DESTINATION pairs searched as a matrix
dateRangeStart, dateRangeEnd, dateRangeDays, dateStepDaysExplicit or relative flexible-date searches
adults, children, infantsInSeat, infantsOnLapUp to nine passengers
cabinClassEconomy, premium economy, business, or first
maxStops, airlinesGoogle-side stop and airline filters
currency, language, marketResult localization and regional availability
maxResultsPerSearch, maxResultsPer-search and whole-run output limits
monitorMode, monitorStoreNameIncremental new-fare and price-change output
proxyModeDirect connection, a more resilient connection, or automatic fallback between the two
proxyConfigurationOptional custom connection settings, used only by the resilient/fallback modes
maxConcurrencyParallel route/date searches performed at once (advanced tuning)
maxRetriesTotal attempts per route/date before giving up
directRetriesIn Automatic mode, how many attempts try the faster connection before switching to the more resilient one
failOnPartialErrorMark a run as failed when some route/date searches could not be completed (the itineraries found are still saved). Off by default
allowEmptyResultsKept for older saved inputs. A route/date with zero flights always finishes as a successful empty result

What is intentionally not claimed

Google changes the public response contract over time. This Actor currently returns the fields listed above. It does not claim to expose airline/OTA checkout URLs, baggage allowances, seat inventory, fare rules, or a guaranteed ticket price. google_flights_url reopens the same search; availability and prices can change before booking.

For round trips, Google first returns priced outbound choices for the requested return date. The record therefore has trip_type: "round-trip", return_date, and both requested search_legs, while segments describes the outbound choice and segments_scope is outbound_selection. The return flight is selected on Google Flights after choosing an outbound option. Multi-city extraction is not advertised because Google's current public response does not provide the same stable itinerary list.

When Google Flights answers but lists no itineraries, the search is checked a second time and then reported as a successful empty result, with a status message on the run. Searches that could not be completed are listed in the log.

Common workflows

  1. Daily fare alert: one route, monitorMode: price-changes, daily Schedule, webhook on successful dataset items.
  2. Travel-agency comparison: several origin airports in routes, one date, CSV export for a client shortlist.
  3. Flexible-date deal finder: 14–30 day range, daily step, sort the dataset by price.
  4. Corporate route watch: weekly route matrix with maxStops: 0 and approved airline codes.

Support

For a reproducible issue, include the Actor run ID, airport codes, dates, and the field or behavior you expected. Never post an Apify token or private booking information.

Use cases

  • Travel teams monitoring fares and building price-comparison tools
  • Analysts comparing routes, airlines, and carriers
  • Researchers building flight-price datasets

Limitations

  • Fares change in real time; a price captured during a run can move before you book.
  • The Actor does not expose airline/OTA checkout URLs, baggage allowances, seat inventory, or fare rules — only the fields listed above.
  • Multi-city search is not supported; only one-way, round-trip, and route/date matrices are.
  • A run is capped at 120 route/date searches. A route/date with no flights finishes as a successful empty result.

Last verified: 2026-10

More scrapers at thirdwatch.dev.