Google Flights Scraper & API - Flight Prices & Airfare Tracker avatar

Google Flights Scraper & API - Flight Prices & Airfare Tracker

Pricing

from $0.05 / 1,000 results

Go to Apify Store
Google Flights Scraper & API - Flight Prices & Airfare Tracker

Google Flights Scraper & API - Flight Prices & Airfare Tracker

Google Flights scraper and API: flight prices for any route and date, one-way or round trip. One row per itinerary: total price, Google low/typical/high price level, airlines, flight numbers, stops, layovers, times, CO2. $0.05 per 1,000 itineraries, below the top 5 rivals on 6 Nov 2026.

Pricing

from $0.05 / 1,000 results

Rating

0.0

(0)

Developer

Giovanni Rich

Giovanni Rich

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Google Flights scraper and unofficial Google Flights API: enter a route and dates, and get one-way and round-trip itineraries with the total price, Google's low/typical/high price level, airlines, flight numbers, stops, layovers, durations, local departure/arrival times with UTC offsets, aircraft, legroom and CO2 emissions as clean JSON, CSV or Excel. A fast, cheap flight price scraper for airfare data, fare tracking and travel apps: no browser and no Google API key. A one-way search is one request and usually returns 10-40 itineraries (2 seconds in a local test on 4 Nov 2026, no proxy).

What you get

  • Price: total price for all passengers in your currency, plus priceLevel (Google's own low / typical / high verdict for the route and date).
  • Flights: airlines and airline codes, flight numbers, operating carrier, aircraft, legroom, number of stops.
  • Times: local departure and arrival date/time with UTC offset, total duration, arrival day offset.
  • Layovers and segments: each connection airport, city and layover time, and every segment with its own times, aircraft and emissions.
  • CO2: emissions per itinerary and per segment, the route's typical emissions and the % difference.
  • Round trips: one row per complete outbound + return pair with the round-trip total and the return leg in returnFlight.
  • Links: googleFlightsUrl opens the exact itinerary on Google Flights' booking page.

Sample output

Real rows from a test run: Madrid to Barcelona (MAD-BCN), one-way, 15 Oct 2026, 1 adult, economy, USD.

airlinesflightNumbersdepartureTimearrivalTimestopstotalDurationpricepriceLevel
Air EuropaUX 770107:3008:5501 hr 25 min59typical
VuelingVY 101109:3510:5501 hr 20 min68typical
IberiaIB 40910:2511:4501 hr 20 min107typical
IberiaIB 40106:4008:0001 hr 20 min98typical
VuelingVY 101320:4522:0501 hr 20 min99typical

Use cases

  • Fare tracking and price alerts: run it on a schedule for your routes and get notified when the price drops; priceLevel gives Google's own verdict.
  • Travel apps and AI agents: feed real itineraries into a booking assistant, chatbot or comparison tool.
  • Airfare market research: compare airlines, nonstop availability, connection points and price levels across routes and dates.
  • Corporate travel: price a list of trips (many routes and dates in one run) in business or economy.
  • Sustainability reporting: per-flight and per-segment CO2 estimates, plus the difference from the route's typical emissions.

Pricing

$0.05 per 1,000 itineraries (pay per result; failed requests are never charged). A one-way search usually returns 10-40 itineraries, so one route and date costs about $0.0005-$0.002. Rival list prices on 6 Nov 2026: lergassy $1.00 per 1,000, kaix $0.06 + $0.00005 start, memo23 $2.00 + $0.005 start, automation-lab $0.23 + $0.005 start, lergassy's API $0.20, curious_coder $0.20 + $0.00005 start, mtnrabi $0.003 per search + $0.01 per 1,000 rows + start, and johnvc bills $0.03 per results page plus $0.02 per booking option. Same row price: poidata $0.05 + $0.00005 per search + start, automly (1 user) $0.05 + $0.001 per search, reportable_broth (1 user) $0.05 with no start fee. Lower per row: danthedataman (1 user) $0.027 + $0.00005 start.

You scrapeYou pay
100 itineraries$0.005
1,000 itineraries$0.05
10,000 itineraries$0.50
100,000 itineraries$5.00

Plus a $0.00005 start fee per run. The Apify free plan's $5 monthly credit covers about 100,000 itineraries. The prefilled input (JFK to LAX, 30 days out, 10 itineraries) took 2 seconds in a local test (Apify start-up not included) and costs about $0.0006.

Why this one

  • Below the 5 most-used Google Flights scrapers on 6 Nov 2026: $0.05 per 1,000 itineraries, no per-search or per-page fee, against $0.06 to $2.00 per 1,000 or per-page billing: a daily fare check on 30 routes (20 itineraries each) costs about $0.90 a month.
  • Google's own price verdict: priceLevel (low / typical / high) on every row, ready for fare alerts.
  • Round trips as complete pairs: one row per outbound + return combination with the round-trip total.
  • Many routes and dates in one run via searches, one request per one-way search.
  • Booking link per itinerary: googleFlightsUrl opens the exact flights on Google Flights.

FAQ

Is it legal to scrape Google Flights? The actor only collects publicly visible flight search results: no logins and no personal data. You are responsible for how you use the data: respect Google's terms of service and applicable laws such as GDPR. This is not legal advice; ask a lawyer if you are unsure.

Does it need a login or an official Google Flights API key? No. Google has no public flight API (it shut down QPX Express in 2018). This actor reads the same results the Google Flights website shows, over plain HTTP, so you can use it as a Google Flights API without any key or account.

How fast is it and how many results do I get? A one-way search is 1 request (2 seconds in a local test on 4 Nov 2026, no proxy; a proxy adds time). It returns what is on Google's initial results page, typically 10-40 itineraries (in tests: 36 JFK-LAX, 18 Madrid-Barcelona, 7 Charlotte-Tokyo). A round trip with the default 3 expanded outbound flights is 4 requests and typically returns 25-40 complete pairs. Up to 9 passengers and about 11 months ahead.

What does a typical job cost? One route and date is about $0.0005-$0.002. A daily alert on 3 holiday routes is under $0.01 a run (about $0.09 a month at 60 itineraries a run); the cheapest day of a month (30 searches) is about $0.05; a daily check on 30 routes is about $0.90 a month.

Can I schedule it or search many routes and dates? Yes. Put one object per route/date in searches (e.g. every day of a month), schedule the run daily or hourly in Apify Console, or start it from the Apify API, Make, Zapier, n8n or the Apify MCP server.

Do I need a proxy? How does it avoid blocks? Apify Proxy (the default) works. Requests use realistic Chrome desktop headers and a pool of rotating sessions; captcha pages, 401/403/429 responses and empty pages are detected, and the request is retried on a new IP with backoff (6 retries by default). If you run many searches and still see blocks, switch the proxy group to RESIDENTIAL.

How to use

  1. Enter a route: origin and destination airport codes (e.g. JFK and LAX), a departure date (empty = 30 days from today) and, for a round trip, a return date.
  2. Click Start. Each search takes a few seconds.
  3. Download the flights as JSON, CSV or Excel from the dataset, or call the actor from your code through the Apify API.

Input

FieldWhat it does
origin, destinationIATA airport code (JFK), several airports comma-separated (JFK,EWR,LGA), or a Google city id (/m/02_286 = New York, all airports).
departureDateYYYY-MM-DD. Empty = 30 days from today.
returnDateYYYY-MM-DD for a round trip. Empty = one-way.
searchesMany routes/dates in one run: [{"origin":"JFK","destination":"LAX","departureDate":"YYYY-MM-DD","returnDate":"YYYY-MM-DD"}, ...]
adults, children, infantsInSeat, infantsOnLapPassengers (max 9). Prices are totals for everyone.
cabinClasseconomy, premium_economy, business, first.
maxStopsany, 0 (nonstop), 1, 2.
airlinesOnly these airlines (AA, DL, BA...) or alliances (STAR_ALLIANCE, ONEWORLD, SKYTEAM).
currencyAny 3-letter code: USD, EUR, GBP, JPY...
maxResultsItineraries per search (0 = all Google shows).
returnFlightsForTopOutboundRound trips: how many of the top outbound flights to expand into full outbound + return pairs (default 3). 0 = outbound options only.

Input example

One-way, next month (leaving departureDate out searches 30 days from today):

{
"origin": "JFK",
"destination": "LAX",
"adults": 1,
"cabinClass": "economy",
"maxStops": "any",
"currency": "USD",
"maxResults": 10
}

Round trip with a fixed date and only nonstop flights:

{
"origin": "SFO",
"destination": "ORD",
"departureDate": "2026-12-18",
"returnDate": "2026-12-22",
"maxStops": "0",
"returnFlightsForTopOutbound": 3,
"currency": "USD"
}

Example inputs for common jobs

Daily fare alert on 3 routes over the holidays (schedule it daily; alert when priceLevel is low; under $0.01 a run):

{
"searches": [
{ "origin": "JFK", "destination": "LAX", "departureDate": "2026-12-19" },
{ "origin": "ORD", "destination": "MIA", "departureDate": "2026-12-20" },
{ "origin": "LHR", "destination": "JFK", "departureDate": "2026-12-21", "returnDate": "2027-01-04" }
],
"maxResults": 20
}

Cheapest day of a month: one search per date (30 searches, about $0.05 at 30 itineraries each):

{
"searches": [
{ "origin": "SFO", "destination": "NRT", "departureDate": "2027-02-01" },
{ "origin": "SFO", "destination": "NRT", "departureDate": "2027-02-02" },
{ "origin": "SFO", "destination": "NRT", "departureDate": "2027-02-03" }
],
"maxStops": "1"
}

Business class on Star Alliance only, priced in euros from Germany:

{ "origin": "FRA", "destination": "SIN", "departureDate": "2027-03-10", "cabinClass": "business", "airlines": ["STAR_ALLIANCE"], "currency": "EUR", "country": "de" }

Family of four, all New York airports to Orlando, nonstop, outbound list only (1 request):

{ "origin": "JFK,EWR,LGA", "destination": "MCO", "departureDate": "2027-04-10", "returnDate": "2027-04-17", "adults": 2, "children": 2, "maxStops": "0", "returnFlightsForTopOutbound": 0 }

Output example

One row per itinerary. This is a real row from a test run (Charlotte to Tokyo Narita, one-way), lightly trimmed:

{
"searchId": "CLT-NRT 2026-12-03",
"tripType": "one_way",
"origin": "CLT",
"destination": "NRT",
"cabinClass": "economy",
"passengers": { "adults": 1, "children": 0, "infantsInSeat": 0, "infantsOnLap": 0 },
"currency": "USD",
"position": 1,
"category": "best",
"price": 1014,
"priceLevel": "typical",
"airlines": ["Air Canada"],
"airlineCodes": ["AC"],
"flightNumbers": ["AC 8746", "AC 9"],
"stops": 1,
"totalDurationMinutes": 1055,
"totalDuration": "17 hr 35 min",
"departureAirport": "CLT",
"departureAirportName": "Charlotte Douglas International Airport",
"departureDateTime": "2026-12-03T08:55:00-05:00",
"arrivalAirport": "NRT",
"arrivalAirportName": "Narita International Airport",
"arrivalDateTime": "2026-12-04T16:30:00+09:00",
"arrivalDayOffset": 1,
"layovers": [
{ "airport": "YYZ", "airportName": "Toronto Pearson International Airport", "city": "Toronto", "durationMinutes": 98, "durationText": "1 hr 38 min" }
],
"segments": [
{
"flightNumber": "AC 8746", "airline": "Air Canada", "airlineCode": "AC",
"operatedBy": "Air Canada Express - Jazz", "aircraft": "Embraer 175",
"departureAirport": "CLT", "arrivalAirport": "YYZ",
"departureDateTime": "2026-12-03T08:55:00-05:00", "arrivalDateTime": "2026-12-03T10:57:00-05:00",
"durationMinutes": 122, "legroom": "31 in", "emissionsKg": 142
},
{
"flightNumber": "AC 9", "airline": "Air Canada", "airlineCode": "AC",
"operatedBy": null, "aircraft": "Boeing 777",
"departureAirport": "YYZ", "arrivalAirport": "NRT",
"departureDateTime": "2026-12-03T12:35:00-05:00", "arrivalDateTime": "2026-12-04T16:30:00+09:00",
"durationMinutes": 835, "legroom": "31 in", "emissionsKg": 582
}
],
"emissionsKg": 724,
"typicalEmissionsKg": 817,
"emissionsDifferencePercent": -11,
"returnFlight": null,
"googleFlightsUrl": "https://www.google.com/travel/flights/booking?tfs=...",
"scrapedAt": "2026-09-24T05:14:34.715Z"
}

(Some fields shortened here; the dataset also has searchDepartureDate, searchReturnDate, departureDate, departureTime, arrivalDate, arrivalTime and airport names on every segment.)

Round trips: price is the full round-trip total and returnFlight holds the return leg with the same fields (airlines, flight numbers, segments, layovers, times). googleFlightsUrl opens the exact outbound + return pair on Google Flights' booking page. Round-trip rows also carry outboundPosition and a priceNote.

category is best for the flights Google ranks as "Best", other for the rest. priceLevel is Google's own verdict for the route and date: low, typical or high.

A RUN_SUMMARY record in the key-value store lists, per search: results, itineraries found, price level and why it stopped.

API example

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rel8ble/google-flights-scraper").call(run_input={"origin": "JFK", "destination": "LAX", "departureDate": "2026-12-03", "returnDate": "2026-12-10", "maxResults": 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["airlines"], item["price"], item["priceLevel"], item["stops"])

One HTTP call that runs the actor and returns the rows (curl):

curl -X POST "https://api.apify.com/v2/acts/rel8ble~google-flights-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"origin": "JFK", "destination": "LAX", "departureDate": "2026-12-03", "returnDate": "2026-12-10", "maxResults": 20}'

Integrations

  • Apify API: start runs and fetch results over REST, or with the official JavaScript and Python clients.
  • No-code: connect to Make, Zapier, n8n and Google Sheets to push fares into spreadsheets, alerts or workflows.
  • Webhooks: get a call when a run finishes (e.g. to trigger a price-drop alert).
  • Schedules: run the same searches daily or hourly from the Apify Console.
  • MCP for AI agents: the Apify MCP server (https://mcp.apify.com) lets Claude, ChatGPT, Cursor and other agents call this Google Flights scraper as a tool.

How round trips work

Google Flights prices a round trip as a pair. First it lists outbound flights, each with the cheapest round-trip price that includes it; after you pick one, it lists the returns with the final total. This actor does the same: it lists outbound flights, then fetches the returns for the top returnFlightsForTopOutbound outbound flights (Google's "best" order) and outputs one row per complete pair. Set it to 0 if you only need the outbound list with "from" prices (1 request per search).

Speed and cost

  • One-way search: 1 request, usually 10-40 itineraries, 2 seconds in a local test (no proxy).
  • Round trip with the default of 3 expanded outbound flights: 4 requests, typically 25-40 complete round trips.
  • No browser. The default 512 MB is also the minimum this actor allows.

Reliability

  • Plain HTTP with rotating proxy sessions. Blocked or captcha responses are detected, the session is retired and the request retried on a new IP with backoff.
  • If a round-trip return lookup fails after all retries, you still get the outbound row (with returnFlight: null and a returnFlightsError), not a crashed run.
  • Inputs are checked before any request is made (bad airport codes, past dates, more than 9 passengers), with a clear error message.
  • Runs survive migrations: progress is saved and resumed.

Limits

  • Multi-city (open-jaw with 3+ legs) searches are not supported yet; one-way and round trip are.
  • Per-agency booking prices (Expedia vs airline, etc.) and baggage-fee details are not extracted.
  • Google only sells about 11 months ahead.
  • At most 9 passengers per search (Google Flights' own limit).

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble