Google Flights API
Flight search results from Google Flights — one-way, round-trip and multi-city itineraries with prices, airlines, stops, durations and price insights. Filter by fare cap, stop count, carrier and cabin, across 39 country markets and 29 languages.
MEDIAN LAGon demand
PARAMETERS17
TOTAL USERS2,075
MONTHLY ACTIVE357
RUNS SUCCEEDED99.8%
RATING4.05 (6)
Input parameters
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| departure_id | string | yes | — | Airport code, or several comma-separated: 'CDG,ORY'. Not used for multi-city. |
| arrival_id | string | yes | — | Airport code, or several comma-separated. Not used for multi-city. |
| outbound_date | date | yes | — | YYYY-MM-DD. Not used for multi-city. |
| return_date | date | no | — | Supply for a round trip; omit for one-way |
| multi_city_json | string | no | — | JSON array of legs. When present, the three fields above are not required. |
| adults | integer | no | 1 | Adult passengers |
| children | integer | no | 0 | Child passengers |
| infants | integer | no | 0 | Infant passengers |
| currency | string | no | USD | Currency prices are returned in |
| gl | enum | no | us | 39 country markets — fares differ by point of sale |
| hl | enum | no | en | 29 language codes |
| max_price | integer | no | — | Fare cap in the chosen currency |
| max_stops | integer | no | — | 0 = direct only, 1 = one stop, unset = no limit |
| airlines | string | no | — | Comma-separated carrier codes, e.g. 'UA,AA,DL' |
| exclude_basic | boolean | no | false | Drop basic-economy fares |
| fetch_booking_options | boolean | no | false | Booking links and baggage fees; billed per option — drives your bill |
| max_pages | integer | no | 1 | 0 = no limit — drives your bill |
Worked examples
{
"departure_id": "LAX",
"arrival_id": "JFK",
"outbound_date": "2026-08-27"
}
{
"departure_id": "LAX",
"arrival_id": "JFK",
"outbound_date": "2026-08-27",
"return_date": "2026-09-01"
}
{
"departure_id": "SFO",
"arrival_id": "LHR",
"outbound_date": "2026-09-15",
"max_stops": 0,
"max_price": 900
}
{
"multi_city_json": "[{\"departure_id\":\"JFK\",\"arrival_id\":\"CDG\",\"date\":\"2026-09-01\"},{\"departure_id\":\"CDG\",\"arrival_id\":\"FCO\",\"date\":\"2026-09-05\"},{\"departure_id\":\"FCO\",\"arrival_id\":\"JFK\",\"date\":\"2026-09-10\"}]"
}
{
"departure_id": "FRA",
"arrival_id": "JFK",
"outbound_date": "2026-10-02",
"gl": "de",
"hl": "de",
"currency": "EUR"
}
POWER-USER TIP
Point of sale moves the price — The same itinerary is priced differently depending on gl and currency, because airlines fare by market. If you are monitoring a route for genuine price movement, hold gl fixed — otherwise you will read market variation as a fare change.
POWER-USER TIP
Comma-separate airports to cover a city — departure_id accepts 'CDG,ORY' to search both Paris airports in one run, which is cheaper and more complete than two separate searches you then have to merge.
Coverage
39
country markets — us uk ca au de fr es it jp kr in br +27
29
languages — en es fr de it pt ru ja ko zh ar hi +17
3
trip types — one-way · round-trip · multi-city
Tasks
Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.
Code
curl
curl -X POST "https://api.apify.com/v2/acts/johnvc~Google-Flights-Data-Scraper-Flight-and-Price-Search/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"departure_id":"LAX","arrival_id":"JFK","outbound_date":"2026-08-27","max_stops":0}'
Python
from apify_client import ApifyClient
client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search").call(
run_input={
"departure_id": "SFO", "arrival_id": "LHR",
"outbound_date": "2026-09-15", "max_price": 900,
}
)
for f in client.dataset(run.default_dataset_id).iterate_items():
print(f.get("price"), f.get("total_duration"))
What people use it for
- Fare monitoring on a fixed route
- Travel-app price comparison
- Corporate travel benchmarking
- Route and competition analysis
- Building historical airfare series
- Alerting on a price threshold