Google Flights Scraper - Fares, Routes & Price Monitoring
Pricing
from $0.12 / 1,000 flight itineraries
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
Maintained by CommunityActor stats
0
Bookmarked
16
Total users
5
Monthly active users
2 hours ago
Last modified
Categories
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
One-way search
{"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"withprevious_pricewhen a known itinerary moves.
Unchanged scheduled runs write no dataset items and therefore incur no result charge.
Input reference
| Input | What it controls |
|---|---|
origin, destination | One route using three-letter IATA airport codes |
departureDate, returnDate | Explicit one-way or round-trip dates |
departureInDays, tripLengthDays | Relative dates for reusable saved Tasks |
routes | Many ORIGIN-DESTINATION pairs searched as a matrix |
dateRangeStart, dateRangeEnd, dateRangeDays, dateStepDays | Explicit or relative flexible-date searches |
adults, children, infantsInSeat, infantsOnLap | Up to nine passengers |
cabinClass | Economy, premium economy, business, or first |
maxStops, airlines | Google-side stop and airline filters |
currency, language, market | Result localization and regional availability |
maxResultsPerSearch, maxResults | Per-search and whole-run output limits |
monitorMode, monitorStoreName | Incremental new-fare and price-change output |
proxyMode | Direct connection, a more resilient connection, or automatic fallback between the two |
proxyConfiguration | Optional custom connection settings, used only by the resilient/fallback modes |
maxConcurrency | Parallel route/date searches performed at once (advanced tuning) |
maxRetries | Total attempts per route/date before giving up |
directRetries | In Automatic mode, how many attempts try the faster connection before switching to the more resilient one |
failOnPartialError | Mark a run as failed when some route/date searches could not be completed (the itineraries found are still saved). Off by default |
allowEmptyResults | Kept 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
- Daily fare alert: one route,
monitorMode: price-changes, daily Schedule, webhook on successful dataset items. - Travel-agency comparison: several origin airports in
routes, one date, CSV export for a client shortlist. - Flexible-date deal finder: 14–30 day range, daily step, sort the dataset by price.
- Corporate route watch: weekly route matrix with
maxStops: 0and 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.
Related Actors
- Airbnb Scraper - Listings, Prices & Ratings — Thirdwatch
- Booking.com Hotel Scraper - Prices, Ratings & Amenities — Thirdwatch
- Ctrip / Trip.com Hotel Scraper - Prices, Ratings & Availability — Thirdwatch
Last verified: 2026-10
More scrapers at thirdwatch.dev.