Google Flights Scraper & API — Airfare & Price Calendar avatar

Google Flights Scraper & API — Airfare & Price Calendar

Pricing

from $0.80 / 1,000 flights

Go to Apify Store
Google Flights Scraper & API — Airfare & Price Calendar

Google Flights Scraper & API — Airfare & Price Calendar

Google Flights scraper and API: airfare, airlines, times, stops, layovers, CO2 and price insights for one-way, round-trip and multi-city trips, date ranges, every seller's fare with booking links, and cheapest-date calendars. Pay per result plus a small start fee, no platform fees.

Pricing

from $0.80 / 1,000 flights

Rating

0.0

(0)

Developer

Aaron Tuttle

Aaron Tuttle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape Google Flights airfare for $1.20 per 1,000 flights (as low as $0.80 on Business plans), plus a small start fee and no platform fees. Track fares on your routes, find the cheapest day to fly, or feed flight prices into your app, spreadsheet or AI agent.

This Google Flights scraper and API returns every flight Google lists for the search (up to Max flights per search) as clean JSON, CSV or Excel, for one-way, round-trip and multi-city trips: price, airlines, flight numbers, departure and arrival times, duration, stops and layovers, aircraft, legroom, Wi-Fi, CO2 emissions, and Google's "prices are low / typical / high" insight with the typical price range. Add round-trip pairs with exact prices, every seller's fare (airline or travel agency) with booking links, and price calendars with the cheapest fare for each departure date and the 5 cheapest days to fly.

Instead of loading pages in a browser, it reads the same data feed the Google Flights page loads in the background. That makes it fast and cheap to run.

What Google Flights data can you scrape?

DataDetails
FlightPrice, currency, position in Google's list, Google's top flight mark, airlines, flight numbers, departure and arrival airports and local times, total duration, number of stops
LegsFor each flight: flight number, airline, operated by, also sold as (codeshares), airports with full names, times, duration, aircraft, legroom, Wi-Fi / power / video, overnight flag, CO2
LayoversAirport, airport name, city, length in minutes, overnight, change of airport
EmissionsCO2 in grams, typical CO2 for the route, difference in %, lower / typical / higher
Price insightLow / typical / high, typical price range (on every flight); typical price, lowest price and about 60 days of price history (optional row)
Round tripsOutbound flights with round-trip totals; optionally each top outbound flight's return flights with the exact price of the pair
Multi-city tripsFirst flights with the price of the whole trip; optionally complete itineraries (nextFlights) with exact prices
Booking optionsSeller (airline or agency), airline-direct flag, fare name, price, carry-on and checked bag included, booking link, cheapest seller
Price calendarCheapest fare per departure date (and return date for round trips); the 5 cheapest dates per route in the run summary
LinksA Google Flights link for every search; dataSource says whether a result came from Google's data feed or the results page

Why use this Google Flights scraper

  • Reliable by design. Every throttled request is retried on a fresh session and IP with short backoff. Each request has a time limit, so runs never hang. If the data feed fails, the scraper reads the same flights from the normal Google Flights results page. If Google keeps blocking the default proxy, it switches to residential proxy automatically.
  • No platform fees on top. You pay per result plus a small start fee. Compute and proxy costs are included. Failed searches and searches with no flights are free.
  • Everything Google shows for a flight. Each flight number with its airline, operating carrier and codeshares, airports with full names, local times, layovers with city and length, aircraft, legroom, Wi-Fi, power and on-demand video, CO2 compared with typical, and self-transfer warnings.
  • Price insight on every flight. Whether today's prices for the search are low, typical or high, and Google's typical price range. Optionally about 60 days of price history per search.
  • Real round-trip prices. Google shows round-trip totals for outbound flights first; this scraper can also pick the top outbound flights and list their return flights with the exact price of each pair.
  • Multi-city trips. Up to 5 flights per trip (JFK-LHR 2026-11-20; LHR-CDG 2026-11-25; CDG-JFK 2026-12-02), with the price of the whole trip, complete itineraries for the top first flights, and booking options for them.
  • Booking options. Every seller of a flight (the airline and online travel agencies), each fare (Basic Economy, Main Cabin...) with its price, whether a carry-on and a checked bag are included, and a booking link.
  • Price calendars. The cheapest fare for up to 300 consecutive departure dates per route, in a few requests, plus the 5 cheapest dates in the run summary: find the cheapest day to fly.
  • Google's own filters. Stops, airlines and alliances (include or exclude), maximum price, maximum duration, layover length, connecting airports, departure and arrival times, bags in the price, no basic economy, lower emissions, cabin class, and every sort order.
  • Date ranges. Search every departure date between two dates, or only Fridays and Saturdays for weekend trips.
  • Bulk-friendly. Many routes times many dates in one run (up to 500 searches), several airports per side (JFK, EWR - LHR) and city codes (NYC, LON, PAR, TYO...).
  • Paste Google Flights links. Set up a search on google.com/travel/flights, copy the address, done. Every result links back to the same search on Google Flights.

How much does it cost to scrape Google Flights?

You pay per result plus a small start fee. Compute and proxy costs are included, with no platform fees. Prices drop on higher Apify plans:

EventFreeStarterScaleBusiness
Run start (once per run)$0.005$0.005$0.005$0.005
Flight$0.0012$0.001$0.0009$0.0008
Booking options (all sellers)$0.006$0.005$0.0045$0.004
Calendar date$0.0002$0.0002$0.0002$0.0002

A Flight is a one-way flight, the first flight of a round or multi-city trip, or a complete trip. Booking options are every seller and fare for one flight, with booking links. A Calendar date is the cheapest fare on one departure date.

ExampleFreeStarterScaleBusiness
30 flights for one route and date (the default search)$0.041$0.035$0.032$0.029
30 flights with booking options for each$0.221$0.185$0.167$0.149
30 flights for one route on each of 30 dates$1.085$0.905$0.815$0.725
1,000 flights$1.205$1.005$0.905$0.805
90-day price calendar for one route (plus its first 5 flights)$0.029$0.028$0.028$0.027

Apify's $5 free plan covers about 4,000 flights.

Searches that fail or find no flights, flights Google shows without a price, booking lookups without sellers, and calendar dates without a fare are not charged. Your Maximum cost per run setting is always respected, also with parallel sessions. When Apify doesn't tell the run your plan, it budgets at the Free price, so a run on a cheaper plan may stop a little before your maximum.

How to scrape Google Flights

  1. Enter one or more routes as airport codes, one per line: JFK-LAX, JFK, EWR - LHR, NYC - PAR.
  2. Enter one or more departure dates: 2026-11-20, or relative to the run like 30 days or 2 weeks (handy for scheduled runs). Or set a date range with Departure dates from and Departure dates to, optionally weekends only.
  3. Pick one-way or round trip (and the number of days until the return flight, or a return date), the passengers and the cabin. For multi-city trips, list each trip's flights under Multi-city trips instead.
  4. Optional: filters, round-trip pairs, booking options, a price calendar.
  5. Click Start. Download the results as JSON, CSV, Excel or HTML, or read them with the API.

Input examples

Cheapest one-way flights from New York to Los Angeles on two dates:

{
"routes": ["JFK, LGA, EWR - LAX"],
"departureDates": ["2026-11-20", "2026-11-27"],
"sortBy": "cheapest",
"maxFlightsPerSearch": 20
}

A week-long round trip in business class for two, nonstop on Oneworld airlines, with return flights and booking options for the top 3:

{
"routes": ["JFK-LHR"],
"departureDates": ["45 days"],
"tripType": "round-trip",
"tripLengthDays": 7,
"adults": 2,
"cabinClass": "business",
"maxStops": "nonstop",
"airlines": ["Oneworld"],
"returnFlightsForTopOutbound": 3,
"maxReturnFlightsPerOutbound": 5,
"bookingOptionsForTop": 3
}

A multi-city trip with complete itineraries for the top 3 first flights:

{
"multiCityTrips": ["JFK-LHR 2026-11-20; LHR-CDG 2026-11-25; CDG-JFK 2026-12-02"],
"maxFlightsPerSearch": 10,
"returnFlightsForTopOutbound": 3,
"maxReturnFlightsPerOutbound": 5
}

Every Friday and Saturday departure in December, as 2-day weekend round trips:

{
"routes": ["LAX-LAS"],
"departureDateFrom": "2026-12-01",
"departureDateTo": "2026-12-31",
"weekendsOnly": true,
"tripType": "round-trip",
"tripLengthDays": 2,
"maxFlightsPerSearch": 5
}

The cheapest day to fly in the next three months:

{
"routes": ["SFO-HNL"],
"departureDates": ["7 days"],
"maxFlightsPerSearch": 5,
"priceCalendarDays": 90
}

Output example (shortened)

{
"type": "flight",
"route": "JFK → LAX",
"tripType": "one-way",
"departureDate": "2026-11-20",
"position": 1,
"isTopFlight": true,
"price": 289,
"currency": "USD",
"priceLevel": "high",
"typicalPriceLow": 140,
"typicalPriceHigh": 275,
"flightNumbers": ["B6 123"],
"airlines": ["JetBlue"],
"departureAirport": "JFK",
"arrivalAirport": "LAX",
"departureTime": "2026-11-20T06:00",
"arrivalTime": "2026-11-20T08:52",
"durationMinutes": 352,
"stops": 0,
"legs": [
{
"flightNumber": "B6 123",
"airline": "JetBlue",
"departureAirportName": "John F. Kennedy International Airport",
"arrivalAirportName": "Los Angeles International Airport",
"aircraft": "Airbus A320",
"legroom": "33 inches",
"amenities": { "wifi": true, "power": null, "onDemandVideo": null },
"co2Grams": 407055
}
],
"layovers": [],
"co2Grams": 407000,
"typicalCo2Grams": 355000,
"co2DifferencePercent": 15,
"emissionsLevel": "higher",
"googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=...",
"warnings": []
}

Other row types share the same route and date fields:

  • round-trip: an outbound flight with one of its return flights (returnFlight), and the exact price of the pair.
  • multi-city: the first flight with the following flights (nextFlights), and the exact price of the whole trip. The flights of the trip are in tripFlights.
  • booking-options: the flight numbers plus bookingOptions, e.g. { "seller": "American", "isAirline": true, "fareName": "Main Cabin", "price": 457, "carryOnIncluded": true, "checkedBagIncluded": false, "bookingUrl": "https://www.google.com/travel/clk/f?u=..." }, sorted cheapest first.
  • calendar-date: departureDate, returnDate (round trips) and the cheapest price that day.
  • price-insight (optional, free): price level, typical price and range, and priceHistory as [{ "date": "2026-09-21", "price": 214 }, ...].
  • error: a search that failed or found nothing, with the reason (never charged).

Prices are what Google Flights shows: the total for all passengers in the search, taxes and fees included. Times are local to each airport, as on Google Flights. googleFlightsUrl opens the same route, dates, passengers, cabin, stops and airlines on Google Flights; other filters (price, times, bags, sort order) are set again there. The Flights, Price calendar and Booking options tabs of the results show the most useful columns.

Google Flights API: Python, JavaScript, Zapier, Make and AI agents (MCP)

Run it through the Apify API or the Apify clients for Python and JavaScript:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("aaronoptimus/google-flights-scraper").call(run_input={
"routes": ["JFK-LAX"],
"departureDates": ["30 days"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["type"] == "flight":
print(item["price"], item["flightNumbers"], item["departureTime"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('aaronoptimus/google-flights-scraper').call({ routes: ['JFK-LAX'], departureDates: ['30 days'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.type === 'flight').map((i) => [i.price, i.flightNumbers]));

It also works with Zapier, Make, n8n and Google Sheets. AI agents (Claude, ChatGPT, Cursor and other MCP clients) can use it through the Apify MCP server: https://mcp.apify.com?tools=aaronoptimus/google-flights-scraper.

Tips

  • Track fares over time: schedule the scraper (Apify Schedules) with relative dates like 30 days, and compare runs.
  • Round-trip and multi-city prices: the first-flight list already shows Google's totals for the whole trip. Set Next flights for the top N first flights when you need complete itineraries with the exact price of each. For multi-city trips, the middle flights are Google's top choice after the flight before; the last flight lists several options.
  • Premium cabins: for business and first class round trips, Google often shows no price until a return flight is chosen. Those flights come with a note; use the next-flights setting to get prices.
  • Market: fares can differ by country. Set Country and Currency to the market you want; proxy IPs are taken from that country.
  • Big runs: raise Parallel sessions for many routes and dates; leave the delay at 1 second.

What this tool doesn't do

  • It doesn't book flights or hold fares: booking links open the seller's site.
  • No "anywhere" or Explore searches yet, and no country names as origin: use airport or city codes.
  • No personal data and no logged-in features (price tracking emails, saved trips).
  • Prices are Google's, for the market you choose; they can change between the run and booking.

FAQ

Do I need a Google account or API key? No. The scraper only reads public Google Flights results, logged out.

Why is a flight's price null? Google didn't show a price for it, which happens for premium round trips until a return flight is chosen (see Tips). Those flights are delivered with their details but not charged; use the next-flights setting to get prices.

Are booking links permanent? They are Google's own redirect links to the seller and work for a while after the run, like the links on the Google Flights page. Fares change quickly; book soon after scraping.

Can I search multi-city trips? Yes: up to 5 flights per trip under Multi-city trips, or paste a Google Flights multi-city link.

Can I search "anywhere" or by country name? Not yet: use airport or city codes. Several airports per side are fine (JFK, EWR - LHR, LGW).

Which airports can I use? Any 3-letter IATA airport code, several per side, and the common city codes NYC, LON, PAR, TYO, CHI, WAS, MIL, ROM, SAO, RIO, BUE, MOW, STO, OSA, SEL, BJS, YTO, YMQ.

Is scraping Google Flights legal? The scraper only collects public flight and fare information, no personal data. Check that your use complies with the laws and terms that apply to you.

By the same developer: Google Hotels Scraper for hotel prices and every booking site's rate on the same trip, Google Trends Scraper for search interest in destinations, Google Autocomplete Scraper for travel keyword ideas, Google News Scraper for airline and destination headlines, Google Ads Transparency Scraper for airlines' and OTAs' ads, Google Jobs Scraper for aviation and travel jobs, PageSpeed Insights Bulk Audit for your booking pages' Core Web Vitals, and Google Analytics 4 Exporter for your travel site's GA4 reports.

Support

Found a problem or need a field? Open an issue on the Issues tab. If the Actor saves you time, a short review helps others find it.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google.