TRAVELDEVELOPER TOOLS API MCP READY

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

PARAMETERTYPEREQDEFAULTDESCRIPTION
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

One-way — single route, single date
{
  "departure_id": "LAX",
  "arrival_id": "JFK",
  "outbound_date": "2026-08-27"
}
Round trip — with a return leg
{
  "departure_id": "LAX",
  "arrival_id": "JFK",
  "outbound_date": "2026-08-27",
  "return_date": "2026-09-01"
}
Direct only, capped — fare and stop filters
{
  "departure_id": "SFO",
  "arrival_id": "LHR",
  "outbound_date": "2026-09-15",
  "max_stops": 0,
  "max_price": 900
}
Multi-city — three legs in one search
{
  "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\"}]"
}
Local point of sale — German market, euros
{
  "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.

Request a task →

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

Alternatives