Google Flights Scraper 💰$0.80/1K – Prices, Dates, Routes, CO2
Pricing
from $0.32 / 1,000 flights
Google Flights Scraper 💰$0.80/1K – Prices, Dates, Routes, CO2
Flight prices and schedules from Google Flights for any route and date: airlines, flight numbers, times, stops and layovers, aircraft, legroom, CO2 emissions. One way or round trip, cabin, passengers, nonstop filter, date ranges for price tracking. No login.
Pricing
from $0.32 / 1,000 flights
Rating
0.0
(0)
Developer
RT SOLUTIONS
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Google Flights Scraper – Prices, Dates, Routes, CO2
Get flight prices and schedules from Google Flights for any route and date: airlines, flight numbers, departure and arrival times, duration, stops and layovers, aircraft, legroom, codeshares and CO2 emissions. One way or round trip, any cabin, any number of passengers, nonstop filter, 30 currencies. Compare many routes × many dates in one run to track prices day by day.
No Google account, no API key, no browser. $0.80 per 1,000 flights on the free plan.
What is Google Flights Scraper?
Google Flights has no public API. This Actor reads the same results you see on google.com/travel/flights and returns them as clean JSON, CSV or Excel. You give it origins, destinations and dates; it builds every combination, opens each search the way Google Flights does in its own share links, and returns one row per flight with the full itinerary.
It is built for fare tracking: run it every day on the routes and dates you care about and keep the cheapest price per route, or load thousands of fares into a spreadsheet, a database or an AI agent.
What data can Google Flights Scraper extract?
| Field | Example | Notes |
|---|---|---|
price | 298 | Total for all passengers, in currency |
currency | USD | 30 currencies (USD, EUR, GBP, CAD, AUD, JPY, INR, AED…) |
rank, bucket | 4, other | Position on the page; top = Google's "best flights", other = the rest |
airlines | ["Aer Lingus"] | All airlines of the itinerary |
departure, arrival | 2026-12-10T17:00 | Local times |
durationMinutes | 605 | Door-to-door, layovers included |
stops | 1 | 0 = nonstop |
layovers | [{airport: "DUB", city: "Dublin", durationMinutes: 125}] | Airport, name, city, waiting time |
co2Kg, typicalCo2Kg, co2VsTypicalPercent | 392, 434, -10 | Emissions of this itinerary vs the typical value for the route |
legs[] | see below | One entry per flight segment |
legs[].flightNumber | EI 104 | |
legs[].aircraft | Airbus A330 | |
legs[].legroom | 31 inches | |
legs[].operatedAlsoAs | ["IB 4218", "BA 1511"] | Codeshare numbers |
legs[].departureAirportName, arrivalAirportName | Dublin Airport | |
legs[].co2Kg | 340 | Per segment |
origin, destination, departureDate, returnDate, tripType, cabinClass, adults, children | The search that produced the row | |
searchQuery | Flights from JFK to LHR on 2026-12-10 one way | Human-readable search |
googleFlightsUrl | https://www.google.com/travel/flights/search?tfs=… | Opens the same search on Google Flights |
How much does it cost to scrape Google Flights?
| Apify plan | Price per 1,000 flights |
|---|---|
| Free | $0.80 |
| Starter | $0.40 |
| Scale | $0.36 |
| Business and higher | $0.32 |
You pay only for flights that have a price. Searches with no flights, flights shown without a price ("price unavailable") and errors are free. There is no start fee per search.
Real runs — 3 November 2026
We ran three typical jobs on the Apify platform today (default settings, free plan):
| Job | Searches | Flights returned | Run time | Platform usage |
|---|---|---|---|---|
| One way, JFK → LHR, 10 Dec 2026 | 1 | 20 | 2.5 s | $0.0002 |
| Paris → New York, 7 departure dates (1–7 Dec), round trips of 7 days, EUR | 7 | 127 | 15 s | $0.0001 |
| LHR and MAN → BCN, LIS and FCO, nonstop only, GBP | 6 | 36 | 13 s | $0.0001 |
The cheapest fares found: $298 JFK → LHR (Aer Lingus via Dublin), €441 Paris → New York round trip (TAP Air Portugal, departing 7 Dec), £23 Manchester → Barcelona nonstop (Ryanair). Fares change constantly; these are the values of that day.
Bulk example: what 50,000 flights cost
A daily check of 10 routes × 30 departure dates is about 300 searches and, at ~20 flights per search, ~6,000 flights per day. Over a month that is ~180,000 flights = $144 on the free plan, $72 on Starter, $64.80 on Scale. Restricting with stops: "nonstop" or maxFlightsPerSearch lowers the count — and the cost — further.
Price compared with other Google Flights Actors — 31 October 2026
Main-event prices as listed on the Apify Store that day. Event definitions differ (some Actors charge per flight, others per search or per result page), so compare what one run of your job would cost, not only the number.
| Actor | Monthly users (31 Oct) | Listed price of the main event |
|---|---|---|
| lergassy/google-flights-scraper | 402 | $0.001 per flight |
| johnvc/Google-Flights-Data-Scraper | 369 | $0.03 per event |
| kaix/google-flights-scraper | 263 | $0.00006 per event |
| memo23/google-flights-scraper | 157 | $0.002 per flight |
| automation-lab/google-flights-scraper | 46 | $0.00023 per event |
| mtnrabi/google-flights-real-time-api | 32 | $0.003 per event |
| This Actor | new | $0.0008 per flight |
Who this is not for
Be sure this Actor fits before you run it:
- You need booking links and every seller's price (Expedia, airline site, OTA…). This Actor returns the flights and the Google Flights price, plus a link to the same search — not the list of sellers.
- You need the price calendar or "cheapest day of the month" view. Use a date range instead (
2026-12-01..2026-12-31) and keep the minimum per day — it gives the same answer with full flight details, but one search per day. - You need multi-city trips (A → B → C). One way and round trip only.
- You need baggage fees or fare classes. Not shown by Google Flights in the results list.
- You need live seat availability or to book. This is price and schedule data only.
What's new
- 2 November 2026 — Ready-to-run Python price tracker published on GitHub (google-flights-price-tracker).
- 1 November 2026 — FAQ, use cases and AI-agent (MCP) documentation.
- 25 October 2026 — Flights shown without a price are no longer charged. Major city names (New York, London, Paris, Tokyo, Casablanca…) are mapped to their IATA city codes, so every airport of the city is searched. Searches are sent in Google Flights' own structured format (the one used in its share links), which supports cabin, passengers and the stops filter for any code. Empty result pages are retried automatically with a new IP. Clear warnings (free) for impossible inputs: invalid or past dates, dates more than ~11 months ahead, same origin and destination, return before departure, too many searches.
- 25 October 2026 — First release.
How to scrape Google Flights with Google Flights Scraper
- Open the Actor and click Try for free (an Apify account is free; the free plan includes monthly credits).
- Enter one or more origins and destinations (airport codes like
JFK, city codes likeNYC, or city names likeNew York). - Enter departure dates — single dates or ranges like
2026-12-01..2026-12-14. - For round trips, set a fixed return date or a trip length in days.
- Optionally choose cabin, passengers, stops and currency.
- Click Start. Download the results as JSON, CSV, Excel or HTML, or connect them to Google Sheets, a webhook or your code.
⬇️ Input examples
One way, one date
{ "origins": ["JFK"], "destinations": ["LHR"], "departureDates": ["2026-12-03"] }
Round trip with a fixed return date
{ "origins": ["LHR"], "destinations": ["JFK"], "departureDates": ["2026-12-18"], "returnDate": "2027-01-04" }
Cheapest dates over two weeks (round trips of 7 days)
{"origins": ["Paris", "Lyon"],"destinations": ["NYC"],"departureDates": ["2026-12-01..2026-12-14"],"tripLengthDays": 7,"currency": "EUR"}
Every departure date gets its own search with a return 7 days later; sort by price to see the cheapest day.
Many routes in one run, nonstop only
{"origins": ["LHR", "MAN"],"destinations": ["BCN", "LIS", "FCO"],"departureDates": ["2026-12-12"],"stops": "nonstop","currency": "GBP"}
2 origins × 3 destinations × 1 date = 6 searches.
Business class, two adults and one child
{"origins": ["DXB"], "destinations": ["LHR"], "departureDates": ["2027-02-10"], "returnDate": "2027-02-20","cabinClass": "business", "adults": 2, "children": 1, "currency": "AED"}
At most one stop, only the 5 first flights of each search
{ "origins": ["SFO"], "destinations": ["TYO"], "departureDates": ["2027-03-01..2027-03-07"], "stops": "one_stop_or_fewer", "maxFlightsPerSearch": 5 }
Airport and airline names in another language
{ "origins": ["CMN"], "destinations": ["PAR"], "departureDates": ["2026-12-20"], "language": "fr", "currency": "MAD" }
Track a fare every day
Save any of the inputs above as an Apify Task, open Schedules, and run it daily. Each run is a new dataset; append the cheapest price per route and date to a sheet or database to build your own price history.
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
origins | list | ["JFK"] | Airport codes (JFK), city codes (NYC) or city names (New York). Several = every combination is searched. |
destinations | list | ["LHR"] | Same format as origins. |
departureDates | list | YYYY-MM-DD, or a range YYYY-MM-DD..YYYY-MM-DD (one search per day). | |
returnDate | text | empty | Fixed return date for round trips. Empty = one way. |
tripLengthDays | number | 0 | Round trip of N days for every departure date. 0 = one way. |
adults | number | 1 | Prices are the total for all passengers. |
children | number | 0 | Children aged 2–11. |
cabinClass | choice | economy | economy, premium_economy, business, first. |
stops | choice | any | any, nonstop, one_stop_or_fewer. |
currency | choice | USD | 30 currencies. |
language | text | en | Language of airport and airline names. |
maxFlightsPerSearch | number | 0 | 0 = all flights Google shows (usually 10–30). |
maxSearches | number | 200 | Safety cap on routes × dates. |
maxConcurrency | number | 3 | Searches run at the same time (max 6). |
proxyConfiguration | proxy | Apify Proxy | Default works; residential is used automatically only if needed. |
⬆️ Output
One row per flight. A real row from the 3 November run (shortened googleFlightsUrl):
{"searchQuery": "Flights from JFK to LHR on 2026-12-10 one way","origin": "JFK", "destination": "LHR", "departureDate": "2026-12-10", "returnDate": null,"tripType": "one_way", "cabinClass": "economy", "adults": 1, "children": 0, "currency": "USD","rank": 4, "bucket": "other", "price": 298,"airlines": ["Aer Lingus"],"departureAirport": "JFK", "arrivalAirport": "LHR","departure": "2026-12-10T17:00", "arrival": "2026-12-11T08:05","durationMinutes": 605, "stops": 1,"layovers": [{ "airport": "DUB", "airportName": "Dublin Airport", "city": "Dublin", "durationMinutes": 125 }],"co2Kg": 392, "typicalCo2Kg": 434, "co2VsTypicalPercent": -10,"legs": [{ "flightNumber": "EI 104", "airline": "Aer Lingus", "departureAirport": "JFK", "departureAirportName": "John F. Kennedy International Airport","arrivalAirport": "DUB", "arrivalAirportName": "Dublin Airport", "departure": "2026-12-10T17:00", "arrival": "2026-12-11T04:30","durationMinutes": 390, "aircraft": "Airbus A330", "legroom": "31 inches", "operatedAlsoAs": [], "co2Kg": 340 },{ "flightNumber": "EI 152", "airline": "Aer Lingus", "departureAirport": "DUB", "departureAirportName": "Dublin Airport","arrivalAirport": "LHR", "arrivalAirportName": "Heathrow Airport", "departure": "2026-12-11T06:35", "arrival": "2026-12-11T08:05","durationMinutes": 90, "aircraft": "Airbus A320neo", "legroom": "29 inches", "operatedAlsoAs": [], "co2Kg": 52 }],"googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=…"}
Searches that return nothing produce one row with status: "no_flights" and a message (free). Errors produce a row with status: "error" (free) so nothing fails silently.
Use cases for Google Flights data
Fare tracking and fare-drop alerts
Schedule a daily run over a date range and keep the cheapest price per route; alert yourself (email, Slack, Telegram) when it drops below a threshold.
Travel agencies and travel startups
Feed live fares into quotes, deal pages or comparison tools; check which airlines fly a route and when.
Route and pricing research
Compare routes, seasons and cabins; measure price spreads between nearby airports (LHR vs LGW vs STN) or between direct and 1-stop itineraries.
Sustainability and corporate travel reporting
Every itinerary comes with CO2 per segment and its difference to the typical value for the route.
Travel content, newsletters and AI agents
Generate "cheapest days to fly" articles, deal newsletters or let an AI agent answer "what is the cheapest way from Paris to New York in December?".
Integrations and Google Flights API
Python (full script: google-flights-price-tracker on GitHub):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("rt-solutions/google-flights-scraper").call(run_input={"origins": ["JFK"], "destinations": ["LHR"], "departureDates": ["2026-12-01..2026-12-07"], "stops": "nonstop",})for f in client.dataset(run.default_dataset_id).iterate_items():if f.get("price"):print(f["departureDate"], f["price"], f["currency"], "/".join(f["airlines"]))
JavaScript / Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('rt-solutions/google-flights-scraper').call({ origins: ['LHR'], destinations: ['JFK'], departureDates: ['2026-12-18'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((f) => f.price).map((f) => `${f.price} ${f.currency} ${f.airlines.join('/')}`));
HTTP (one call, results in the response):
curl -X POST "https://api.apify.com/v2/acts/rt-solutions~google-flights-scraper/run-sync-get-dataset-items?timeout=120" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"origins":["JFK"],"destinations":["LHR"],"departureDates":["2026-12-10"]}'
No-code: Make, n8n and Zapier can call the same HTTP endpoint (n8n: HTTP Request node, POST, Header Auth Authorization: Bearer …). Apify's Google Sheets integration can push every run into a sheet, and webhooks can notify your system when a run finishes.
Use it from Claude, ChatGPT, Cursor or any MCP agent
Connect the Apify MCP server (https://mcp.apify.com) to your AI client and allow the Actor rt-solutions/google-flights-scraper. Then ask in plain language, for example: "Find the 5 cheapest nonstop flights from London to Barcelona on 12 December and tell me the airlines and times."
🤖 For AI Agents & LLM Apps
- What the tool does: returns Google Flights results (price, airlines, times, stops, layovers, CO2, legs) for given origins, destinations and dates.
- Minimal input:
{"origins": ["<IATA or city>"], "destinations": ["<IATA or city>"], "departureDates": ["YYYY-MM-DD"]}. - Round trip: add
returnDateortripLengthDays. - Ranges:
departureDates: ["2026-12-01..2026-12-14"]→ one search per day; aggregate bydepartureDateand takemin(price). - Output contract: one JSON object per flight;
priceis a number incurrencyfor all passengers; rows withstatus(no_flights,error) contain no flight and are free. - Good prompts: "cheapest day to fly X→Y in
- Cost guard: set
maxSearches(andmaxFlightsPerSearch) to bound a run; cost = flights with a price × $0.0008 on the free plan.
❓ FAQ
Is it legal to scrape Google Flights?
The Actor reads public search results that anyone can open without an account and collects no personal data. Use the data responsibly and in line with the laws that apply to you.
Does Google Flights have a public API?
No. Google retired its QPX Express flight API in 2018; this Actor is a practical way to get the same data as JSON.
How far ahead can I search?
As far as airlines sell — about 11 months ahead. Past dates are skipped and dates beyond ~11 months get a warning (they usually return no flights, which is not charged).
Can I use city names instead of airport codes?
Yes. Major cities (New York, London, Paris, Tokyo, Milan, Rome, Dubai, Casablanca, Madrid, Barcelona…) are converted to IATA city codes so all their airports are searched. You can also use city codes directly (NYC, LON, PAR). Other city names still work as a simple text search, but premium economy, the "1 stop or fewer" filter and non-English names then need airport or city codes (you get a warning).
How do I find the cheapest day to fly?
Give a date range (2026-12-01..2026-12-31) and keep the lowest price per departureDate.
Are round-trip prices per direction or total?
Total round-trip price for all passengers, as shown by Google Flights with the outbound flight.
Does the price include all passengers?
Yes — price is the total for adults + children.
Which currencies are supported?
30, including USD, EUR, GBP, CAD, AUD, JPY, CNY, INR, AED, SAR, CHF and MAD.
Why did a run return fewer flights than expected?
Google Flights usually shows 10–30 flights per search. Filters (stops, cabinClass) and maxFlightsPerSearch reduce the number. Some routes simply have few flights on a given day.
What happens if a route has no flights?
You get one free row with status: "no_flights" and a link to the same search on Google Flights.
Can I scrape many routes in one run?
Yes. Every origin × destination × date is searched (up to maxSearches, default 200).
Can I get booking links and seller prices?
No — see "Who this is not for". You get the Google Flights price and a link to the same search.
Do I need proxies?
No. The default Apify Proxy works; residential IPs are used automatically only when needed.
How often are prices updated?
Every run reads Google Flights live; schedule runs as often as you need.
Can I use it through the Apify API or an MCP server?
Yes — see "Integrations" above (Python, Node.js, HTTP, Make, n8n, Zapier, MCP).
Can I export to Excel or Google Sheets?
Yes: download JSON, CSV, Excel or HTML from the run, or use Apify's Google Sheets integration.
How is this different from other Google Flights Actors?
One of the lowest listed prices per flight on the Store on 31 October 2026 (see the comparison table — event definitions differ between Actors), free rows for empty searches and unpriced flights, city names mapped to all their airports, and CO2 for every segment. If you need booking links, a price calendar or multi-city trips, other Actors cover that (see "Who this is not for").
Limits
- One way and round trip only (no multi-city).
- No booking links, sellers, baggage or fare classes.
maxConcurrencyis capped at 6 to stay reliable.- Prices are what Google Flights shows at the time of the run; airlines change fares constantly.
Run health
- 3 November 2026: 3 runs, 14 searches, 183 flights, 0 errors, 0 failed runs (see "Real runs" above).
Your feedback
Missing a field or found a wrong result? Open an issue in the Issues tab — we answer fast and ship fixes quickly (see "What's new"). If the Actor saved you time or money on a fare, a short review helps other travelers find it.
Related scrapers
- Google Hotels Prices
- Google Trends Scraper
- Tripadvisor Reviews Scraper
- Google Search Results Scraper
Code example: Google Flights price tracker in Python — ready-to-run script on GitHub.