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
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Flights Scraper — fares, flexible dates, and price monitoring
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 request-only extraction: starts with direct HTTP and uses residential fallback only after a block.
- 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.
- Very low pricing: $0.25 per 1,000 results on FREE and $0.12 per 1,000 on GOLD—more than 8× below the established $1/1K Google Flights Actor.
In a four-search sandbox benchmark, the Actor returned 81 complete, unique rows for $0.000656 with no residential bandwidth: about $0.0081 per 1,000 results in infrastructure cost and roughly 91.6% contribution margin even at the $0.12/1K GOLD price after Apify's 20% fee.
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 fallback proxy country |
maxResultsPerSearch, maxResults | Per-search and whole-run output limits |
monitorMode, monitorStoreName | Incremental new-fare and price-change output |
proxyMode | Direct, residential, or direct-first automatic fallback |
failOnPartialError | Prevent incomplete route/date matrices from looking successful |
Pricing
You pay only for itinerary rows written to the default dataset.
| Apify plan | Price per 1,000 itineraries |
|---|---|
| FREE | $0.25 |
| BRONZE | $0.18 |
| SILVER | $0.15 |
| GOLD | $0.12 |
Retries, failed searches, duplicates, and unchanged monitoring runs are not result events.
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.
An empty result is treated as an error by default because blocks can look like empty markets. Set allowEmptyResults: true only when zero flights is an acceptable business outcome.
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.