Google API: Search Google Flights
Finds Google Flights options for a route and date with prices, local times, stops and emissions. Round-trip searches list outbound choices with their displayed round-trip fares.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Nov 2, 2026, shown under Output.
- Sort optional
sort Order by lowest price or Google Flights best ranking, for example cheapest.
cheapest
One of
cheapest,best. Defaultcheapest.- Cabin optional
cabin Cabin class, for example business.
economy
One of
economy,premium_economy,business,first. Defaulteconomy.- Stops optional
stops Stop limit, for example nonstop.
any
One of
any,nonstop,one_stop_or_fewer. Defaultany.- Adults optional
adults Number of adults, for example 2.
1
Whole number from 1 to 9. Default
1.- Origin, required
origin Departure city or airport, for example New York.
New York
2 characters or more.
- Currency optional
currency Three-letter fare currency, for example USD.
USD
Default
USD.- Destination, required
destination Arrival city or airport, for example Los Angeles.
Los Angeles
2 characters or more.
- Max Results optional
max_results Maximum number of flights to return, for example 20.
20
Whole number from 1 to 50. Default
20.- Return Date optional
return_date Return departure date (YYYY-MM-DD), for example 2026-10-27. Leave empty for one-way.
Not set
- Departure Date, required
departure_date Outbound departure date (YYYY-MM-DD), for example 2026-10-20.
2026-11-17
Input as JSON
{ "sort": "cheapest", "cabin": "economy", "stops": "any", "adults": 1, "origin": "New York", "currency": "USD", "destination": "Los Angeles", "max_results": 20, "departure_date": "2026-11-17"}Output
{ "flights": [ { "price": 184, "stops": 1, "co2_kg": 276, "airlines": [ "Frontier" ], "currency": "USD", "page_link": "https://www.google.com/travel/flights?tfs=CBwQAhp9EgoyMDI2LTExLTE3IiAKA0xHQRIKMjAyNi0xMS0xNxoDQVRMKgJGOTIEMzI4NyIgCgNBVEwSCjIwMjYtMTEtMTcaA0xBWCoCRjkyBDQzMTVqBwgBEgNKRktqBwgBEgNMR0FqBwgBEgNFV1JyBwgBEgNMQVhyBwgBEgNCVVJAAUgBcAGYAQI&hl=en&gl=US&curr=USD" , "travel_time": "8 h 49 min", "arrival_time": "2026-11-17T12:19:00-08:00", "departure_time": "2026-11-17T06:30:00-05:00", "flight_numbers": [ "F9 3287", "F9 4315" ], "travel_minutes": 529, "layover_airports": [ "Hartsfield-Jackson Atlanta International Airport (ATL)" ], "arrival_airport_code": "LAX", "arrival_airport_name": "Los Angeles International Airport", "departure_airport_code": "LGA", "departure_airport_name": "LaGuardia Airport" }, { "price": 184, "stops": 1, "co2_kg": 286, "airlines": [ "Frontier" ], "currency": "USD", "page_link": "https://www.google.com/travel/flights?tfs=CBwQAhp9EgoyMDI2LTExLTE3IiAKA0VXUhIKMjAyNi0xMS0xNxoDQVRMKgJGOTIENDYwMSIgCgNBVEwSCjIwMjYtMTEtMTcaA0xBWCoCRjkyBDMyMTVqBwgBEgNKRktqBwgBEgNMR0FqBwgBEgNFV1JyBwgBEgNMQVhyBwgBEgNCVVJAAUgBcAGYAQI&hl=en&gl=US&curr=USD" , "travel_time": "9 h 18 min", "arrival_time": "2026-11-17T17:53:00-08:00", "departure_time": "2026-11-17T11:35:00-05:00", "flight_numbers": [ "F9 4601", "F9 3215" ], "travel_minutes": 558, "layover_airports": [ "Hartsfield-Jackson Atlanta International Airport (ATL)" ], "arrival_airport_code": "LAX", "arrival_airport_name": "Los Angeles International Airport", "departure_airport_code": "EWR", "departure_airport_name": "Newark Liberty International Airport" }, { "price": 209, "stops": 1, "co2_kg": 384, "airlines": [ "Delta" ], "currency": "USD", "page_link": "https://www.google.com/travel/flights?tfs=CBwQAhp8EgoyMDI2LTExLTE3Ih8KA0pGSxIKMjAyNi0xMS0xNxoDU0xDKgJETDIDODkyIiAKA1NMQxIKMjAyNi0xMS0xNxoDQlVSKgJETDIEMzA3M2oHCAESA0pGS2oHCAESA0xHQWoHCAESA0VXUnIHCAESA0xBWHIHCAESA0JVUkABSAFwAZgBAg&hl=en&gl=US&curr=USD" , "travel_time": "8 h 19 min", "arrival_time": "2026-11-17T11:59:00-08:00", "departure_time": "2026-11-17T06:40:00-05:00", "flight_numbers": [ "DL 892", "DL 3073" ], "travel_minutes": 499, "layover_airports": [ "Salt Lake City International Airport (SLC)" ], "arrival_airport_code": "BUR", "arrival_airport_name": "Hollywood Burbank Airport", "departure_airport_code": "JFK", "departure_airport_name": "John F. Kennedy International Airport" } ], "search_link": "https://www.google.com/travel/flights?tfs=CBwQAho5EgoyMDI2LTExLTE3agcIARIDSkZLagcIARIDTEdBagcIARIDRVdScgcIARIDTEFYcgcIARIDQlVSQAFIAXABmAEC&hl=en&gl=US&curr=USD" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"google.com/search_flights","input":{"sort":"cheapest","cabin":"economy","stops":"any","adults":1,"origin":"New York","currency":"USD","destination":"Los Angeles","max_results":20,"departure_date":"2026-11-17"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "google.com/search_flights" , "input": { "sort": "cheapest", "cabin": "economy", "stops": "any", "adults": 1, "origin": "New York", "currency": "USD", "destination": "Los Angeles", "max_results": 20, "departure_date": "2026-11-17" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "google.com/search_flights" , "input": { "sort": "cheapest", "cabin": "economy", "stops": "any", "adults": 1, "origin": "New York", "currency": "USD", "destination": "Los Angeles", "max_results": 20, "departure_date": "2026-11-17" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run google.com/search_flights# with {"sort":"cheapest","cabin":"economy","stops":"any","adults":1,"origin":"New York","currency":"USD","destination":"Los Angeles","max_results":20,"departure_date":"2026-11-17"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "origin", "destination", "departure_date" ], "properties": { "sort": { "enum": [ "cheapest", "best" ], "type": "string", "default": "cheapest", "description": "Order by lowest price or Google Flights best ranking, for example cheapest." }, "cabin": { "enum": [ "economy", "premium_economy", "business", "first" ], "type": "string", "default": "economy", "description": "Cabin class, for example business." }, "stops": { "enum": [ "any", "nonstop", "one_stop_or_fewer" ], "type": "string", "default": "any", "description": "Stop limit, for example nonstop." }, "adults": { "type": "integer", "default": 1, "maximum": 9, "minimum": 1, "description": "Number of adults, for example 2." }, "origin": { "type": "string", "minLength": 2, "description": "Departure city or airport, for example New York." }, "currency": { "type": "string", "default": "USD", "description": "Three-letter fare currency, for example USD." }, "destination": { "type": "string", "minLength": 2, "description": "Arrival city or airport, for example Los Angeles." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum number of flights to return, for example 20." }, "return_date": { "type": "string", "description": "Return departure date (YYYY-MM-DD), for example 2026-10-27. Leave empty for one-way." }, "departure_date": { "type": "string", "description": "Outbound departure date (YYYY-MM-DD), for example 2026-10-20." } }}Output schema
{ "type": "object", "required": [ "search_link", "flights" ], "properties": { "flights": { "type": "array", "items": { "type": "object", "required": [ "airlines", "flight_numbers", "departure_airport_name", "departure_airport_code", "arrival_airport_name", "arrival_airport_code", "departure_time", "arrival_time", "travel_time", "travel_minutes", "stops", "layover_airports", "price", "currency", "co2_kg", "page_link" ], "properties": { "price": { "type": "number", "description": "Displayed fare." }, "stops": { "type": "integer", "description": "Number of stops." }, "co2_kg": { "type": [ "number", "null" ], "description": "Emissions in kilograms, if displayed." }, "airlines": { "type": "array", "items": { "type": "string" }, "description": "Airlines operating the itinerary." }, "currency": { "type": "string", "description": "Fare currency code." }, "page_link": { "type": "string", "description": "Google Flights link for this flight selection." }, "travel_time": { "type": [ "string", "null" ], "description": "Elapsed travel time." }, "arrival_time": { "type": "string", "description": "Local arrival time with UTC offset." }, "departure_time": { "type": "string", "description": "Local departure time with UTC offset." }, "flight_numbers": { "type": "array", "items": { "type": "string" }, "description": "Flight numbers of all segments." }, "travel_minutes": { "type": [ "integer", "null" ], "description": "Elapsed travel time in minutes." }, "layover_airports": { "type": "array", "items": { "type": "string" }, "description": "Layover airports, including their names and codes." }, "arrival_airport_code": { "type": [ "string", "null" ], "description": "Final arrival airport code." }, "arrival_airport_name": { "type": [ "string", "null" ], "description": "Final arrival airport name." }, "departure_airport_code": { "type": [ "string", "null" ], "description": "First departure airport code." }, "departure_airport_name": { "type": [ "string", "null" ], "description": "First departure airport name." } }, "additionalProperties": false }, "description": "Flight options." }, "search_link": { "type": "string", "description": "Link to the full Google Flights search." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
google.com/search_flights- Returns
- airlines, flight numbers, airports, local departure and arrival times, travel time, stops, layovers, price, CO2, flight link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method google.com/search_flights with the inputs above.
Ask your agent
- Find the cheapest nonstop flights from Chicago to Denver on 2026-03-14 for 2 adults, prices in USD
- What are my business class options from London Heathrow to Singapore departing June 5, 2026 and returning June 19? Show the round-trip fares and layovers.
- Check Google Flights for one-way economy flights Toronto to Vancouver on 2026-08-02, priced in CAD, max 10 results
- I need flights SFO to Tokyo Narita leaving 2026-11-10 back 2026-11-24, one stop or fewer, best ranked, with CO2 emissions per flight
- Pull up Google flight results for 3 adults Madrid to Rome on 2026-05-21, premium economy, prices in EUR, with departure and arrival times
See more
All Google methodsFinds the lowest Google Flights fare for each departure date in a month between two places, for one-way trips or a fixed trip length, with the cheapest option and any price insight shown.
google.com/get_cheapest_datesLists cheap round-trip destinations from a city on Google Travel Explore, sorted by fare, optionally within a region, travel month, trip length and nonstop only. Links search Google Flights for the shown dates.
google.com/list_cheap_destinationsFinds places to stay in a city or area for given dates on Google Hotels, with nightly and total prices, hotel class, guest ratings, amenities, address and cheapest booking site. Optional filters for price, stars and rating; vacation rentals are left out. Prices and availability can change.
google.com/search_hotelsGets up to three Google Maps routes between two places, with distances, travel times and step-by-step directions.
google.com/get_directionsFinds a verified advertiser in the Google Ads Transparency Center by company name or website domain and returns its Google ads with dates, regions, previews and ad pages. Counts may be approximate; regions and media previews are read for the first 40 ads.
adstransparency.google.com/get_company_adsFinds a hotel on Google Hotels by name and city and returns its guest reviews in the chosen order, its Google rating and review count, and topic ratings averaged from the returned reviews that rate each topic.
google.com/get_hotel_reviewsFinds Google Patents about an invention. Optional filters: inventor, assignee, country, filing date and publication stage. Legal status is the site's estimate.
patents.google.com/search_patentsFinds businesses and places near a location on Google Maps, in Google Maps order, with rating, hours, contact details and links when shown.
google.com/search_places