Google Flights Scraper — Fares, Multi-City & Price Calendar
Pricing
from $10.00 / 1,000 flight searches
Google Flights Scraper — Fares, Multi-City & Price Calendar
Scrape Google Flights fares, schedules, multi-city itineraries and the cheapest-date price calendar. No API key, no headless browser.
Pricing
from $10.00 / 1,000 flight searches
Rating
0.0
(0)
Developer
Mahmudul Hasan
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
Pull live fares, schedules and cheapest-date data straight from Google Flights. No API key, no Google Cloud project, no headless browser — the Actor talks to Google's own endpoints, so searches are fast and cheap.
What you get
| Action | What it returns |
|---|---|
| Flight search | Every itinerary for a one-way or round-trip route: price, airlines, stop count, full segment list (airports, times, duration, aircraft type) and carbon emissions |
| Multi-city search | The same itinerary data across 2+ legs in a single trip |
| Price calendar | The cheapest fare for every departure date across a range — the Google Flights date grid |
Results land in the run's dataset and export to JSON, CSV, Excel, XML or via the API.
Pricing
$0.01 per search. Flat. However many itineraries come back — 3 or 60 — one search is one charge.
| You pay for | Price |
|---|---|
| Flight search (one-way or round-trip) | $0.01 |
| Multi-city search | $0.02 |
| Price calendar range | $0.03 |
| Actor start | $0.05 per 1,000 runs |
A typical search returns 20–40 itineraries, so this works out to about $0.33 per 1,000 flights — roughly 3× cheaper than per-result flight scrapers on Apify Store, and 20× cheaper than other per-search Actors.
Searches that return nothing are not charged. Set a maximum cost per run in the run options and the Actor stops cleanly the moment it gets there. Platform compute is included — you are never billed separately for usage.
Input
{"action": "search","searches": [{ "origin": "JFK", "destination": "LAX", "date": "2026-09-10" },{ "origin": "JFK", "destination": "LHR", "date": "2026-09-10", "returnDate": "2026-09-17" }],"seat": "economy","adults": 1,"currency": "USD"}
Multi-city:
{"action": "multi_city","searches": [{ "legs": [{ "origin": "JFK", "destination": "LHR", "date": "2026-09-10" },{ "origin": "LHR", "destination": "CDG", "date": "2026-09-14" },{ "origin": "CDG", "destination": "JFK", "date": "2026-09-20" }] }]}
Price calendar:
{"action": "calendar","searches": [{ "origin": "JFK", "destination": "LAX", "startDate": "2026-09-01", "endDate": "2026-10-31" }],"calendarTrip": "one-way"}
| Field | Description |
|---|---|
action | search, multi_city or calendar |
searches | One object per search. Batch them — one run with 50 searches beats 50 separate runs. |
seat | economy, premium-economy, business or first |
adults / children / infantsInSeat / infantsOnLap | Passenger counts |
maxStops | Leave empty for any. 0 = nonstop only. |
currency | ISO code for prices, e.g. USD, EUR, GBP |
tripDays / calendarTrip | Calendar options — trip length and one-way vs round-trip |
proxyConfiguration | Optional. Enable if you run many searches back to back. |
requestDelaySeconds | Pause between Google requests (default 2) |
Any of the trip options can be set per search to override the global value.
Output
One dataset item per itinerary:
{"type": "flight","trip": "one-way","origin": "JFK","destination": "LAX","date": "2026-09-10","price": 148,"currency": "USD","airlines": ["JetBlue"],"stops": 0,"departure": "2026-09-10 08:15","arrival": "2026-09-10 11:42","duration": 387,"segments": [{"from_airport": { "code": "JFK", "name": "John F. Kennedy International" },"to_airport": { "code": "LAX", "name": "Los Angeles International" },"departure": "2026-09-10 08:15","arrival": "2026-09-10 11:42","duration_minutes": 387,"plane_type": "Airbus A321"}],"carbon_emissions": { "emission_grams": 428000, "typical_on_route_grams": 455000 },"google_flights_url": "https://www.google.com/travel/flights?tfs=..."}
Calendar items are {"type": "calendar_price", "date": ..., "price": ...}. Failed searches
are written as {"type": "error", ...} items rather than killing the run, and are not charged.
Common uses
- Track fares on your routes daily and alert when a price drops
- Find the cheapest departure date across a whole month before booking
- Feed live fare data into a travel site, comparison tool or booking assistant
- Benchmark competitor pricing on the routes you sell
- Give an AI travel agent real fares (this Actor supports agentic payments via x402 and Skyfire)
Integrations
Run on a schedule, or wire the output to Google Sheets, Airtable, Slack, Make, Zapier, or your own webhook. Everything is reachable through the Apify API and the JavaScript and Python clients.
Notes and limits
- This is an unofficial scraper. Google occasionally changes its internal response layout; when a parse comes back empty the Actor logs it and moves on rather than failing the run.
- For round-trip searches Google returns outbound options priced as complete round-trips — the same behaviour as the first step on the Google Flights website.
- The price calendar uses an undocumented internal endpoint and is marked experimental. It is the most likely of the three actions to drift when Google changes something.
- Prices are what Google shows for the query as sent; they can move between the search and a booking attempt.
- Scrape only public data and use the output in line with Google's terms and applicable law.
Support
Found a bug or need a field that is not extracted yet? Open an issue on the Actor's Issues tab.