Google Flights Scraper API π°$1/1k β Fares & Multi-City
Pricing
from $1.00 / 1,000 results
Google Flights Scraper API π°$1/1k β Fares & Multi-City
[π°$1/1K] Google Flights scraper for fare monitoring and price comparison. One-way, round-trip and multi-city, with full result sets β not just the top picks. Returns price, airline, stops, times, aircraft and legroom, plus bookable OTA/airline options per fare. Stops, airlines and max-price filters
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
27
Total users
24
Monthly active users
4 days ago
Last modified
Categories
Share
Google Flights Scraper API β Fares, Itineraries & Multi-City
How It Works

- Your input β origin, destination, dates, passengers, cabin, multi-city legs, market/currency/language.
- Shopping RPC β the Actor pulls session tokens from the flights page, POSTs the
GetShoppingResultsgRPC-web search, and decodes Google's full sorted result set (~150 itineraries on busy routes) plus price insights. Pure HTTP, no browser. - Your dataset β flat rows or nested JSON with price, carrier, stops, duration, per-segment aircraft/flight-number/legroom/times, a booking token, and optional booking options β CSV-ready or JSON.
Scrape flight itineraries, fares, schedules and routes from Google Flights β by route + dates β at $1 per 1,000 results. One-way, round-trip and multi-city all supported. Each itinerary carries price, airline, stops, duration, exact times, aircraft type, flight number, legroom, full airport names, and a booking token β plus, optionally, the airlines/OTAs selling each fare with their prices, fare names and booking links. Pure HTTP β no browser, no CAPTCHA solver (a residential proxy is recommended and on by default, since Google serves empty results to datacenter IPs). Output is CSV-ready flat rows or nested JSON, straight into your Apify dataset.
Why Use This Scraper?
- $1 / 1,000 results β flat, simple pricing. No opaque per-page math.
- No browser, no CAPTCHA solver β pure HTTP. A residential proxy (on by default) is used because Google returns empty results to datacenter IPs; responses are small so bandwidth cost is minimal.
- Full trip coverage β one-way, round-trip, and multi-city (each leg searched and returned).
- Deep itinerary data β per-segment airport codes + full names, departure/arrival timestamps, duration, aircraft model, flight number, legroom, plus carrier and booking token.
- Booking options (who sells it & for how much) β optionally resolve, per itinerary, the airlines/OTAs selling the fare with per-option price, fare name (e.g. "Blue Basic"), baggage fee, booking domain and a click-through URL. Pure HTTP β no login, no browser.
- Price insights β current vs typical price and the delta, straight from Google.
- Best & other flights β every row is tagged
bestorotherso you can rank instantly. - Global β any market, currency and language (
gl/curr/hl). - Spreadsheet or JSON β flat dashed columns (
price-usd,segments-0-aircraftβ¦) for Excel/Sheets, or nested objects for pipelines.
Overview
This Actor calls Google Flights' internal GetShoppingResults search service to harvest structured itineraries for a route, date and passenger mix. It pulls the session tokens from the flights page, posts the search, and parses the sorted result set (best + other flights) plus price insights.
Output is one row per itinerary. Each itinerary nests its flight segments (with per-segment aircraft, flight number, legroom and times). For multi-city, every leg is searched and its rows are tagged with multi-city-leg.
Supported Inputs
| Input | What it does |
|---|---|
| Route + dates | origin, destination, departDate (+ optional returnDate). IATA codes, e.g. LAX, JFK. Comma-separate for multi-airport / metro search, e.g. LAX,BUR β JFK,EWR. |
| Stops filter | maxStops: 0 = nonstop only, 1 = β€1 stop, 2 = β€2 stops. |
| Airlines filter | airlines: include only these carrier codes, e.g. ["DL"] (Delta) or ["DL","AA"]. |
| Max price | maxPrice: only itineraries at or below this price (in the selected currency). |
| Booking options | resolveBookingOptions: for each itinerary, fetch who sells the fare (airline/OTA) with price, fare name, baggage fee and a booking URL. Capped by maxBookingItineraries. One-way, round-trip & multi-city. |
| Multi-city | multiCityLegs: one row per leg as ORIGIN-DEST-DATE (e.g. LAX-JFK-2026-08-04). Each leg is searched and tagged by leg index. |
| Passengers & cabin | adults, children, infantsInSeat, infantsOnLap, cabinClass. |
| Locale | market (gl), currency (curr), language (hl). |
Not supported: hotels or car hire, live booking/checkout, seat selection. This Actor is flights-only.
Use Cases
| Audience | What they do with it |
|---|---|
| Travel aggregators / OTAs | Power a fare-comparison page across many routes and dates. |
| Fare-alert products | Track a route + date daily and notify when the cheapest fare drops. |
| Revenue / pricing teams | Snapshot competitor fares and price bands over time. |
| Data & ML pipelines | Ingest multi-route fare data daily to model price movement. |
| Travel agencies | Export structured itineraries for clients on demand. |
| Researchers | Build open fare/route datasets for connectivity analysis. |
Input Configuration
| Field | Type | Required | Notes |
|---|---|---|---|
origin | string | β | Origin IATA code, e.g. LAX. Defaults to LAX. |
destination | string | β | Destination IATA code, e.g. JFK. Defaults to JFK. |
departDate | string | β | YYYY-MM-DD. Defaults to ~30 days out if empty. |
returnDate | string | β | Omit for one-way; set for round-trip. |
multiCityLegs | array | β | List of ORIGIN-DEST-DATE strings, e.g. ["LAX-JFK-2026-08-04","JFK-MIA-2026-08-10"]. Overrides the single-route fields. |
adults | integer | β | Default 1. |
children / infantsInSeat / infantsOnLap | integer | β | Default 0. |
cabinClass | enum | β | economy Β· premium_economy Β· business Β· first. |
maxStops | integer | β | 0 = nonstop only, 1 = β€1 stop, 2 = β€2 stops. Empty = any. |
airlines | array | β | Include only these airline IATA codes, e.g. ["DL","AA"]. Empty = all. |
maxPrice | integer | β | Only itineraries at or below this price, in the selected currency. Empty = no cap. |
resolveBookingOptions | boolean | β | Resolve per-itinerary booking options (airlines/OTAs + price, fare name, baggage, URL). Default false. One-way, round-trip & multi-city. |
maxBookingItineraries | integer | β | When the above is on, how many top itineraries to resolve (one extra request each). Default 10. |
currency | string | β | ISO 4217, e.g. USD, EUR. Default USD. |
market | string | β | Country code, e.g. US, GB. Default US. |
language | string | β | e.g. en, de. Default en. |
maxItems | integer | β | Max itineraries to return. Default 100. |
proxy | object | β | Residential proxy, on by default. Google serves empty results to datacenter IPs, so residential is needed. |
Everything is optional β run it with no input at all and it searches LAX β JFK ~30 days out as a sane default. Provide origin/destination/departDate (+ optional returnDate) for a normal search, or multiCityLegs for multi-city.
Example input
{"origin": "LAX","destination": "JFK","departDate": "2026-08-04","adults": 1,"cabinClass": "economy","currency": "USD","market": "US","maxItems": 50}
Multi-city:
{"multiCityLegs": ["LAX-JFK-2026-08-04", "JFK-MIA-2026-08-10"],"adults": 1,"maxItems": 40}
Output Overview
One row per itinerary, tagged best or other. Each itinerary nests its segments (dashed columns like segments-0-aircraft). A nonstop itinerary has one segment; connections have more. Multi-city rows also carry multi-city-leg.
Output Samples
Real smoke-test row (LAXβJFK, abbreviated):
{"index": 0,"price-usd": 154,"currency": "USD","bucket": "best","carrier-code": "B6","carrier-name": "JetBlue","from-code": "LAX","to-code": "JFK","depart-date": "2026-08-04","depart-time": "16:20","arrive-date": "2026-08-05","arrive-time": "00:56","stops": 0,"duration-minutes": 336,"booking-token": "CjRITUo3WF8xWkxNRVVBβ¦","segments-0-from-code": "LAX","segments-0-from-name": "Los Angeles International Airport","segments-0-to-code": "JFK","segments-0-to-name": "John F. Kennedy International Airport","segments-0-depart": "2026-08-04T16:20","segments-0-arrive": "2026-08-05T00:56","segments-0-duration-minutes": 336,"segments-0-airline": "JetBlue","segments-0-flight-number": "B6824","segments-0-aircraft": "Airbus A320","segments-0-legroom": "33 in"}
Key Output Fields
Itinerary
price-usd,currency,bucket(best/other)carrier-code,carrier-namefrom-code,to-code,stops,duration-minutesdepart-date/depart-time/arrive-date/arrive-timebooking-tokenβ Google's booking-handoff tokenmulti-city-legβ present only on multi-city runs
Segments (segments-{n}-β¦)
from-code/from-name/to-code/to-namedepart/arriveβ ISO timestampsduration-minutes,airline,flight-numberaircraft,legroom
Booking options (only when resolveBookingOptions is on)
booking-options-countβ number of bookable options foundcheapest-booking-price-usd/cheapest-booking-providerβ the cheapest option at a glancebooking-option-{n}-β¦β per option:provider,price-usd,fare-name(e.g. "Blue Basic"),domain,url(click-through booking link)
FAQ
Is this an official Google API? No. It's an independent scraper that reads publicly available Google Flights search results. Not affiliated with or endorsed by Google.
Do I need a proxy? Yes β a residential proxy is on by default and recommended. Google Flights has no CAPTCHA, but it returns empty results to datacenter IPs, so a residential IP is needed for reliable data. Responses are small, so the bandwidth cost is minimal. If you run from your own residential IP you can disable it.
Does it do multi-city?
Yes. Set multiCityLegs to a list of ORIGIN-DEST-DATE strings (e.g. ["LAX-JFK-2026-08-04","JFK-MIA-2026-08-10"]); each leg is searched and its rows are tagged with multi-city-leg. maxItems is split evenly across legs.
One-way vs round-trip?
Omit returnDate for one-way; include it for round-trip (round-trip rows show the priced round-trip itinerary).
What currency / market?
currency (ISO 4217), market (country), language. Defaults USD / US / en.
How many results per search?
The Actor requests Google's full result set (the same as clicking "View more flights") β typically ~100β150 itineraries across best + other on a busy route, controlled by maxItems. Run many routeΓdate searches to build an even larger dataset.
Why are some itineraries best and others other?
Google groups its top recommendations as "best" and the rest as "other". Both are returned and tagged.
Can I get who sells the ticket and for how much?
Yes β set resolveBookingOptions: true. For each itinerary (up to maxBookingItineraries), the Actor resolves the bookable options β the airline and/or OTAs selling that fare β with each option's price, fare name (e.g. "Blue Basic"), first checked-bag fee, booking domain and a click-through URL. It adds extra requests per itinerary (one for one-way/multi-city; round-trip does a select-outbound β pick-return β book flow), so it's capped and off by default. Supported for one-way, round-trip and multi-city.
Support
Found a bug or need a field that isn't exposed? Open an issue on the Actor's Issues tab on Apify, or reach out via the Apify Store profile. Include your input JSON and the run ID.
Additional Services
Need a custom flight or travel data pipeline β a different source, a bespoke schema, scheduled delivery to S3/BigQuery, or fare monitoring with alerts? Custom scraping and data-engineering work is available via the Apify Store profile.
Explore More Scrapers
- Skyscanner Flight Scraper β
memo23/skyscanner-scraperβ 180+ fields per itinerary, Best/Cheapest/Fastest tags, OTA aggregation. - Expedia.com & Hotels.com Scraper β
memo23/expedia-scraper - 140+ other scrapers β see the developer's Apify Store profile.
β οΈ Disclaimer
This Actor accesses publicly available flight search data on Google Flights for legitimate research, market-intelligence and business-analysis purposes. It is not affiliated with, endorsed by, or sponsored by Google LLC. "Google Flights" is a trademark of Google LLC; it is used here only to describe the data source. Use of this Actor must comply with Google's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The Actor's authors are not responsible for any misuse. Users must:
- Respect rate limits and avoid overloading Google's infrastructure
- Not use scraped data to violate user privacy or terms
- Use the data in compliance with applicable jurisdictions
- Not republish scraped content in violation of copyright
We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.
SEO Keywords
google flights scraper, google flights api, google flights data, flight price scraper, airfare scraper, flight scraper, flight itinerary scraper, multi-city flight scraper, round-trip flight scraper, cheapest flight finder, flight price monitoring, fare alert data, travel data api, airline schedule scraper, flight comparison data, google flights json export, google flights csv export, flight deals scraper, apify flight scraper, flight price tracker, airfare monitoring api, flight route scraper, booking token scraper, flight segment data