Google Flights Scraper & API — Airfare & Price Calendar
Pricing
from $0.80 / 1,000 flights
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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?
| Data | Details |
|---|---|
| Flight | Price, 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 |
| Legs | For 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 |
| Layovers | Airport, airport name, city, length in minutes, overnight, change of airport |
| Emissions | CO2 in grams, typical CO2 for the route, difference in %, lower / typical / higher |
| Price insight | Low / typical / high, typical price range (on every flight); typical price, lowest price and about 60 days of price history (optional row) |
| Round trips | Outbound flights with round-trip totals; optionally each top outbound flight's return flights with the exact price of the pair |
| Multi-city trips | First flights with the price of the whole trip; optionally complete itineraries (nextFlights) with exact prices |
| Booking options | Seller (airline or agency), airline-direct flag, fare name, price, carry-on and checked bag included, booking link, cheapest seller |
| Price calendar | Cheapest fare per departure date (and return date for round trips); the 5 cheapest dates per route in the run summary |
| Links | A 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:
| Event | Free | Starter | Scale | Business |
|---|---|---|---|---|
| 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.
| Example | Free | Starter | Scale | Business |
|---|---|---|---|---|
| 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
- Enter one or more routes as airport codes, one per line:
JFK-LAX,JFK, EWR - LHR,NYC - PAR. - Enter one or more departure dates:
2026-11-20, or relative to the run like30 daysor2 weeks(handy for scheduled runs). Or set a date range with Departure dates from and Departure dates to, optionally weekends only. - 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.
- Optional: filters, round-trip pairs, booking options, a price calendar.
- 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 intripFlights.booking-options: the flight numbers plusbookingOptions, 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 cheapestpricethat day.price-insight(optional, free): price level, typical price and range, andpriceHistoryas[{ "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 ApifyClientclient = 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.
Related tools
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.