Google Flights Calendar API
Our Google Flights Calendar API allows you to scrape prices results from Google Flights Calendar.
The API endpoint is https://serpapi.com/search?engine=google_flights_calendar
Head to the playground for a live and interactive demo.
API parameters
Search query
departure_id
Required
Parameter defines the departure airport code or location kgmid.
An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA.
For example, CDG is Paris Charles de Gaulle Airport and AUS is Austin-Bergstrom International Airport.
A location kgmid is a string that starts with /m/. You can search for a location on Wikidata and use its "Freebase ID" as the location kgmid. For example, /m/0vzm is the location kgmid for Austin, TX.
arrival_id
Required
Parameter defines the arrival airport code or location kgmid.
An airport code is an uppercase 3-letter code. You can search for it on Google Flights or IATA.
For example, CDG is Paris Charles de Gaulle Airport and AUS is Austin-Bergstrom International Airport.
A location kgmid is a string that starts with /m/. You can search for a location on Wikidata and use its "Freebase ID" as the location kgmid. For example, /m/0vzm is the location kgmid for Austin, TX.
Localization
gl
Optional
Parameter defines the country to use for the Google Flights search. It's a two-letter country code. (e.g., us for the United States, uk for United Kingdom, or fr for France) Head to the Google countries page for a full list of supported Google countries.
hl
Optional
Parameter defines the language to use for the Google Flights search. It's a two-letter language code. (e.g., en for English, es for Spanish, or fr for French). Head to the Google languages page for a full list of supported Google languages.
currency
Optional
Parameter defines the currency of the returned prices. Default to USD. Head to the Google Travel Currencies page for a full list of supported currency codes.
Advanced Parameters
type
Optional
Parameter defines the type of the flights.
Available options:1 - Round trip (default)2 - One way
date_range_start
Optional
Parameter defines the start date of the date range. The format is YYYY-MM-DD. e.g. 2026-11-03
Default to today's date.
When fixed_outbound_date is set to true, this date is also used as the outbound date.
date_range_end
Optional
Parameter defines the end date of the date range. The format is YYYY-MM-DD. e.g. 2026-12-31
Default to end of next month.
round_trip_days
Optional
Parameter defines the number of days for the round trip. Default to 7. It can only be used in combination with type parameter set to 1 (Round trip).
Parameter cannot be used with fixed_outbound_date parameter.
fixed_outbound_date
Optional
Parameter defines whether the outbound date is fixed. It can be set to true to depart on date_range_start and get a price for each return date in the date range, or false (default) to get a price for each outbound date in the date range with a trip length of round_trip_days.
It can only be used in combination with type parameter set to 1 (Round trip).
Parameter cannot be used with round_trip_days parameter.
SerpApi parameters
engine
Required
Set parameter to google_flights_calendar to use the Google Flights Calendar API engine.
no_cache
Optional
Parameter will force SerpApi to fetch the Google Flights Calendar results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to false (default) to allow results from the cache, or true to disallow results from the cache. no_cache and async parameters should not be used together.
async
Optional
Parameter defines the way you want to submit your search to SerpApi. It can be set to false (default) to open an HTTP connection and keep it open until you got your search results, or true to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.
zero_trace
Optional
Enterprise only. Parameter enables ZeroTrace mode. It can be set to false (default) or true. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.
output
Optional
Parameter defines the format of the result. It can be set to json (default) to get a structured JSON of the results, html to get the raw HTML retrieved, or md to get a Markdown-formatted version optimized for LLMs and AI agents.
json_restrictor
Optional
Parameter defines the fields you want to include in the output, reducing payload size for faster response. See the JSON Restrictor documentation for more details.
API results
JSON results
JSON output includes structured data for prices.
A search status is accessible through search_metadata.status.
It flows this way: Processing -> Success || Error.
If a search has failed, error will contain an error message.
search_metadata.id is the search ID inside SerpApi.
HTML results
This API does not have a full HTML response, only text.
search_metadata.prettify_html_file contains a link to the prettified version of the result.
It is displayed in the playground.
Markdown results
Markdown output is optimized for LLMs and AI agents. It provides a curated view of the JSON results
in a token-efficient format using tables, markdown links, and YAML frontmatter.
To access, use the output=md parameter, the /search.md endpoint, or request header Accept: text/markdown.
API examples
Example with round trip of 7 days from CDG to AUS
{
"search_metadata": {
"id": "6968ee37fc8a2ba83a6be0c7",
"status": "Success",
"json_endpoint": "https://serpapi.com/searches/0201ee72bcce0915/6968ee37fc8a2ba83a6be0c7.json",
"created_at": "2026-01-15 13:40:07 UTC",
"processed_at": "2026-01-15 13:40:07 UTC",
"google_flights_calendar_url": "https://www.google.com/travel/flights?hl=en&gl=us",
"prettify_html_file": "https://serpapi.com/searches/153bb30465ad60f0/6968ee37fc8a2ba83a6be0c7.prettify",
"total_time_taken": 1.12
},
"search_parameters": {
"engine": "google_flights_calendar",
"type": "1",
"departure_id": "CDG",
"arrival_id": "AUS"
},
"prices": [
{
"outbound_date": "2026-01-15",
"return_date": "2026-01-22",
"price": 1893
},
{
"outbound_date": "2026-01-16",
"return_date": "2026-01-23",
"price": 1288
},
{
"outbound_date": "2026-01-17",
"return_date": "2026-01-24",
"price": 1312
},
{
"outbound_date": "2026-01-18",
"return_date": "2026-01-25",
"price": 1351
},
{
"outbound_date": "2026-01-19",
"return_date": "2026-01-26",
"price": 1214
},
{
"outbound_date": "2026-01-20",
"return_date": "2026-01-27",
"price": 1214
},
{
"outbound_date": "2026-01-21",
"return_date": "2026-01-28",
"price": 1214
},
{
"outbound_date": "2026-01-22",
"return_date": "2026-01-29",
"price": 1214,
"low_price": true
},
...
]
}
Example with one way trip from KHI to ISB with currency: PKR
{
"search_metadata": {
"id": "6968feddfc8a2ba837a46a50",
"status": "Success",
"json_endpoint": "https://serpapi.com/searches/61724de409820b56/6968feddfc8a2ba837a46a50.json",
"created_at": "2026-01-15 14:51:09 UTC",
"processed_at": "2026-01-15 14:51:09 UTC",
"google_flights_calendar_url": "https://www.google.com/travel/flights?hl=en&gl=us",
"prettify_html_file": "https://serpapi.com/searches/9200fe198f894f11/6968feddfc8a2ba837a46a50.prettify",
"total_time_taken": 1.55
},
"search_parameters": {
"engine": "google_flights_calendar",
"type": "2",
"departure_id": "KHI",
"arrival_id": "ISB",
"currency": "PKR"
},
"prices": [
{
"outbound_date": "2026-01-15",
"price": 59163
},
{
"outbound_date": "2026-01-16",
"price": 27009
},
{
"outbound_date": "2026-01-17",
"price": 25061
},
{
"outbound_date": "2026-01-18",
"price": 27009
},
{
"outbound_date": "2026-01-19",
"price": 24950
},
...
]
}
JSON structure overview
{
...
"prices": [
{
"outbound_date": "String - Outbound date",
"return_date": "String - Return date if the flight type is 'Round trip'",
"price": "Integer - Price in the selected currency, the default currency is USD",
"low_price": "Boolean - Indicates if the price is within 5% of the minimum price in the requested date range"
}
],
...
}