# Google Flights Price Calendar

<p>Get the lowest flight price for every departure date of a route in one request. The grid comes from ONE lookup, so a 60-day price calendar costs 1 credit, not one paid call per date.</p><h3>What You Get</h3><ul><li><strong>One price per departure date</strong> for a window of up to 120 days</li><li><strong>One way or round trip</strong> with a fixed trip length (send <code>trip_length</code> or <code>return_date</code>)</li><li><strong>Low price flag</strong> on every date within 5 % of the cheapest date of the window</li><li><strong>Cabin, passengers and currency</strong> through <code>travel_class</code>, <code>adults</code> and <code>currency</code></li></ul><h3>Good to Know</h3><ul><li><code>price</code> is the total for all passengers, not per person.</li><li>Dates without a fare are left out of <code>calendar</code>.</li><li><code>origin</code> and <code>destination</code> take an IATA code or a place kgmid. Use the city kgmid for multi-airport cities.</li><li>Prices are live and can change between two calls. Children and infants are not supported.</li><li>Cost: 1 credit per successful request. Failed requests are not billed.</li></ul>

- **Documentation:** [https://scrappa.co/docs/google-flights-api/google_flights_calendar](https://scrappa.co/docs/google-flights-api/google_flights_calendar)
- **API group:** Google Flights API
- **Endpoint:** `GET https://scrappa.co/api/flights/calendar`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `origin` | string | Yes | <p>Departure airport IATA code or place kgmid.</p><p><strong>Examples:</strong> <code>JFK</code>, <code>/m/0156q</code></p> |
| `destination` | string | Yes | <p>Arrival airport IATA code or place kgmid. Must differ from the origin.</p><p><strong>Examples:</strong> <code>LHR</code>, <code>/m/04jpl</code></p> |
| `outbound_date_start` | string | Yes | <p>First departure date of the window, <code>YYYY-MM-DD</code>. Today or later.</p> |
| `outbound_date_end` | string | Yes | <p>Last departure date of the window, <code>YYYY-MM-DD</code>. At most 120 days after the start.</p> |
| `return_date` | string | No | <p>Makes the search a round trip. The trip length is the number of days between <code>outbound_date_start</code> and this date. Cannot be combined with <code>trip_length</code>.</p> |
| `trip_length` | string | No | <p>Makes the search a round trip with this many days between departure and return (1-30). Leave out both fields for one way.</p> |
| `travel_class` | string | No | <p>1 = economy (default), 2 = premium economy, 3 = business, 4 = first.</p> |
| `adults` | string | No | <p>Number of adults (1-9, default 1). The price is the total for all adults.</p> |
| `currency` | string | No | <p>3-letter currency code. <strong>Default:</strong> <code>USD</code></p> |
| `gl` | string | No | <p>2-letter country code the prices are pinned to. <strong>Default:</strong> <code>us</code></p> |
| `hl` | string | No | <p>Language code. <strong>Default:</strong> <code>en</code></p> |

## Example response

```json
{
    "calendar": [
        {
            "price": 665,
            "low_price": true,
            "return_date": "2026-12-10",
            "outbound_date": "2026-12-03"
        },
        {
            "price": 691,
            "low_price": false,
            "return_date": "2026-12-11",
            "outbound_date": "2026-12-04"
        },
        {
            "price": 691,
            "low_price": false,
            "return_date": "2026-12-12",
            "outbound_date": "2026-12-05"
        }
    ],
    "lowest_price": {
        "price": 665,
        "outbound_date": "2026-12-03"
    },
    "search_metadata": {
        "engine": "google_flights_calendar",
        "status": "Success",
        "total_dates": 3
    },
    "search_parameters": {
        "gl": "us",
        "hl": "en",
        "adults": 1,
        "origin": "JFK",
        "currency": "USD",
        "trip_type": "round_trip",
        "destination": "LHR",
        "trip_length": 7,
        "travel_class": 1,
        "outbound_date_end": "2026-12-05",
        "outbound_date_start": "2026-12-03"
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | origin, destination, outbound_date_start and outbound_date_end are required. The window must be at most 120 days. Send return_date or trip_length, not both. |
| 503 | Google Flights Price Calendar Temporarily Unavailable | The upstream lookup failed on every try. The request is not billed. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
