Google Flights Scraper
Pricing
Pay per event
Google Flights Scraper
Pricing
Pay per event
Rating
0.0
(0)
Developer
Logical Vivacity
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Google Flights Scraper — Fares, Schedules, Stops & Airlines
Every flight on a route, with the fare and the details that decide whether it's worth it.
Give it a route and a date — JFK-LIS 2026-11-12 — or two dates for a round trip. This Actor returns every itinerary Google Flights shows: the fare, the airlines, every flight number, departure and arrival times, stops and layovers (city, length, whether you change airport), total duration, aircraft, legroom and CO₂. Put as many routes in one run as you like.
Each route also gets a summary row: the lowest, median and highest fare, the cheapest itinerary, the cheapest nonstop, the fastest, and every airline flying it.
You pay per itinerary returned. Routes with no flights, invalid lines and searches that fail cost you nothing.
Try it in 30 seconds
Put these in Routes, leave everything else alone, hit Start:
JFK-LIS 2026-11-12SFO-NRT 2026-12-05 2026-12-19
One way to Lisbon, and a round trip to Tokyo — one table out, with a summary row for each.
Writing routes
One per line, 3-letter airport codes:
| Line | Means |
|---|---|
JFK-LIS 2026-11-12 | One way |
JFK-LIS 2026-11-12 2026-11-20 | Round trip (also 2026-11-12/2026-11-20) |
JFK,EWR-LHR 2026-12-01 | From either New York airport |
LHR-CDG,ORY 2026-11-20 | To either Paris airport |
JFK to LIS 2026-11-12 | to works as well as - |
A line that doesn't parse comes back as invalid_input with a message saying how to fix it — and isn't charged.
What you get per itinerary
A real row — JFK to Lisbon, 12 November, one adult, in USD:
{"route": "JFK-LIS 2026-11-12","tripType": "one_way","position": 1,"price": 292,"currency": "USD","airlines": ["LEVEL", "Vueling"],"stops": 1,"totalDurationMinutes": 730,"departureTime": "2026-11-12T23:45","arrivalTime": "2026-11-13T16:55","legs": [{ "flightNumber": "LL 2628", "airline": "LEVEL", "from": "JFK", "to": "BCN","departureTime": "2026-11-12T23:45", "arrivalTime": "2026-11-13T13:10", "durationMinutes": 445 },{ "flightNumber": "VY 1148", "airline": "Vueling", "from": "BCN", "to": "LIS","departureTime": "2026-11-13T15:50", "arrivalTime": "2026-11-13T16:55", "durationMinutes": 125,"legroom": "29 inches" }],"layovers": [{ "airport": "BCN", "city": "Barcelona", "durationMinutes": 160, "changeOfAirport": false }],"co2TypicalGrams": 486000,"isCheapest": true,"googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=…","status": "ok"}
Round trips carry the return too — returnLegs, returnLayovers, returnDepartureTime, returnArrivalTime, returnStops — and the price is the whole trip, both ways.
The summary row
A real one, from the same route priced in euros — 121 itineraries found:
{"rowType": "summary","route": "JFK-LIS 2026-11-12","itinerariesFound": 121,"currency": "EUR","lowestPrice": 255, "medianPrice": 421, "highestPrice": 2349,"cheapest": { "price": 255, "airlines": ["LEVEL", "Vueling"], "stops": 1, "flightNumbers": ["LL 2628", "VY 1148"] },"cheapestNonstop": { "price": 352, "airlines": ["Tap Air Portugal"], "stops": 0, "flightNumbers": ["TP 210"] },"fastest": { "price": 405, "airlines": ["Delta"], "stops": 0 },"nonstopCount": 2,"airlinesServing": ["Aer Lingus", "Air Europa", "Air France", "…"]}
The cheapest nonstop costs €97 more than the cheapest one-stop — that's the trade-off in one row.
Who uses this
Fare trackers and deal newsletters — the same routes every day, summary rows only, and you have a price history to alert on.
Travel agencies and corporate travel — every option on a client's route in one table, filtered by cabin and stops, in their currency.
Airline and airport analysts — who flies a route, how many nonstops, how fares spread across carriers and dates.
Travel apps and AI travel agents — structured itineraries with flight numbers and times, ready to show or reason over.
Researchers — fares and emissions across routes and seasons, collected on a schedule.
What makes it different
The real airline names. Airline codes get reassigned. Code "LL" belonged to Miami Air International, which closed in 2020; today it's LEVEL. Many tools still name it from an old table. This Actor takes the name from Google Flights' own listing, so the row says who you'd actually fly.
Round trips as complete itineraries. Outbound and return together, with the fare for the whole trip. Many tools return only the outbound and a price you can't pair with a flight home.
Many routes, one run. One route per line, with each line checked. A typo fails that line with an explanation; the other routes still run.
A summary row per route. Cheapest, cheapest nonstop, fastest and the median — the answer, not just the data.
Every leg and layover. Flight numbers, times, aircraft, legroom, layover city and length, and a flag when a connection means changing airports.
Settings that matter
| Setting | What it does |
|---|---|
| Routes | One per line — ORIGIN-DESTINATION DATE, plus a return date for a round trip |
| Adults / Children | The fare covers the whole party |
| Cabin | Economy, premium economy, business or first |
| Stops | Any, nonstop only, 1 or fewer, 2 or fewer |
| Currency | 30 currencies |
| Order | Google's "best", cheapest, shortest, departure or arrival time (one-way) |
| Maximum itineraries per route | Default 50 |
| Include a summary row | On by default. One row per route, charged once |
Connection handling, pacing, retries and blocking are managed for you — there's nothing to configure and no proxy to set up.
Automate it
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~google-flights-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{ "routes": ["JFK-LIS 2026-11-12", "JFK-LIS 2026-11-19", "JFK-LIS 2026-11-26"],"cabinClass": "economy", "maxStops": "oneStop","currency": "USD", "maxResultsPerRoute": 20 }'
Works with Make, Zapier, n8n, Google Sheets and the Apify API, and as an MCP tool for AI agents. Put the same route on several dates and the summary rows are a fare calendar.
Row statuses
status | Meaning |
|---|---|
ok | An itinerary (or a summary) was returned — charged |
not_found | No flights match this route, date and filters — not charged |
invalid_input | The line couldn't be read, or the date is in the past — not charged |
error | Temporarily unreachable — retry that route; not charged |
FAQ
Can I search by city instead of airport?
Use the airport codes, comma-separated, for a city with several airports: JFK,EWR,LGA-LHR,LGW 2026-12-01.
How many round-trip itineraries do I get? Round trips are priced per outbound choice. This Actor opens the cheapest outbound options and returns every return flight that pairs with each, as complete itineraries sorted by total price.
Are the fares live? Yes. Each run fetches current fares for the dates you set. Fares move constantly, so every row records when it was captured.
Why is a fare sometimes missing? Google Flights occasionally lists a flight without a bookable fare. It's still returned, with an empty price, rather than dropped.
Do I need a Google account or API key? No.
Terms of Use
This Actor collects publicly available information shown on Google Flights — fares and schedules that anyone can see without signing in.
You are responsible for using the results lawfully and in line with the applicable terms and regulations in your jurisdiction, including rules on competition, consumer protection and the reuse of commercial data.
Fares change continuously and differ by market, device and account. The data is provided without warranty of accuracy, completeness or fitness for a particular purpose — confirm the final fare with the airline or booking site before relying on it. This Actor is not affiliated with, endorsed by, or sponsored by Google or any airline.
Missing a field or a filter you need? Open an issue on the Actor's Issues tab.