# Ryanair Flights Scraper \[$0.5/1k 💙 ] (`epicscrapers/ryan-air-scraper`) Actor

Scrape Ryanair flight fares, prices, routes, and cheapest destinations. Search one-way or round-trip flights by airport, date range, currency, and market, then export structured fare data with prices, flight numbers, availability, and booking links.\*

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

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Scrape Ryanair Flights, Fares, Routes, and Cheapest Destinations

Find Ryanair flight fares by route, date range, trip type, and currency. This Apify Actor scrapes one-way fares, round-trip fares, and explore-mode cheapest destinations from one or more origin airports using Ryanair fare data.

Use it to monitor flight prices, discover cheap destinations, compare route options, or collect structured Ryanair fare data without manually searching the Ryanair website route by route.

### What This Actor Does

**Ryanair Flights Scraper** extracts structured fare data from Ryanair, including:

- Origin and destination airport IATA codes
- Outbound and return dates
- Departure and arrival times
- Flight numbers
- Fare price and currency
- Availability, sold-out, and unavailable status
- Airport metadata when available
- Generated Ryanair booking links
- Raw outbound and inbound fare objects for deeper analysis

It supports three main scraping modes:

1. **Specific one-way route search** — scrape cheapest fares per day for selected routes.
2. **Round-trip search** — find outbound and inbound fare combinations across date ranges.
3. **Explore mode** — leave destinations empty to discover cheap destinations from each origin airport.

### Key Benefits

- **Find cheap Ryanair routes faster**  
  Search many date combinations and routes in one run instead of checking Ryanair manually.

- **Monitor fare prices over time**  
  Run the Actor on a schedule and track price changes for routes you care about.

- **Discover destinations from an airport**  
  Leave destinations empty and collect Ryanair's cheapest available destination options from each origin.

- **Export clean structured data**  
  Get normalized JSON records ready for dashboards, spreadsheets, databases, alerts, or travel tools.

- **Generate booking deep links**  
  Each available fare includes a Ryanair booking URL with route, date, and passenger parameters.

### Features

| Feature | Advantage | Benefit |
|---|---|---|
| One-way route scraping | Uses Ryanair route calendar fare data | Collect daily prices for specific origin-destination pairs |
| Round-trip fare search | Combines outbound and inbound date ranges | Compare return-trip options without manual searching |
| Explore mode | Searches destinations from an origin when destination is empty | Discover cheap Ryanair destinations quickly |
| Multi-origin and multi-destination input | Runs multiple route combinations in one Actor run | Scale route research without separate searches |
| Price filtering | Saves only fares at or below your maximum price | Focus on deals that match your budget |
| Sorting options | Sort by cheapest, earliest departure, shortest duration, or source order | Get the most relevant fares first |
| Availability handling | Can exclude unavailable fares or include unavailable calendar dates | Choose between clean available-only data or complete route calendars |
| Currency and market settings | Supports custom currency and Ryanair locale/market | Localize prices for different regions |
| Booking URL generation | Builds Ryanair booking links for available fares | Move directly from data to booking flow |
| Structured dataset output | Saves normalized records to the Apify dataset | Use the data immediately in APIs, exports, or automations |

### Example Output

```json
{
  "scrapeMode": "routeCalendar",
  "tripType": "oneWay",
  "origin": "DUB",
  "destination": "STN",
  "outboundDate": "2026-08-15",
  "returnDate": null,
  "departureDateTime": "2026-08-15T06:25:00",
  "arrivalDateTime": "2026-08-15T07:45:00",
  "flightNumber": "FR203",
  "price": 29.99,
  "currency": "EUR",
  "currencySymbol": "€",
  "available": true,
  "soldOut": false,
  "unavailable": false,
  "duration": null,
  "bookingUrl": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-08-15&isConnectedFlight=false&discount=0&promoCode=&originIata=DUB&destinationIata=STN",
  "outbound": {
    "day": "2026-08-15",
    "price": {
      "value": 29.99,
      "currencyCode": "EUR",
      "currencySymbol": "€"
    }
  },
  "inbound": null
}
````

Round-trip and explore-mode records may also include:

```json
{
  "scrapeMode": "routeSearch",
  "tripType": "roundTrip",
  "origin": "DUB",
  "destination": "BCN",
  "outboundDate": "2026-09-10",
  "returnDate": "2026-09-17",
  "returnDepartureDateTime": "2026-09-17T12:10:00",
  "returnArrivalDateTime": "2026-09-17T14:00:00",
  "returnFlightNumber": "FR3977",
  "price": 84.98,
  "currency": "EUR",
  "originAirport": {
    "iataCode": "DUB",
    "name": "Dublin",
    "cityName": "Dublin",
    "countryName": "Ireland"
  },
  "destinationAirport": {
    "iataCode": "BCN",
    "name": "Barcelona El Prat",
    "cityName": "Barcelona",
    "countryName": "Spain"
  }
}
```

### Input Options

#### `origins` array, required

One or more origin airport IATA codes.

```json
{
  "origins": ["DUB", "STN", "BCN"]
}
```

#### `destinations` array, optional

Destination airport IATA codes.

If you provide destinations, the Actor searches specific routes. If you leave destinations empty, the Actor runs in **Explore mode** and finds cheap destinations from each origin.

```json
{
  "origins": ["DUB"],
  "destinations": ["STN", "BCN"]
}
```

#### `tripType` string

Choose the type of trip to search.

Allowed values:

- `oneWay` — scrape one-way fares
- `roundTrip` — scrape outbound and return fare combinations

Default: `oneWay`

```json
{
  "tripType": "roundTrip"
}
```

> Round-trip searches require at least one destination plus `returnDateFrom` and `returnDateTo`.

#### `outboundDateFrom` and `outboundDateTo` strings

Outbound date range in `YYYY-MM-DD` format.

If omitted, the Actor searches from today through the next 7 days.

```json
{
  "outboundDateFrom": "2026-08-01",
  "outboundDateTo": "2026-08-31"
}
```

#### `returnDateFrom` and `returnDateTo` strings

Return date range for round-trip searches in `YYYY-MM-DD` format.

```json
{
  "tripType": "roundTrip",
  "returnDateFrom": "2026-09-10",
  "returnDateTo": "2026-09-20"
}
```

#### `currency` string

Currency code for returned fares.

Default: `EUR`

Examples: `EUR`, `GBP`, `USD`

```json
{
  "currency": "GBP"
}
```

#### `market` string

Ryanair market / locale used for pricing and localization.

Default: `en-gb`

Examples: `en-gb`, `en-ie`, `es-es`, `de-de`

```json
{
  "market": "en-ie"
}
```

#### `maxPrice` number, optional

Only save fares at or below this price.

```json
{
  "maxPrice": 50
}
```

#### `sortBy` string

Controls how results are ordered before applying `maxResults`.

Allowed values:

- `sourceOrder` — keep Ryanair source order
- `priceAsc` — cheapest fares first
- `departureAsc` — earliest departure first
- `durationAsc` — shortest duration first

Default: `priceAsc`

```json
{
  "sortBy": "priceAsc"
}
```

#### `includeUnavailable` boolean

For specific one-way route calendar searches, include dates with no available fare as records with `price: null` and `available: false`.

Default: `false`

```json
{
  "includeUnavailable": true
}
```

#### `maxResults` integer

Maximum number of fare records to save after filtering and sorting.

Default: `1000`

```json
{
  "maxResults": 500
}
```

#### Passenger fields

Used when generating Ryanair booking links.

| Field | Description | Default |
|---|---|---:|
| `adults` | Number of adults | `1` |
| `teens` | Number of teens aged 12–15 | `0` |
| `children` | Number of children aged 2–11 | `0` |
| `infants` | Number of infants under 2 | `0` |

```json
{
  "adults": 2,
  "children": 1
}
```

#### `requestTimeoutSecs` integer

Timeout for each Ryanair API request in seconds.

Default: `30`

```json
{
  "requestTimeoutSecs": 45
}
```

### Example Inputs

#### Scrape one-way fares for a specific route

```json
{
  "origins": ["DUB"],
  "destinations": ["STN"],
  "tripType": "oneWay",
  "outboundDateFrom": "2026-08-01",
  "outboundDateTo": "2026-08-31",
  "currency": "EUR",
  "maxResults": 100
}
```

#### Find round-trip fares

```json
{
  "origins": ["DUB"],
  "destinations": ["BCN"],
  "tripType": "roundTrip",
  "outboundDateFrom": "2026-09-01",
  "outboundDateTo": "2026-09-10",
  "returnDateFrom": "2026-09-14",
  "returnDateTo": "2026-09-21",
  "currency": "EUR",
  "sortBy": "priceAsc",
  "maxResults": 50
}
```

#### Explore cheapest destinations from an airport

```json
{
  "origins": ["STN"],
  "destinations": [],
  "tripType": "oneWay",
  "outboundDateFrom": "2026-10-01",
  "outboundDateTo": "2026-10-31",
  "maxPrice": 40,
  "currency": "GBP",
  "market": "en-gb"
}
```

#### Search multiple routes in one run

```json
{
  "origins": ["DUB", "STN"],
  "destinations": ["BCN", "ALC", "PMI"],
  "tripType": "oneWay",
  "outboundDateFrom": "2026-07-01",
  "outboundDateTo": "2026-07-15",
  "sortBy": "priceAsc",
  "maxResults": 1000
}
```

### Common Use Cases

- **Flight price monitoring** — track fare changes for specific Ryanair routes.
- **Travel deal discovery** — find cheap destinations from selected airports.
- **Market research** — analyze Ryanair pricing by route, date, currency, or market.
- **Travel app data enrichment** — feed structured fare data into trip planning tools.
- **Competitor and route analysis** — compare fare levels across airport pairs.
- **Alerting workflows** — trigger notifications when fares drop below a target price.

### Why Use This Actor

- **Built specifically for Ryanair fare search** — supports route calendars, round trips, and cheapest-destination exploration.
- **Flexible search setup** — combine multiple origins, destinations, date ranges, currencies, and markets.
- **Clean normalized output** — get consistent fields such as `origin`, `destination`, `outboundDate`, `price`, `currency`, and `bookingUrl`.
- **Useful raw data included** — access the original outbound and inbound fare objects when you need more detail.
- **Ready for automation** — run manually, schedule recurring checks, or integrate through Apify API, webhooks, and dataset exports.

### FAQ

#### Does this Actor require proxies?

Usually, no proxy setup is required from the user. The Actor requests Ryanair fare data and runs on Apify infrastructure. If Ryanair changes access behavior or rate limits become stricter, proxy configuration may need to be adjusted in the future.

#### Can it scrape all Ryanair destinations from an origin?

Yes, use **Explore mode** by providing `origins` and leaving `destinations` empty. The Actor will search cheapest available destinations from each origin airport for the selected date range.

#### Can it scrape round-trip fares?

Yes. Set `tripType` to `roundTrip`, provide at least one destination, and set `returnDateFrom` plus `returnDateTo`.

#### Can I search multiple airports at once?

Yes. Add multiple IATA codes to `origins` and/or `destinations`. For example, two origins and three destinations will check six route combinations for one-way route searches.

#### What date format should I use?

Use `YYYY-MM-DD`, for example `2026-08-15`.

#### What happens if I do not provide outbound dates?

The Actor defaults to searching from today through the next 7 days.

#### Does it support localization?

Yes. Use the `market` input, such as `en-gb`, `en-ie`, `es-es`, or `de-de`, and set the `currency` input to your preferred currency code.

#### Can I include unavailable dates?

Yes, for specific one-way route calendar searches. Set `includeUnavailable` to `true` to save unavailable calendar dates with `price: null` and `available: false`.

#### How much does it cost?

The cost depends on your Apify plan, run duration, number of routes, date ranges, and result volume. Use `maxResults`, narrower date ranges, and targeted route lists to control usage.

#### Is this an official Ryanair product?

No. This Actor is an independent scraper and is not affiliated with or endorsed by Ryanair.

### Start Scraping Ryanair Fares

Run the Actor with your origin airports, destination airports or Explore mode, date range, and currency. Export results as JSON, CSV, Excel, or access them through the Apify API to power price monitors, travel dashboards, alerts, and research workflows.

# Actor input Schema

## `origins` (type: `array`):

Add one or more origin airport IATA codes, for example <code>DUB</code>, <code>STN</code>, or <code>BCN</code>.

## `destinations` (type: `array`):

Add destination airport IATA codes for route searches. Leave empty to discover the cheapest available destinations from each origin.

## `tripType` (type: `string`):

Choose one-way for route calendars or Explore mode. Choose round-trip only when destinations and return dates are provided.

## `outboundDateFrom` (type: `string`):

Enter the earliest outbound departure date in <code>YYYY-MM-DD</code> format.

## `outboundDateTo` (type: `string`):

Enter the latest outbound departure date in <code>YYYY-MM-DD</code> format.

## `returnDateFrom` (type: `string`):

Enter the earliest return departure date. Required only for round-trip searches.

## `returnDateTo` (type: `string`):

Enter the latest return departure date. Required only for round-trip searches.

## `maxResults` (type: `integer`):

Limit how many fare records are saved after filtering and sorting. Keep this low for test runs.

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

Enter the fare currency code, for example <code>EUR</code>, <code>GBP</code>, or <code>USD</code>.

## `maxPrice` (type: `number`):

Save only fares at or below this price. Leave empty to save all available prices.

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

Choose how fare records are ordered before the maximum fares limit is applied.

## `includeUnavailable` (type: `boolean`):

For specific one-way route calendar searches, also save dates with no fare as records with <code>available: false</code> and <code>price: null</code>.

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

Number of adults used in generated Ryanair booking links.

## `teens` (type: `integer`):

Number of teens aged 12–15 used in generated Ryanair booking links.

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

Number of children aged 2–11 used in generated Ryanair booking links.

## `infants` (type: `integer`):

Number of infants under 2 used in generated Ryanair booking links.

## `market` (type: `string`):

Ryanair market used for pricing and localization, for example <code>en-gb</code>, <code>en-ie</code>, <code>es-es</code>, or <code>de-de</code>.

## `requestTimeoutSecs` (type: `integer`):

Timeout for each Ryanair API request in seconds.

## Actor input object example

```json
{
  "origins": [
    "DUB"
  ],
  "destinations": [
    "STN"
  ],
  "tripType": "oneWay",
  "maxResults": 250,
  "currency": "EUR",
  "sortBy": "priceAsc",
  "includeUnavailable": false,
  "adults": 1,
  "teens": 0,
  "children": 0,
  "infants": 0,
  "market": "en-gb",
  "requestTimeoutSecs": 30
}
```

# Actor output Schema

## `results` (type: `string`):

Link to the dataset of scraped records

# 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 = {
    "origins": [
        "DUB"
    ],
    "destinations": [
        "STN"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/ryan-air-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 = {
    "origins": ["DUB"],
    "destinations": ["STN"],
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/ryan-air-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "origins": [
    "DUB"
  ],
  "destinations": [
    "STN"
  ]
}' |
apify call epicscrapers/ryan-air-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=epicscrapers/ryan-air-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ryanair Flights Scraper [$0.5/1k 💙 ]",
        "description": "Scrape Ryanair flight fares, prices, routes, and cheapest destinations. Search one-way or round-trip flights by airport, date range, currency, and market, then export structured fare data with prices, flight numbers, availability, and booking links.*",
        "version": "0.1",
        "x-build-id": "K7bXLIBSjy59FPMfP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/epicscrapers~ryan-air-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-epicscrapers-ryan-air-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/epicscrapers~ryan-air-scraper/runs": {
            "post": {
                "operationId": "runs-sync-epicscrapers-ryan-air-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/epicscrapers~ryan-air-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-epicscrapers-ryan-air-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "origins"
                ],
                "properties": {
                    "origins": {
                        "title": "Origin airports",
                        "type": "array",
                        "description": "Add one or more origin airport IATA codes, for example <code>DUB</code>, <code>STN</code>, or <code>BCN</code>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "destinations": {
                        "title": "Destination airports",
                        "type": "array",
                        "description": "Add destination airport IATA codes for route searches. Leave empty to discover the cheapest available destinations from each origin.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "tripType": {
                        "title": "Trip type",
                        "enum": [
                            "oneWay",
                            "roundTrip"
                        ],
                        "type": "string",
                        "description": "Choose one-way for route calendars or Explore mode. Choose round-trip only when destinations and return dates are provided.",
                        "default": "oneWay"
                    },
                    "outboundDateFrom": {
                        "title": "Outbound from",
                        "type": "string",
                        "description": "Enter the earliest outbound departure date in <code>YYYY-MM-DD</code> format."
                    },
                    "outboundDateTo": {
                        "title": "Outbound to",
                        "type": "string",
                        "description": "Enter the latest outbound departure date in <code>YYYY-MM-DD</code> format."
                    },
                    "returnDateFrom": {
                        "title": "Return from",
                        "type": "string",
                        "description": "Enter the earliest return departure date. Required only for round-trip searches."
                    },
                    "returnDateTo": {
                        "title": "Return to",
                        "type": "string",
                        "description": "Enter the latest return departure date. Required only for round-trip searches."
                    },
                    "maxResults": {
                        "title": "Maximum fares",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Limit how many fare records are saved after filtering and sorting. Keep this low for test runs.",
                        "default": 250
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "Enter the fare currency code, for example <code>EUR</code>, <code>GBP</code>, or <code>USD</code>.",
                        "default": "EUR"
                    },
                    "maxPrice": {
                        "title": "Maximum fare price",
                        "type": "number",
                        "description": "Save only fares at or below this price. Leave empty to save all available prices."
                    },
                    "sortBy": {
                        "title": "Sort fares by",
                        "enum": [
                            "sourceOrder",
                            "priceAsc",
                            "departureAsc",
                            "durationAsc"
                        ],
                        "type": "string",
                        "description": "Choose how fare records are ordered before the maximum fares limit is applied.",
                        "default": "priceAsc"
                    },
                    "includeUnavailable": {
                        "title": "Save unavailable dates",
                        "type": "boolean",
                        "description": "For specific one-way route calendar searches, also save dates with no fare as records with <code>available: false</code> and <code>price: null</code>.",
                        "default": false
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of adults used in generated Ryanair booking links.",
                        "default": 1
                    },
                    "teens": {
                        "title": "Teens",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of teens aged 12–15 used in generated Ryanair booking links.",
                        "default": 0
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of children aged 2–11 used in generated Ryanair booking links.",
                        "default": 0
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of infants under 2 used in generated Ryanair booking links.",
                        "default": 0
                    },
                    "market": {
                        "title": "Market / locale",
                        "type": "string",
                        "description": "Ryanair market used for pricing and localization, for example <code>en-gb</code>, <code>en-ie</code>, <code>es-es</code>, or <code>de-de</code>.",
                        "default": "en-gb"
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout",
                        "minimum": 5,
                        "type": "integer",
                        "description": "Timeout for each Ryanair API request in seconds.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
