# Google Flights Scraper - Prices, Emissions & Booking Options (`parseforge/google-flights-scraper`) Actor

Scrape Google Flights fares, airlines, times, stops, layovers, CO2 and price insights, plus per-seller booking options. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/google-flights-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.34 / 1,000 flight options

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Google Flights Scraper & Price Tracker: Fares, Emissions, Booking Options & Cheapest Dates

**Scrape Google Flights for any route and date: 30 flight options for New York to Los Angeles came back from a single request in under a second of scraping in our last test run.** Every option carries its price, airlines, flight numbers, times with UTC offsets, stops and layovers, aircraft, legroom, onboard amenities, CO2 emissions and the "best" flag Google puts on its top flights. No login, no API key. Export to CSV, JSON, Excel, or XML.

Google Flights has no public API. This Actor reads the same result set the Google Flights page shows, keeps Google's own ranking, adds the price insights (low, typical or high, with the typical range and a 60-day price history), and can go one step further: the per-seller booking options for a flight (airline and travel agency prices, fare names, bag fees, booking links) and the price graph with the cheapest fare for about 60 dates around your trip.

| Who uses it | What they scrape Google Flights for |
|---|---|
| Travel startups and fare alert apps | A Google Flights price tracker: the same routes every day, alerting when a fare drops below the typical range |
| Revenue and pricing analysts | Competitor fares by airline, cabin and date, with the exact price in cents |
| Travel agencies and OTAs | Which sellers Google lists for a flight and at what price, next to the airline's own fare |
| Corporate travel and sustainability teams | CO2 per itinerary against the route's typical emissions |
| Data scientists | Airfare datasets for demand, seasonality and price forecasting models |

### What it does

The Actor takes an origin, a destination and a date (plus an optional return date), or pasted Google Flights links, and returns one flat row per flight option.

- 💰 **Price:** the total for your whole party (`price`), the exact amount in cents (`priceExact`), the currency, and whether the fare is low, typical or high right now.
- ✈️ **Itinerary:** airlines, flight numbers, departure and arrival airports and times (ISO 8601 with UTC offset), total duration and number of stops.
- 🧳 **Layovers:** airport, city and layover duration for every connection.
- 🛋 **Per segment:** aircraft and aircraft code, legroom (inches and Google's average / above / below label), Wi-Fi, power, video, the "often delayed by 30+ min" warning, operating carrier and contrail warming potential.
- 🌱 **Emissions:** CO2 in kg for the itinerary, the typical CO2 for the route and the difference in percent.
- ⭐ **Google's ranking:** the `isBest` flag for Google's top flights and the original `rank`, or your own sort by price, duration, departure, arrival or emissions.
- 🔗 **Links:** the Google Flights search URL and the booking page URL for each option, plus Google's booking token.
- ➕ **Optional extras**, each off by default: return flights for round trips, 60-day price history, booking options per seller, and the price graph of cheapest dates.

### What you can do with Google Flights data

**📉 Run a Google Flights price tracker.**

Schedule the same routes every morning and keep the cheapest option per route. `priceLevel` tells you when Google itself calls the fare low, and `typicalPriceLow` / `typicalPriceHigh` give you the range to alert against.

**🗓 Find the cheapest dates to fly.**

Turn on the price graph and get one row per date with the cheapest fare Google shows, about two months around your date, for one-way or round trips.

**🏷 Compare sellers for the same flight.**

Turn on booking options to see every seller Google lists for a flight: the airline's fare families (Basic, Main, Flex) next to travel agencies, with first and second checked bag fees.

**🌍 Report on flight emissions.**

Every row carries CO2 in kg and how it compares with the typical flight on the route, so you can pick the lower-emission option at a given price.

### Why choose this scraper

| | What you get |
|---|---|
| **Fast and light** | One HTTP request returns the full result set for a search. No browser unless you ask for booking options or the price graph. |
| **Every field on the card** | Price, times with UTC offsets, layovers, aircraft, legroom, Wi-Fi, power, video, delay warnings, emissions and the best-flight flag, in one schema. |
| **Exact prices** | `priceExact` carries the fare to the cent, next to the rounded price Google displays. |
| **Price insights on every row** | Low, typical or high, the typical range, and optionally the 60-day price history. |
| **Round trips done right** | Outbound options priced as round trips, and optionally the matching return flights, each with a booking link for the pair. |
| **Your Google Flights links work** | Paste any one-way or round-trip search URL and it runs as is, passengers and cabin included. |
| **Every market** | 71 currencies, 72 languages and 186 countries, the same lists Google Flights offers. |

### How it compares

All the scrapers below read Google Flights. This one adds Wi-Fi, power, video, delay warnings and contrail data per segment, exact prices to the cent, and price insights with history, with no browser for the main search. It does not do multi-city or departure-time windows yet. The comparison uses each rival's public input and README on September 24, 2026.

| Feature | ParseForge | kaix/google-flights-scraper | memo23/google-flights-scraper | automation-lab/google-flights-scraper |
|---|---|---|---|---|
| Legroom per segment | Yes | Not listed | Yes | Not listed |
| Wi-Fi, power, video and delay warnings per segment | Yes | Not listed | Not listed | Not listed |
| CO2 per itinerary and vs. typical | Yes | Yes | Not listed | Yes |
| Price insights (low / typical / high) | Yes, with 60-day history | Not listed | Yes | Not listed |
| Booking options per seller | Optional | Optional | Optional | No |
| Cheapest dates | Optional price graph | Calendar prices | No | Not listed |
| Paste Google Flights URLs | Yes | No | Yes | No |
| Multi-city | No | Not listed | Yes | No |
| Departure and arrival time windows | No | Yes | No | No |

### What a Google Flights row looks like

One unedited row from a verified run on September 24, 2026 (JFK to LAX, one way, November 17):

```json
{
  "imageUrl": "https://www.gstatic.com/flights/airline_logos/70px/DL.png",
  "title": "JFK to LAX, Delta DL 713",
  "id": "2026-11-17_DL713",
  "rank": 1,
  "isBest": "Yes",
  "price": 194,
  "priceExact": 193.4,
  "currency": "USD",
  "airlines": ["Delta"],
  "airlineCodes": ["DL"],
  "flightNumbers": ["DL 713"],
  "departureAirport": "JFK",
  "departureAirportName": "John F. Kennedy International Airport",
  "arrivalAirport": "LAX",
  "arrivalAirportName": "Los Angeles International Airport",
  "departureTime": "2026-11-17T08:00:00-05:00",
  "arrivalTime": "2026-11-17T11:19:00-08:00",
  "durationMinutes": 379,
  "durationText": "6 hr 19 min",
  "stops": 0,
  "layovers": [],
  "aircraft": ["Airbus A330-900neo"],
  "amenities": ["Free Wi-Fi", "In-seat power & USB outlets", "On-demand video"],
  "oftenDelayed": "No",
  "co2EmissionsKg": 253,
  "co2TypicalForRouteKg": 347,
  "co2DifferencePercent": -27,
  "emissionsLevel": "Lower than typical",
  "segments": [
    {
      "flightNumber": "DL 713",
      "airline": "Delta",
      "airlineCode": "DL",
      "operatedBy": "N/A",
      "departureAirport": "JFK",
      "departureAirportName": "John F. Kennedy International Airport",
      "arrivalAirport": "LAX",
      "arrivalAirportName": "Los Angeles International Airport",
      "departureTime": "2026-11-17T08:00:00-05:00",
      "arrivalTime": "2026-11-17T11:19:00-08:00",
      "durationMinutes": 379,
      "aircraft": "Airbus A330-900neo",
      "aircraftCode": "339",
      "legroom": "31 in",
      "legroomLabel": "Average legroom",
      "amenities": ["Free Wi-Fi", "In-seat power & USB outlets", "On-demand video"],
      "oftenDelayed": "No",
      "co2EmissionsKg": 253,
      "contrailWarmingPotential": "Low"
    }
  ],
  "bookingToken": "CjRIR2xYSmJYdDRCZEFBQWh3UVFCRy0tLS0tLXZ3bG0xNy1uMkFBQUFBR3ExamdnR0NKQTBBEgVETDcxMxoLCIyXARACGgNVU0Q4HXCMlwE=",
  "rowType": "flight",
  "legType": "outbound",
  "tripType": "One way",
  "cabinClass": "Economy",
  "passengers": 1,
  "priceNote": "Total one-way price for all passengers",
  "priceLevel": "Typical",
  "typicalPriceLow": 85,
  "typicalPriceHigh": 225,
  "searchOrigin": "JFK",
  "searchDestination": "LAX",
  "searchDepartureDate": "2026-11-17",
  "searchReturnDate": "N/A",
  "outboundFlightId": "N/A",
  "googleFlightsUrl": "https://www.google.com/travel/flights/search?tfs=Gh4SCjIwMjYtMTEtMTdqBwgBEgNKRktyBwgBEgNMQVhAAUgBmAEC&hl=en-US&gl=US&curr=USD",
  "bookingUrl": "https://www.google.com/travel/flights/booking?tfs=Gj8SCjIwMjYtMTEtMTciHwoDSkZLEgoyMDI2LTExLTE3GgNMQVgqAkRMMgM3MTNqBwgBEgNKRktyBwgBEgNMQVhAAUgBmAEC&tfu=CmxDalJJUjJ4WVNtSllkRFJDWkVGQlFXaDNVVkZDUnkwdExTMHRMWFozYkcweE55MXVNa0ZCUVVGQlIzRXhhbWRuUjBOS1FUQkJFZ1ZFVERjeE14b0xDSXlYQVJBQ0dnTlZVMFE0SFhDTWx3RT0SAggAIgA&hl=en-US&gl=US&curr=USD",
  "scrapedAt": "2026-09-24T20:54:32.790Z",
  "error": null
}
```

With booking options on, a row also carries `bookingOptions`. For JetBlue B6 423 in the same run: Main Base $204, Main $259, Main Flex $344, Even More Base $388 and Even More $443, all sold by JetBlue, first checked bag $45, each with its booking link.

With the price graph on, the run adds one row per date:

```json
{ "rowType": "date-price", "title": "JFK to LAX on 2026-11-10", "departureDate": "2026-11-10", "returnDate": "N/A", "price": 194, "currency": "USD", "tripType": "One way", "cabinClass": "Economy" }
```

### Configure the run

Give an origin, a destination and a date, or paste Google Flights links. City codes (NYC, LON) cover every airport in the city, and several airports can be combined with commas (JFK,EWR). The Input tab lists every option.

Cheapest nonstop business-class seats for two, in euros:

```json
{ "origin": "NYC", "destination": "LON", "departureDate": "2026-11-17", "adults": 2, "cabinClass": "business", "maxStops": "0", "currency": "EUR", "sortBy": "price" }
```

A round trip with the return options for the top two outbound flights and their booking options:

```json
{ "origin": "JFK", "destination": "LAX", "departureDate": "2026-11-17", "returnDate": "2026-11-24", "includeReturnFlights": true, "returnFlightsForTopOutbound": 2, "includeBookingOptions": true }
```

Cheapest dates around a trip, only on SkyTeam airlines:

```json
{ "origin": "BOS", "destination": "MIA", "departureDate": "2026-12-05", "airlines": ["SKYTEAM"], "includePriceGraph": true }
```

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Google Flights Scraper.
3. Enter `origin`, `destination` and `departureDate` (and `returnDate` for a round trip), or paste links in `startUrls`, set passengers, cabin and filters, and click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab, or schedule the run to track fares every day.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2?fpr=vmoqkp) or the [ApifyClient](https://docs.apify.com/api/client/js?fpr=vmoqkp) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live Google Flights search through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/google-flights-scraper"
```

Then prompt it in plain language:

- *"Find the cheapest nonstop flight from Boston to Miami on December 5 and tell me if the price is low for that route."*
- *"Compare business class fares from New York to London next month across airlines, with CO2 per flight."*
- *"Which dates around mid November have the cheapest round trip from Chicago to Denver?"*

Copy this into ChatGPT, Claude, or Cursor to start:

```
Use the Apify Actor "parseforge/google-flights-scraper" to search Google Flights. Input: { "origin": "<IATA>", "destination": "<IATA>", "departureDate": "<YYYY-MM-DD>", "returnDate": "<YYYY-MM-DD or empty>", "adults": <n>, "cabinClass": "<economy|premium-economy|business|first>", "maxStops": "<any|0|1|2>", "sortBy": "<best|price|duration>", "maxItems": <n> }. Rows come back with price, currency, airlines, flightNumbers, departureTime, arrivalTime, durationMinutes, stops, layovers, co2EmissionsKg, priceLevel and bookingUrl. Call it with the ApifyClient and my APIFY_TOKEN.
```

### Troubleshooting

**Why am I getting no results?**

Check the codes and the date: origin and destination must be IATA airport or city codes (JFK, NYC), and the date must be today or later. Google Flights shows nothing for routes with no service on that day, and a strict stops or airline filter can empty a search. The run says so in its log.

**Why do I get about 30 results per search?**

That is what Google Flights shows for a search: its top flights plus the other flights, usually 15 to 40 options. For more rows, add dates, routes or return flights. `maxItems` caps the total.

**Why is the price for a round trip so high?**

Google Flights prices a round trip as a pair, so each outbound row carries the total round-trip price for all passengers. Turn on return flights to see which returns go with it.

**Why is a field "Not Disclosed" or "N/A"?**

"Not Disclosed" means Google did not publish it for that flight (for example legroom on some regional carriers). "N/A" means it does not apply, such as `returnDate` on a one-way search or `operatedBy` when the marketing carrier flies the plane itself.

**Why did the booking options come back empty?**

Some itineraries are only sold as part of a round trip, and a few cannot be booked on Google at that moment. The row is still delivered, and booking options are billed only when they come back.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Google account or API key? | No. It reads the public Google Flights pages, logged out. |
| Is there an official Google Flights API? | No. Google retired QPX Express in 2018. This Actor returns the same data the Google Flights page shows. |
| Does it support round trips and multi-city? | One-way and round trips, yes. Multi-city is not supported: run each leg as a one-way search. |
| Which filters are applied by Google? | Stops, airlines and alliances, cabin and passengers go into the Google Flights search itself. Max price and max duration are applied to the returned options. |
| Can I track prices over time? | Yes. Schedule the same input daily and use `priceLevel`, the typical range, and the optional 60-day price history. |
| Are prices per person? | No, `price` is the total for all passengers in the party, in the currency you choose. |
| How exact is the price? | `price` is the rounded amount Google shows. `priceExact` is the fare to the cent from Google's own itinerary data. |
| What are booking options? | The sellers Google lists for a flight (the airline and travel agencies) with their prices, fare names, bag fees and booking links. |
| Can I paste a Google Flights link? | Yes. One-way and round-trip search links with `tfs=` in the address run with their own passengers and cabin. |
| How many results per run? | Free plan: 10. Paid: up to 1,000,000, across as many searches as you give it. |
| Is this an official Google product? | No. It is unofficial and reads only public Google Flights data. |

### Related actors

- [KAYAK Flight Scraper](https://apify.com/parseforge/kayak-scraper?fpr=vmoqkp): flight prices and routes from KAYAK.
- [Skyscanner Flight Scraper](https://apify.com/parseforge/skyscanner-scraper?fpr=vmoqkp): live fares, airlines, stops and timings by airport pair and date.
- [Momondo Flight Prices Scraper](https://apify.com/parseforge/momondo-scraper?fpr=vmoqkp): Momondo airfare by origin, destination and date.
- [Google Maps Contacts Scraper](https://apify.com/parseforge/google-maps-contacts-scraper?fpr=vmoqkp): places and their contact details from Google Maps.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Google LLC. It collects only publicly available Google Flights data. Prices change constantly and must be confirmed with the seller before booking. You are responsible for using the data in compliance with Google's terms and applicable laws.

# Actor input Schema

## `origin` (type: `string`):

IATA airport or city code the trip starts from, e.g. JFK, LHR or NYC (all New York airports). Several airports can be combined with commas: JFK,EWR,LGA.

## `destination` (type: `string`):

IATA airport or city code of the destination, e.g. LAX, CDG or LON (all London airports). Several airports can be combined with commas.

## `departureDate` (type: `string`):

Outbound date, YYYY-MM-DD. Must be today or later.

## `returnDate` (type: `string`):

Fill it for a round trip. Leave it empty for a one-way search. Round-trip prices are the total for both directions.

## `startUrls` (type: `array`):

Paste Google Flights search links (the ones with tfs= in the address). One-way and round-trip links are supported. Each link runs as its own search, next to the route above.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `cabinClass` (type: `string`):

Cabin to price.

## `adults` (type: `integer`):

Passengers aged 12 or older.

## `children` (type: `integer`):

Passengers aged 2 to 11.

## `infantsInSeat` (type: `integer`):

Infants under 2 with their own seat.

## `infantsOnLap` (type: `integer`):

Infants under 2 travelling on an adult lap.

## `maxStops` (type: `string`):

Google Flights stops filter.

## `airlines` (type: `array`):

Only show flights from these carriers. Use 2-letter IATA airline codes (DL, BA, LH) or an alliance: ONEWORLD, SKYTEAM, STAR\_ALLIANCE. Leave empty for all airlines.

## `maxPrice` (type: `integer`):

Drop options above this total price, in the selected currency.

## `maxDurationMinutes` (type: `integer`):

Drop options whose total travel time, layovers included, is longer than this.

## `sortBy` (type: `string`):

Order of the results. "Best" keeps the order Google Flights shows, with its top flights first.

## `currency` (type: `string`):

Currency for every price.

## `language` (type: `string`):

Language for airport names and labels.

## `country` (type: `string`):

Market Google Flights prices the search for. Fares can differ between countries.

## `includeReturnFlights` (type: `boolean`):

For round trips, also collect the return options for the top outbound flights, each with the full round-trip price and a booking link for the pair. Each return option is a result.

## `returnFlightsForTopOutbound` (type: `integer`):

How many of the top outbound flights get their return options collected.

## `includePriceHistory` (type: `boolean`):

Add the 60-day price history Google Flights shows for this search to every row.

## `includeBookingOptions` (type: `boolean`):

For the top flights, open the Google Flights booking page and collect every seller (airline and travel agencies) with its price, fare name, bag fees and booking link. Billed per flight that returns booking options.

## `maxBookingOptionFlights` (type: `integer`):

How many flights get their booking options collected, starting from the top of your sort order.

## `includePriceGraph` (type: `boolean`):

Add one row per date with the cheapest fare Google Flights shows for about two months around your date. Billed per date row.

## `proxyConfiguration` (type: `object`):

Google Flights usually answers without a proxy. Switch on Apify Proxy for large volumes.

## Actor input object example

```json
{
  "origin": "JFK",
  "destination": "LAX",
  "departureDate": "2026-11-17",
  "maxItems": 10,
  "cabinClass": "economy",
  "adults": 1,
  "children": 0,
  "infantsInSeat": 0,
  "infantsOnLap": 0,
  "maxStops": "any",
  "sortBy": "best",
  "currency": "USD",
  "language": "en-US",
  "country": "US",
  "includeReturnFlights": false,
  "returnFlightsForTopOutbound": 1,
  "includePriceHistory": false,
  "includeBookingOptions": false,
  "maxBookingOptionFlights": 5,
  "includePriceGraph": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields

## `fullData` (type: `string`):

Complete dataset with all 52 fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "origin": "JFK",
    "destination": "LAX",
    "departureDate": "2026-11-17",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/google-flights-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "origin": "JFK",
    "destination": "LAX",
    "departureDate": "2026-11-17",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/google-flights-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "origin": "JFK",
  "destination": "LAX",
  "departureDate": "2026-11-17",
  "maxItems": 10
}' |
apify call parseforge/google-flights-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/google-flights-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DgBnHhfeBV4UMDqeT/builds/EjHwsqMcNGfpoVEC5/openapi.json
