> ## Documentation Index
> Fetch the complete documentation index at: https://cloro.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Flights schema

> Schema for Google's flights blocks returned by the Google Search endpoint: airlines, destinations, origins and booking sites, with price, duration, stops, dates and link.

The [Google Search endpoint](https://cloro.dev/docs/api-reference/endpoint/monitor-google.md) returns Google's flights blocks as `result.flights`, one item for each block in page order, on desktop and mobile, with no flag and at no extra cost. `flights` is omitted when the SERP has no flights block.

![Google Flights widget in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=92016106133165ba0aa6c379b03abb82)

Google Flights widget in Google Search

## Layouts

Google shows five flights blocks, each returned as one item of `flights`. Every row the page holds is returned, including the ones the user sees under "More". Train and bus units have the same layout and are not flights.

### Google Flights widget

Outside the EU. Its rows are airlines (duration, stops, price, as above), destinations (stops, duration, price) or destinations with dates and a price. The block returns the search of its form (`origin`, `destination`, `departureDate`, `returnDate`); the price calendar and the rest of the form (cabin, trip type) are not returned. The widget is not in `organicResults`.

![Google Flights widget listing destinations in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights-destinations.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=a5300c6a042732ac03e0f91270276178)

Google Flights widget listing destinations

The widget above, from `cheap flights to hawaii` in the United States. This page shows no search form. A widget with airlines and its search is in the [response example](#response-example).

```json theme={null}
{
  "title": "Flights to Hawaii",
  "expanded": true,
  "options": [
    {
      "position": 1,
      "destination": "Kahului",
      "price": { "value": 734, "currency": "$", "raw": "$734" },
      "duration": "10h 10m+",
      "stops": "1 stop",
      "link": "https://www.google.com/travel/flights?…"
    },
    {
      "position": 2,
      "destination": "Kailua-Kona",
      "price": { "value": 748, "currency": "$", "raw": "$748" },
      "duration": "12h 30m+",
      "stops": "1 stop",
      "link": "https://www.google.com/travel/flights?…"
    }
    // …
  ]
}
```

### Airline options (EU)

Airlines with their stops and price. The line under the heading ("Precios de ida y vuelta desde Madrid · 3–6 dic") is not returned.

![Airline options block in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights-airline-options.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=c55abd6f78a44d87f7fed0a896e8d11a)

Airline options block in Google Search (EU)

The block above, from `vuelos madrid barcelona` in Spain:

```json theme={null}
{
  "title": "Opciones de compañías aéreas",
  "expanded": true,
  "options": [
    {
      "position": 1,
      "airline": "Volotea",
      "price": { "value": 83, "currency": "€", "raw": "83 €" },
      "stops": "Vuelos directos",
      "link": "https://www.google.com/travel/clk/g?w=…"
    },
    {
      "position": 2,
      "airline": "Vueling",
      "price": { "value": 112, "currency": "€", "raw": "112 €" },
      "stops": "Vuelos directos",
      "link": "https://www.google.com/travel/clk/g?w=…"
    }
    // …
  ]
}
```

### Airline websites (EU)

Airlines with price, duration, stops and their website. The block returns the search under its heading (`dates`, `origin`, `destination`, `cabin`, `tripType`, `passengers`). Some pages show it as a closed section (`expanded: false`).

![Airline websites block in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights-airline-websites.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=1b8612e26684c65ff3ec6f7a1fe3d933)

Airline websites block in Google Search (EU)

The block above, from `vuelos barcelona londres` in Spain:

```json theme={null}
{
  "title": "Sitios web de compañías aéreas",
  "expanded": true,
  "origin": "Barcelona",
  "destination": "Londres",
  "dates": "28–29 nov",
  "cabin": "Turista",
  "tripType": "Ida y vuelta",
  "passengers": "1 pasajero",
  "options": [
    {
      "position": 1,
      "airline": "Ryanair",
      "domain": "ryanair.com",
      "price": { "value": 39, "currency": "€", "raw": "desde 39 €" },
      "duration": "2h 25min+",
      "stops": "Directo",
      "link": "https://www.google.com/travel/clk/g?w=…"
    },
    {
      "position": 2,
      "airline": "Wizz Air",
      "domain": "wizzair.com",
      "price": { "value": 62, "currency": "€", "raw": "desde 62 €" },
      "duration": "2h 25min+",
      "stops": "Directo",
      "link": "https://www.google.com/travel/clk/g?w=…"
    }
    // …
  ]
}
```

### Route block (EU)

The booking sites and the flights the page shows for each, up to three (airline, price, duration, number of stops), with the search under the heading as in the airline websites block. Each flight carries its booking site as `supplier`, like the places of the [EU places unit](https://cloro.dev/docs/api-reference/endpoint/google/local-pack.md#eu-places-unit) in local results. Sites are returned open or collapsed; the page opens the first one or none. A booking site with no flights is not shown on the page and is not returned.

![Route block in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights-route.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=7191a8858dd5ff6e202a5ce1e9315c2f)

Route block in Google Search (EU): Skyscanner open, the other booking sites collapsed

The block above, from `vuelos barcelona londres` in Spain: Skyscanner's three flights (open), then those of Google Flights (collapsed) and the other sites.

```json theme={null}
{
  "title": "Vuelos a Londres",
  "expanded": true,
  "origin": "Barcelona",
  "destination": "Londres",
  "dates": "28–29 nov",
  "cabin": "Turista",
  "tripType": "Ida y vuelta",
  "passengers": "1 pasajero",
  "options": [
    {
      "position": 1,
      "airline": "Ryanair",
      "supplier": {
        "name": "Skyscanner",
        "expanded": true,
        "domain": "skyscanner.es",
        "link": "https://www.google.com/travel/clk/g?w=…"
      },
      "price": { "value": 38, "currency": "€", "raw": "38 €" },
      "duration": "2h 25min",
      "stopCount": 0
    },
    // … Skyscanner's 2 other flights
    {
      "position": 4,
      "airline": "Ryanair",
      "supplier": {
        "name": "Google Flights",
        "expanded": false,
        "domain": "google.com",
        "link": "https://www.google.com/travel/flights?tfs=…"
      },
      "price": { "value": 39, "currency": "€", "raw": "39 €" },
      "duration": "2h 25min",
      "stopCount": 0
    }
    // …
  ]
}
```

### Origins

The cities with flights to the destination, with price, the number of flights a day and duration. The line under the heading ("México a Madrid (MAD)") is not returned.

![Origins block in Google Search](https://mintcdn.com/cloro/lEIK1Lgl_joIUtfF/images/google/search-flights-origins.webp?fit=max\&auto=format\&n=lEIK1Lgl_joIUtfF\&q=85\&s=e65591ab7b342cc2486e192c4b915a97)

Origins block in Google Search

The block above, from `vuelos a madrid desde méxico` in Mexico:

```json theme={null}
{
  "title": "Vuelos a Madrid",
  "expanded": true,
  "options": [
    {
      "position": 1,
      "origin": "De Ciudad de México",
      "price": { "value": 14737, "currency": "MXN", "raw": "de MXN 14,737" },
      "duration": "10h 5min",
      "stops": "5 vuelos directos por día",
      "link": "https://www.google.com/travel/flights?…"
    },
    {
      "position": 2,
      "origin": "De Santiago de Querétaro",
      "price": { "value": 15937, "currency": "MXN", "raw": "de MXN 15,937" },
      "duration": "13h 22min+",
      "stops": "Vuelos con 1 escala disponibles",
      "link": "https://www.google.com/travel/flights?…"
    }
    // …
  ]
}
```

## Block structure

`expanded` and `options` are always present. The other fields are included only when Google shows them. A block states its search when Google shows it in a form or a subtitle: the widget in its form (`origin`, `destination`, `departureDate`, `returnDate`), the airline websites and route blocks under their heading (`dates`, `origin`, `destination`, `cabin`, `tripType`, `passengers`). A widget that lists destinations has no `destination`.

| Field | Type | Description |
| - | - | - |
| `title` | string | Heading of the block (`"Flights to Los Angeles, CA"`, `"Sitios web de compañías aéreas"`) |
| `expanded` | boolean | `true` if the block is open on the page; `false` when it is a closed section the user opens with a tap |
| `origin` | string | Origin of the search as shown (`"New York, NY (all airports)"`, `"Barcelona"`) |
| `destination` | string | Destination of the search as shown (`"Los Angeles, CA (LAX)"`, `"Londres"`) |
| `dates` | string | Dates of an EU block's search as shown (`"28–29 nov"`) |
| `departureDate` | string | Departure date in the widget's form (`"Sat, Dec 5"`) |
| `returnDate` | string | Return date in the widget's form (`"Sat, Dec 12"`); absent for a one-way search |
| `cabin` | string | Cabin class as shown (`"Turista"`) |
| `tripType` | string | Trip type as shown (`"Ida y vuelta"`) |
| `passengers` | string | Passengers as shown (`"1 pasajero"`) |
| `options` | array | The rows, in page order. See below |

### Option

`position` is always present. A row has only the other fields Google shows for it: `airline` on airline rows, `destination` on destination rows, `origin` on origins rows, `supplier` on route block rows.

| Field | Type | Description |
| - | - | - |
| `position` | number | Position within the block (1-indexed) |
| `origin` | string | City the flights leave from, in an origins block (`"De Ciudad de México"`) |
| `destination` | string | Destination of the row (`"Kahului"`) |
| `airline` | string | Airline (`"JetBlue"`) |
| `supplier` | object | Booking site that offers the flight, in a route block. See [Supplier](#supplier) |
| `domain` | string | Website of the airline, in an airline websites block (`"ryanair.com"`) |
| `price` | object | Price of the row, as `value`, `currency` and `raw` (`{"value": 290, "currency": "$", "raw": "$290"}`) |
| `priceLabel` | string | Badge on the price (`"LOW PRICE"`) |
| `priceNote` | string | Line under the price (`"$361 less than usual"`) |
| `duration` | string | Flight duration as shown (`"9h 51m+"`, `"ab 2h, 45 Min."`) |
| `stops` | string | Stops as shown (`"Nonstop"`, `"1 escala"`); in an origins block, the flights a day (`"5 vuelos directos por día"`) |
| `stopCount` | number | Number of stops, in a route block (`0` for a direct flight) |
| `dates` | string | Dates of the trip as shown (`"Dec 5 – 12"`) |
| `link` | string | Google Flights page of the row, or Google's link to the airline (`/travel/clk/g`) |

### Supplier

The same object as the supplier of a place in [local results](https://cloro.dev/docs/api-reference/endpoint/google/local-pack.md#eu-places-unit).

| Field | Type | Description |
| - | - | - |
| `name` | string | Name of the booking site (`"Skyscanner"`) |
| `expanded` | boolean | `true` if the page shows this site's flights without a click |
| `domain` | string | Website of the booking site (`"skyscanner.es"`) |
| `link` | string | The site's "See more" link: Google's link to its page for the search (`/travel/clk/g`), or a Google Flights page for Google Flights |

Text fields are as shown, in the language of the SERP. A row that shows no price ("check price") has no `price`.

## Response example

A response to `flights from new york to los angeles` in the United States, on desktop:

```json theme={null}
{
  "success": true,
  "result": {
    "flights": [
      {
        "title": "Flights to Los Angeles, CA",
        "expanded": true,
        "origin": "New York, NY (all airports)",
        "destination": "Los Angeles, CA (LAX)",
        "departureDate": "Sat, Dec 5",
        "returnDate": "Sat, Dec 12",
        "options": [
          {
            "position": 1,
            "airline": "JetBlue",
            "price": { "value": 290, "currency": "$", "raw": "$290" },
            "duration": "9h 51m+",
            "stops": "Connecting",
            "link": "https://www.google.com/travel/flights?…"
          }
          // …
        ]
      }
    ]
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.