Skip to the content.

Google Flights Scraper

Flight prices, airlines, times and stops for any route and dates, one-way or round trip. From $0.002 / flight, pay per result, no browser, no login.

▶ Run it on Apify · Python example · All scrapers

Get Google Flights results as clean JSON, CSV or Excel: prices, airlines, flight numbers, departure and arrival times, duration, stops, layovers, aircraft, legroom and CO₂ — for one-way and round trips, any cabin, any currency. Search many routes and dates in one run to find the cheapest day to fly. No headless browser, so a search takes about 2 seconds.

✅ Prices (total for all passengers) in EUR, USD, GBP or any currency ✅ Google’s “best flights” flagged, then all other itineraries sorted by price ✅ Every leg: flight number, airline, airports, local times, duration, aircraft, legroom ✅ Stops and layovers (airport and minutes) ✅ CO₂ emissions vs the typical emissions on the route ✅ Many routes × many dates in one run — price calendars and cheapest-day searches ✅ One-way and round trips, adults and children, economy to first class, nonstop filter ✅ A Google Flights link for every search, to open it and book


🚀 Why this Google Flights API is different

  This Actor Typical flight scrapers
Price $0.002 per flight $0.015–$0.03 per results page
Speed ~2 s per search, no browser 20–60 s with headless Chrome
Routes × dates in one run Yes (up to 300 searches) One search per run
Flight numbers, aircraft, legroom, CO₂ Yes Partial
Blocking handling Retries, new IPs, automatic residential fallback Fails on cloud IPs
Charged for empty searches Never Often

💡 Use cases


🛠️ How to scrape Google Flights (3 steps)

  1. Enter origin and destination codes (LIS, LHR, JFK… or city codes like LON, PAR, NYC).
  2. Add departure dates (and a trip length for round trips), passengers, cabin and stops.
  3. Click Start and download the flights as JSON, CSV, Excel or use the API.

📥 Input example

{
  "origins": ["LIS", "OPO"],
  "destinations": ["LON", "PAR"],
  "departureDates": ["2026-12-10", "2026-12-11", "2026-12-12"],
  "tripLengthDays": 7,
  "adults": 2,
  "cabin": "economy",
  "maxStops": "nonstop",
  "currency": "EUR",
  "maxResultsPerSearch": 10
}

📤 Output example (real search, Lisbon → London, one-way)

{
  "origin": "LIS",
  "destination": "LHR",
  "departureDate": "2026-12-10",
  "returnDate": null,
  "tripType": "one-way",
  "cabin": "economy",
  "price": 64,
  "currency": "EUR",
  "isBest": true,
  "airlines": ["Iberia"],
  "departureTime": "2026-12-10T06:30",
  "arrivalTime": "2026-12-10T17:15",
  "durationMinutes": 645,
  "stops": 1,
  "layovers": [{ "airport": "MAD", "airportName": "Adolfo Suárez Madrid-Barajas Airport", "minutes": 415 }],
  "segments": [
    { "flightNumber": "IB540", "airline": "Iberia", "from": "LIS", "to": "MAD", "departure": "2026-12-10T06:30", "arrival": "2026-12-10T08:55", "durationMinutes": 85, "aircraft": "Airbus A321", "legroom": "29 in" }
  ],
  "emissionsKg": 166,
  "typicalEmissionsKg": 131,
  "googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=…"
}

The run’s RUN_SUMMARY record also lists the cheapest flight of every search — a ready-made price calendar.


⚙️ Input parameters

Field Type Default Description
origins array ["LIS"] IATA codes, one per line: LIS, OPO, LHR, or city codes like LON, PAR, NYC. Every origin is searched to every destination.
destinations array ["LHR"] IATA codes, one per line: LHR, CDG, JFK, or city codes like LON, PAR, NYC.
departureDates array — One date per line, YYYY-MM-DD. Add several dates to find the cheapest day. Past dates are skipped; empty = 30 days from today.
tripLengthDays integer 0 0 = one-way. Otherwise the return flight is this many days after each departure date.
adults integer 1 Passengers aged 12+. Prices are totals for all passengers.
children integer 0 Passengers aged 2-11.
cabin string "economy" Travel class. Values: economy, premium-economy, business, first.
maxStops string "any" Maximum number of stops. Values: any, nonstop, 1, 2.
currency string "EUR" ISO currency code: EUR, USD, GBP, BRL…
language string "en" Language of airline and airport names, e.g. en, pt, fr, de.
maxResultsPerSearch integer 20 Google’s best flights come first, then the cheapest. Lower it to control cost.
onlyBestFlights boolean false Keep only the itineraries Google ranks as best (price, duration and stops balanced).
proxyConfiguration, maxRetries object, integer Apify Proxy, auto Proxy and retries; the defaults work for most runs.

📋 Output fields

Field Type Description
origin string Origin airport/city code
destination string Destination airport/city code
departureDate string Outbound date
returnDate string Return date (round trips)
tripType string one-way or round-trip
cabin string Cabin class
price integer/number Total price for all passengers
currency string Currency of the price
isBest boolean Listed by Google among the best flights
airlines array Airlines of the itinerary
departureTime string Local departure time
arrivalTime string Local arrival time
durationMinutes integer Total travel time
stops integer Number of stops
layovers array Layover airports and minutes
segments array Flights: number, airline, airports, times, aircraft, legroom
emissionsKg integer CO2 emissions per passenger (kg)
typicalEmissionsKg integer Typical CO2 on this route (kg)
googleFlightsUrl string Open the search on Google Flights to book

Export as JSON, CSV, Excel, XML or HTML, or read it through the API.


💰 Pricing — pay per flight returned

What you run Flights Cost (free plan)
1 route, 1 date, top 10 10 $0.02
1 route, 30 dates, top 5 (cheapest-day search) 150 $0.30
10 routes daily, top 20 200/day $0.40/day

Higher Apify plans pay less: $0.0017 (Bronze), $0.0014 (Silver), $0.001 (Gold and above). Platform usage and proxies are included. Lower maxResultsPerSearch to control cost; searches without flights are never charged.


🔌 API & integrations

Python

from apify_client import ApifyClient  # pip install "apify-client>=3"

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("victorrodi/google-flights-scraper-api").call(
    run_input={"origins": ["LIS"], "destinations": ["JFK"], "departureDates": ["2026-12-10"], "maxResultsPerSearch": 5}
)
for f in client.dataset(run.default_dataset_id).iterate_items():
    print(f["price"], f["currency"], f["airlines"], f["departureTime"], f["stops"])

JavaScript / Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('victorrodi/google-flights-scraper-api').call({
  origins: ['NYC'], destinations: ['LON'], departureDates: ['2026-12-10'], tripLengthDays: 7,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((f) => `${f.price} ${f.currency} ${f.airlines.join('/')}`));

cURL

curl -X POST "https://api.apify.com/v2/acts/victorrodi~google-flights-scraper-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"origins": ["LIS"], "destinations": ["LHR"], "departureDates": ["2026-12-10"], "maxResultsPerSearch": 5}'

Also works with Make, Zapier, n8n, Google Sheets, Slack and MCP / AI agents: “Find the cheapest nonstop flight from Lisbon to Paris next Friday with the Google Flights scraper.”


🤖 Use it from AI agents (Claude, ChatGPT, Cursor…)

This Actor is available to AI assistants through the Apify MCP server. Add the server to Claude Desktop, Claude Code, Cursor or any MCP client, then simply ask:

“Find the cheapest nonstop flight from Lisbon to London on December 10 with Google Flights.”

“Compare round-trip prices from New York to Paris for each day of the first week of December.”

The clean, flat output is designed to be read directly by LLMs.


🛡️ Reliability

More examples and docs for all our Actors: Vicshock/trendpulse-scrapers.


📌 Tips

❓ FAQ

Is there an official Google Flights API? No — Google closed the QPX Express API in 2018. This Actor reads the public Google Flights results.

Can I book through it? It returns the data and a Google Flights link for each search; booking happens on Google Flights or the airline site.

Which currencies and languages? Any currency supported by Google Flights (EUR, USD, GBP, BRL, CHF…) and language for names (en, pt, fr, de…).

Is it legal? The Actor reads publicly displayed flight offers — no personal data. Make sure your use respects Google’s terms and the laws that apply to you.

💬 Support

Missing a field or found an issue? Open an issue in the Issues tab — it is answered fast.