Google API: Get cheapest flight dates in a month
Finds 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.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Cabin optional
cabin Travel cabin, such as business.
economy (default)
One of
economy,premium_economy,business,first.- Month, required
month Departure month in YYYY-MM, such as 2026-11.
2026-11
- Adults optional
adults Number of adults, such as 2.
1 (default)
Whole number from 1 to 9.
- Origin, required
origin Departure city or airport, such as New York or JFK.
New York
- Currency optional
currency Three-letter currency code, such as USD.
USD (default)
- Destination, required
destination Arrival city or airport, such as London or BCN.
London
- Trip Length Days optional
trip_length_days Days between departure and return, such as 7. Omit for one-way.
7
Whole number 1 or more.
Input as JSON
{ "month": "2026-11", "origin": "New York", "destination": "London", "trip_length_days": 7}Output
{ "dates": [ { "currency": "USD", "return_date": "2026-11-08", "lowest_price": 645, "departure_date": "2026-11-01", "google_flights_link": "https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI2LTExLTAxag0IAxIJL20vMDJfMjg2cgwIAxIIL20vMDRqcGwaKRIKMjAyNi0xMS0wOGoMCAMSCC9tLzA0anBscg0IAxIJL20vMDJfMjg2QAFIAXABggELCP___________wGYAQE&hl=en&curr=USD" }, { "currency": "USD", "return_date": "2026-11-09", "lowest_price": 687, "departure_date": "2026-11-02", "google_flights_link": "https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI2LTExLTAyag0IAxIJL20vMDJfMjg2cgwIAxIIL20vMDRqcGwaKRIKMjAyNi0xMS0wOWoMCAMSCC9tLzA0anBscg0IAxIJL20vMDJfMjg2QAFIAXABggELCP___________wGYAQE&hl=en&curr=USD" }, { "currency": "USD", "return_date": "2026-11-10", "lowest_price": 476, "departure_date": "2026-11-03", "google_flights_link": "https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI2LTExLTAzag0IAxIJL20vMDJfMjg2cgwIAxIIL20vMDRqcGwaKRIKMjAyNi0xMS0xMGoMCAMSCC9tLzA0anBscg0IAxIJL20vMDJfMjg2QAFIAXABggELCP___________wGYAQE&hl=en&curr=USD" } ], "price_insight": "Prices are currently typical", "cheapest_option": { "currency": "USD", "return_date": "2026-11-12", "lowest_price": 428, "departure_date": "2026-11-05", "google_flights_link": "https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI2LTExLTA1ag0IAxIJL20vMDJfMjg2cgwIAxIIL20vMDRqcGwaKRIKMjAyNi0xMS0xMmoMCAMSCC9tLzA0anBscg0IAxIJL20vMDJfMjg2QAFIAXABggELCP___________wGYAQE&hl=en&curr=USD" }, "google_flights_link": "https://www.google.com/travel/flights/search?tfs=CBwQAhopEgoyMDI2LTExLTA1ag0IAxIJL20vMDJfMjg2cgwIAxIIL20vMDRqcGwaKRIKMjAyNi0xMS0xMmoMCAMSCC9tLzA0anBscg0IAxIJL20vMDJfMjg2QAFIAXABggELCP___________wGYAQE&hl=en&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/get_cheapest_dates","input":{"month":"2026-11","origin":"New York","destination":"London","trip_length_days":7}}' # 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/get_cheapest_dates" , "input": { "month": "2026-11", "origin": "New York", "destination": "London", "trip_length_days": 7 }})# 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/get_cheapest_dates" , "input": { "month": "2026-11", "origin": "New York", "destination": "London", "trip_length_days": 7 } }), 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/get_cheapest_dates# with {"month":"2026-11","origin":"New York","destination":"London","trip_length_days":7}"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", "month" ], "properties": { "cabin": { "enum": [ "economy", "premium_economy", "business", "first" ], "type": "string", "default": "economy", "description": "Travel cabin, such as business." }, "month": { "type": "string", "description": "Departure month in YYYY-MM, such as 2026-11." }, "adults": { "type": "integer", "default": 1, "maximum": 9, "minimum": 1, "description": "Number of adults, such as 2." }, "origin": { "type": "string", "description": "Departure city or airport, such as New York or JFK." }, "currency": { "type": "string", "default": "USD", "description": "Three-letter currency code, such as USD." }, "destination": { "type": "string", "description": "Arrival city or airport, such as London or BCN." }, "trip_length_days": { "type": "integer", "minimum": 1, "description": "Days between departure and return, such as 7. Omit for one-way." } }}Output schema
{ "type": "object", "required": [ "dates", "cheapest_option", "price_insight", "google_flights_link" ], "properties": { "dates": { "type": "array", "items": { "type": "object", "required": [ "departure_date", "return_date", "lowest_price", "currency", "google_flights_link" ], "properties": { "currency": { "type": "string" }, "return_date": { "type": [ "string", "null" ], "format": "date" }, "lowest_price": { "type": "number" }, "departure_date": { "type": "string", "format": "date" }, "google_flights_link": { "type": "string" } } } }, "price_insight": { "type": [ "string", "null" ] }, "cheapest_option": { "type": [ "object", "null" ], "required": [ "departure_date", "return_date", "lowest_price", "currency", "google_flights_link" ], "properties": { "currency": { "type": "string" }, "return_date": { "type": [ "string", "null" ], "format": "date" }, "lowest_price": { "type": "number" }, "departure_date": { "type": "string", "format": "date" }, "google_flights_link": { "type": "string" } } }, "google_flights_link": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
google.com/get_cheapest_dates- Returns
- dates with lowest prices and links, cheapest option, price insight, Google Flights 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/get_cheapest_dates with the inputs above.
Ask your agent
- What's the cheapest day to fly one-way from Chicago to Denver in March 2026?
- Show me the lowest Google Flights fares for each departure date in October 2026 from SFO to Tokyo, round trip for 10 days, 2 adults.
- I want to fly business class from London to Dubai sometime in December 2026 for a one-week trip — which departure dates are cheapest? Prices in GBP please.
- Find the cheapest dates in July 2026 for a one-way flight from Toronto to Mexico City, and tell me if prices are currently low or high.
- Using Google, check day-by-day fares from Sydney to Bali for a 5-day trip departing in May 2026, premium economy, in AUD.
See more
All Google methodsFinds 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.
google.com/search_flightsLists 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 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 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_adsSearches Google Books by words, author, subject or ISBN, with language, free-ebook and newest-first options. Ratings counts are not shown by the public book feed; newest sorts the available matches by publication date.
books.google.com/search_booksCompares Google Trends search interest for one to five terms over a time range, with average scores and a dated timeline. Scores are relative within the comparison.
trends.google.com/get_interest_over_time