Google Flights MCP server
Registry name: io.github.johnisanerd/google-flights. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).
What it does
Search one-way, round-trip and multi-city itineraries and get prices, airlines, stops, layovers, durations and optional booking options as JSON.
Fares and itineraries for any route and date, with filters for stops, airlines, cabin and passengers. Use it for trip-planning agents, fare monitoring and route analysis.
Paid service on Apify’s hosted endpoint
This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.
| Charge | Price (USD) | What it covers |
|---|---|---|
| Page Processed | $0.03 | Fee per page of flight results processed. Returns best flights, other flights, price insights, airports, and booking options for that page. |
| Setup | $0.001 | One-time setup fee per Actor run |
| Booking Options Processed | $0.02 | Fee per booking option returned when fetch_booking_options is enabled. Default is off. |
Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001, $0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.
Data source and terms
Google Flights public search results, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.
Endpoint
- Transport: Streamable HTTP
- URL:
https://mcp.apify.com/?tools=johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search - Auth: Apify OAuth, or
Authorization: Bearer <APIFY_TOKEN>
Setup
Claude Code
claude mcp add --transport http google-flights "https://mcp.apify.com/?tools=johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search"
VS Code (.vscode/mcp.json)
{
"servers": {
"google-flights": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"google-flights": {
"url": "https://mcp.apify.com/?tools=johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search"
}
}
}
Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"google-flights": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search"
]
}
}
}
Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.
Tools
| Tool | What it does |
|---|---|
johnvc--Google-Flights-Data-Scraper-Flight-and-Price-Search |
Runs the Actor with the parameters below and returns the result rows. |
get-actor-run |
Status of a run started by the tool, for long runs. |
get-dataset-items |
Pages through a run’s full output by datasetId when it is larger than the inline result. |
get-key-value-store-record |
Reads a record a run stored, such as a run report. |
abort-actor-run |
Stops a run. |
Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.
Parameters of johnvc--Google-Flights-Data-Scraper-Flight-and-Price-Search
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
departure_id |
string | "LAX" |
Departure airport code(s), comma-separated for multiple (e.g., ‘LAX’, ‘JFK’, ‘CDG,ORY’). Required for one-way and round-trip searches. Not used for multi-city trips. | |
arrival_id |
string | "JFK" |
Arrival airport code(s), comma-separated for multiple (e.g., ‘JFK’, ‘SFO’, ‘LAX,SEA’). Required for one-way and round-trip searches. Not used for multi-city trips. | |
outbound_date |
string | "2026-11-27" |
Departure date in YYYY-MM-DD format (e.g., ‘2025-11-25’). Required for one-way and round-trip searches. Not used for multi-city trips. | |
return_date |
string | "2026-12-02" |
Return date in YYYY-MM-DD format (e.g., ‘2025-11-30’). Optional, used for round-trip searches. | |
multi_city_json |
string | JSON string for multi-city trips. Format: [{“departure_id”:”…”,”arrival_id”:”…”,”date”:”…”},…]. When provided, departure_id, arrival_id, and outbound_date are not required. | ||
adults |
integer | 1 |
Number of adult passengers (default: 1, minimum: 1) | |
children |
integer | 0 |
Number of child passengers (default: 0, minimum: 0) | |
infants |
integer | 0 |
Number of infant passengers (default: 0, minimum: 0) | |
currency |
string | "USD" |
Currency code for prices (e.g., ‘USD’, ‘EUR’, ‘GBP’). Default: ‘USD’ | |
hl |
string: en, es, fr, de, it, pt … | "en" |
Language code for results (e.g., ‘en’, ‘fr’, ‘de’, ‘es’). Default: ‘en’ | |
gl |
string: us, uk, ca, au, de, fr … | "us" |
Country code for results (e.g., ‘us’, ‘uk’, ‘fr’, ‘de’). Default: ‘us’ | |
max_price |
integer | Maximum price filter in the specified currency. Optional. | ||
max_stops |
integer | Maximum number of stops (0 = direct flights only, 1 = one stop max, null = no limit). Optional. | ||
airlines |
string | Comma-separated list of preferred airline codes (e.g., ‘UA,AA,DL’). Optional. | ||
exclude_basic |
boolean | false |
If true, filters out Economy flights that include carry-on bags and free seat selection. Optional. | |
fetch_booking_options |
boolean | false |
If true, performs extra requests to retrieve detailed booking options (booking links, baggage fees, etc.). This increases API usage and is billed per booking option returned. | |
max_pages |
integer | 1 |
Maximum number of pages to fetch (0 = no limit, default: 1). | |
output_file |
string | Optional filename to save results. If not provided, will auto-generate based on route and parameters. |
Example arguments:
{
"helloWorld": 123
}
Output
The tool returns JSON rows with these fields.
| Field | Type | Description |
|---|---|---|
search_parameters |
object | Search Parameters |
search_parameters.trip_type |
integer | 1=Round trip, 2=One-way, 3=Multi-city |
search_parameters.trip_type_description |
string | Trip Type Description |
search_parameters.departure_id |
string | Departure Airport Code(s) |
search_parameters.arrival_id |
string | Arrival Airport Code(s) |
search_parameters.outbound_date |
string | Outbound Date |
search_parameters.return_date |
string | Return Date |
search_parameters.multi_city_json |
string | Multi-City JSON |
search_parameters.exclude_basic |
boolean | Exclude Basic Economy |
search_parameters.adults |
integer | Number of Adults |
search_parameters.children |
integer | Number of Children |
search_parameters.infants |
integer | Number of Infants |
search_parameters.currency |
string | Currency Code |
search_parameters.language |
string | Language Code |
search_parameters.language_name |
string | Language Name |
search_parameters.country |
string | Country Code |
search_parameters.country_name |
string | Country Name |
search_parameters.max_price |
integer | Maximum Price |
search_parameters.max_stops |
integer | Maximum Stops |
search_parameters.airlines |
string | Preferred Airlines |
search_metadata |
object | Search Metadata |
search_metadata.total_flights_found |
integer | Total Flights Found |
search_metadata.best_flights_count |
integer | Best Flights Count |
search_metadata.other_flights_count |
integer | Other Flights Count |
search_metadata.pages_processed |
integer | Pages Processed |
search_metadata.max_pages_set |
integer | Maximum Pages Set |
search_metadata.pagination_limit_reached |
boolean | Pagination Limit Reached |
search_metadata.booking_options_count |
integer | Total number of individual booking options fetched across all booking tokens. Only present when fetch_booking_options is true. |
search_timestamp |
string | Search Timestamp |
page_number |
integer | Current Page Number |
all_flights |
array | Flat, one-row-per-flight summary of every itinerary on this page (best flights and other flights combined). Powers the Flights view so each flight renders as a single table row. The full nested itineraries remain availa… |
best_flights |
array | Best Flights |
other_flights |
array | Other Flights |
price_insights |
object | Price Insights |
price_insights.lowest_price |
integer | Lowest Price |
price_insights.price_level |
string | Price Level |
price_insights.typical_price_range |
array | Typical Price Range |
airports |
array | Airports Information |
booking_options |
array | Booking Options |
Links
- Actor on Apify: johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search
- Data source page on AlphaOSINT: /sources/google-flights-api/
- All AlphaOSINT MCP servers: /mcp/