# Ryanair Scraper (`solidcode/ryanair-scraper`) Actor

\[💰 $0.90 / 1K] Scrape Ryanair fares directly — cheapest one-way and round-trip prices across flexible date windows, plus Explore mode for the lowest fare to every destination from your origin. Get flight numbers, times, duration, airports, and ready-to-book links in clean JSON or CSV.

- **URL**: https://apify.com/solidcode/ryanair-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (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 $0.90 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Ryanair Scraper

Pull the cheapest Ryanair fares straight from the source — one-way and round-trip prices across flexible date windows, plus an Explore mode that finds the lowest fare to every destination Ryanair flies to from your origin. Every fare arrives with flight numbers, schedules, airport details, and a ready-to-book link with passengers already filled in. Built for travel deal sites, fare-monitoring analysts, and travel agencies who need up-to-date Ryanair pricing without manually checking the site route by route.

### Why This Scraper?

- **Explore mode — cheapest fare to everywhere in one run** — leave the destination blank and get the single lowest fare to every airport Ryanair serves from your origin (200+ destinations from a major hub) in one pass.
- **One-way and round-trip in the same actor** — round-trip results pair the cheapest outbound and return legs into a combined total price, with separate leg prices, flight numbers, and schedules on the same row.
- **Flexible multi-day date windows** — search a whole outbound (and return) range at once and get the cheapest fare found on each available day, not just one quoted date.
- **Search multiple airports at once** — comma-separate IATA codes (e.g. `DUB, STN, BCN`) to fan a single run across every origin-and-destination pairing.
- **16 currencies and 16 market locales** — quote fares in EUR, GBP, USD, PLN and 12 more, each mapped to the correct country booking path.
- **Ready-to-book deep links with passengers pre-filled** — every row carries a Ryanair booking link with your adults, teens, children, and infants counts already set, sending a fare straight to checkout.
- **Maximum-price cap** — set a price ceiling and only fares at or under it come back, so you never collect results you'll throw away.
- **Direct flights with derived duration** — Ryanair flies point-to-point, so every result is a non-stop flight, each with its flight number and a computed flight duration in minutes.
- **Four sort orders per route** — order results by cheapest, earliest departure, shortest duration, or default date order.

### Use Cases

**Travel Deal Sites & Fare Aggregators**
- Populate a "cheapest flights from your city" page for any Ryanair origin
- Surface budget fares that mainstream flight aggregators often miss
- Build weekend-getaway finders that rank destinations by lowest fare
- Refresh a deals feed with the cheapest fare per route and day

**Price Monitoring & Alerts**
- Track a specific route over a date window and alert when the fare drops below a threshold
- Watch round-trip totals for a planned holiday and act when they bottom out
- Log daily fare history to spot seasonal pricing patterns
- Compare pricing across overlapping Ryanair routes

**Travel Agencies & OTAs**
- Hand clients ready-to-book links with passenger counts already filled in
- Compare one-way versus round-trip totals for group bookings
- Quote fares in a client's local currency across 16 options

**Market Research**
- Map the cheapest route network from any Ryanair hub with Explore mode
- Analyze how fares move across a flexible date window
- Compare fares between multiple origin airports serving the same city

**Personal Trip Planning**
- Find the cheapest day to fly within a flexible window
- Discover where you can fly cheapest from your home airport this month
- Pre-fill a whole family's passenger counts into the booking link

### Getting Started

#### Simple One-Way Search

Just an origin and a destination — dates default to roughly the week ahead:

```json
{
    "origin": "DUB",
    "destination": "STN"
}
````

#### Round-Trip With a Return Window

Pair the cheapest outbound and return across two date ranges, for two adults:

```json
{
    "origin": "DUB",
    "destination": "BCN",
    "tripType": "roundTrip",
    "departDateFrom": "2026-08-01",
    "departDateTo": "2026-08-07",
    "returnDateFrom": "2026-08-10",
    "returnDateTo": "2026-08-16",
    "adults": 2
}
```

#### Explore Mode With a Budget

Leave the destination empty to find the cheapest fare to every destination, in GBP, capped at £40, cheapest first:

```json
{
    "origin": "STN",
    "destination": "",
    "departDateFrom": "2026-09-01",
    "departDateTo": "2026-09-30",
    "currency": "GBP",
    "maxPrice": 40,
    "sortBy": "cheapest"
}
```

#### Full-Featured Multi-Origin Example

```json
{
    "origin": "DUB, STN, BCN",
    "destination": "FCO, CIA",
    "tripType": "oneWay",
    "departDateFrom": "2026-10-01",
    "departDateTo": "2026-10-14",
    "currency": "EUR",
    "market": "en-ie",
    "sortBy": "cheapest",
    "maxResults": 500
}
```

### Input Reference

#### Route

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `origin` | string | `"DUB"` | Departure airport IATA code, e.g. `DUB`. Add several separated by commas to search from multiple origins. |
| `destination` | string | `"STN"` | Arrival airport IATA code, e.g. `STN`. Add several separated by commas, or leave empty for Explore mode (cheapest fare to every destination). |
| `tripType` | select | `One-way` | Search one-way fares, or round-trip fares that pair the cheapest outbound and return flights. |

#### Dates

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `departDateFrom` | string | today | Earliest outbound departure date (`YYYY-MM-DD`). |
| `departDateTo` | string | ~+7 days | Latest outbound departure date (`YYYY-MM-DD`). |
| `returnDateFrom` | string | — | Earliest return departure date. Round-trip only. |
| `returnDateTo` | string | — | Latest return departure date. Round-trip only. |

#### Passengers

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `adults` | integer | `1` | Adult passengers (age 16+). Affects the quoted price and the booking link. |
| `teens` | integer | `0` | Teen passengers (age 12-15). Pre-filled into the booking link. |
| `children` | integer | `0` | Child passengers (age 2-11). Pre-filled into the booking link. |
| `infants` | integer | `0` | Infant passengers (under 2). Pre-filled into the booking link. |

#### Fares & Sorting

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `currency` | select | `Euro (EUR)` | Currency for the fare prices. 16 options including EUR, GBP, USD, PLN, SEK, and CHF. |
| `market` | select | `English (UK)` | Locale for fare data and the booking link's language and country path. 16 options. |
| `maxPrice` | integer | — | Only return fares at or below this price, in the selected currency. Leave empty for no limit. |
| `sortBy` | select | `Default (date order)` | Order results by default date order, cheapest first, earliest departure, or shortest duration. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `1000` | Stop after collecting this many fare rows across all routes. Set to 0 for no limit. |

### Output

Every fare is one flat row. One-way and Explore rows share the same shape; round-trip rows add outbound and return leg fields plus a combined total price. All rows share a common set of airport, carrier, and booking fields.

#### One-Way & Explore Fare

```json
{
    "tripType": "oneWay",
    "carrierCode": "FR",
    "carrierName": "Ryanair",
    "currency": "EUR",
    "price": 19.99,
    "flightNumber": "FR292",
    "departureDate": "2026-08-03T06:25:00",
    "arrivalDate": "2026-08-03T07:55:00",
    "durationMinutes": 90,
    "stops": 0,
    "fromCode": "DUB",
    "fromName": "Dublin",
    "fromCity": "Dublin",
    "fromCountry": "Ireland",
    "toCode": "STN",
    "toName": "London Stansted",
    "toCity": "London",
    "toCountry": "United Kingdom",
    "bookingUrl": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-08-03&dateIn=&isReturn=false&originIata=DUB&destinationIata=STN"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Cheapest fare price for that day |
| `flightNumber` | string | Ryanair flight number, e.g. `FR292` |
| `departureDate` | string | Local departure date and time |
| `arrivalDate` | string | Local arrival date and time |
| `durationMinutes` | integer | Flight duration in minutes |

#### Round-Trip Fare

```json
{
    "tripType": "roundTrip",
    "carrierCode": "FR",
    "carrierName": "Ryanair",
    "currency": "EUR",
    "totalPrice": 47.98,
    "outboundPrice": 19.99,
    "returnPrice": 27.99,
    "outboundFlightNumber": "FR7284",
    "returnFlightNumber": "FR7285",
    "outboundDeparture": "2026-08-03T09:40:00",
    "outboundArrival": "2026-08-03T13:05:00",
    "returnDeparture": "2026-08-10T14:20:00",
    "returnArrival": "2026-08-10T15:55:00",
    "outboundDurationMinutes": 145,
    "returnDurationMinutes": 95,
    "tripDurationDays": 7,
    "stops": 0,
    "fromCode": "DUB",
    "toCode": "BCN",
    "bookingUrl": "https://www.ryanair.com/ie/en/trip/flights/select?adults=1&dateOut=2026-08-03&dateIn=2026-08-10&isReturn=true&originIata=DUB&destinationIata=BCN"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `totalPrice` | number | Combined outbound and return price |
| `outboundPrice` / `returnPrice` | number | Price of each leg |
| `outboundFlightNumber` / `returnFlightNumber` | string | Flight number of each leg |
| `outboundDeparture` / `outboundArrival` | string | Outbound leg schedule (local) |
| `returnDeparture` / `returnArrival` | string | Return leg schedule (local) |
| `outboundDurationMinutes` / `returnDurationMinutes` | integer | Duration of each leg in minutes |
| `tripDurationDays` | integer | Days between outbound and return |

#### Shared Fields

Present on every row, one-way and round-trip alike.

| Field | Type | Description |
|-------|------|-------------|
| `tripType` | string | `oneWay` or `roundTrip` |
| `carrierCode` | string | Airline code taken from the flight number — `FR` for Ryanair, or a Ryanair Group code such as `RK` (Ryanair UK) |
| `carrierName` | string | Always `Ryanair` |
| `currency` | string | Currency of the prices on the row |
| `fromCode` / `fromName` / `fromCity` / `fromCountry` | string | Origin airport code, name, city, and country |
| `toCode` / `toName` / `toCity` / `toCountry` | string | Destination airport code, name, city, and country |
| `stops` | integer | Always `0` — Ryanair flies direct |
| `bookingUrl` | string | Ready-to-book Ryanair link with passenger counts pre-filled |

### Tips for Best Results

- **Leave the destination empty for Explore mode** — one origin, blank destination, and you get the single cheapest fare to every airport Ryanair serves from there in one run. The fastest way to answer "where can I fly cheapest?"
- **Widen the date window to surface the cheapest day** — results include the lowest fare on each available day in your range, so a two-week outbound window reveals the cheapest date to fly, not just one price.
- **Set the currency explicitly** — it defaults to EUR. Choose GBP, USD, or any of the 16 options up front, otherwise every fare comes back in euros.
- **Only the adults count changes the quoted price** — teens, children, and infants are pre-filled into the booking link but don't change the fare shown, because Ryanair prices those passenger types at checkout.
- **Pair `sortBy: cheapest` with `maxPrice` for deal-hunting** — you get only fares under your budget, cheapest first, on every route.
- **Combine multiple origins in one run** — `DUB, STN, BCN` searches all three departure airports at once; ideal for "cheapest flight to Rome from any London-area airport."
- **Keep `maxResults` sensible on wide Explore runs** — a single origin over a 30-day window can produce thousands of rows; the cap (default 1,000) stops the run cleanly once reached.

### Pricing

**From $0.90 per 1,000 results** — flat pay-per-result pricing that undercuts comparable Ryanair fare actors. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.11 | $0.10 | $0.10 | $0.09 |
| 1,000 | $1.05 | $1.00 | $0.95 | $0.90 |
| 10,000 | $10.50 | $10.00 | $9.50 | $9.00 |
| 100,000 | $105.00 | $100.00 | $95.00 | $90.00 |

A "result" is any fare row in the output dataset. **No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available Ryanair fare data for legitimate travel research, price comparison, and trip planning. You are responsible for complying with applicable laws and Ryanair's Terms of Service. Do not use collected data for spam, misrepresentation, or any unlawful purpose. Prices are indicative and change frequently — always confirm the final fare on Ryanair's own booking page before purchase.

# Actor input Schema

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

Departure airport IATA code, e.g. 'DUB' for Dublin. Add several separated by commas (e.g. 'DUB, STN, BCN') to search from multiple origins.

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

Arrival airport IATA code, e.g. 'STN' for London Stansted. Add several separated by commas. Leave empty to find the cheapest fare to every destination Ryanair flies to from your origin.

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

Search one-way fares, or round-trip fares that pair the cheapest outbound and return flights.

## `departDateFrom` (type: `string`):

Earliest outbound departure date (YYYY-MM-DD). Leave empty to start from today.

## `departDateTo` (type: `string`):

Latest outbound departure date (YYYY-MM-DD). Leave empty to search roughly a week from the start date.

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

Earliest return departure date (YYYY-MM-DD). Only used for round-trip searches.

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

Latest return departure date (YYYY-MM-DD). Only used for round-trip searches.

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

Number of adult passengers (age 16+). Affects the quoted price and the booking link.

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

Number of teen passengers (age 12-15). Pre-filled into the booking link.

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

Number of child passengers (age 2-11). Pre-filled into the booking link.

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

Number of infant passengers (under 2). Pre-filled into the booking link.

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

Currency for the fare prices.

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

Locale used for fare data and the booking link, e.g. 'en-gb'. This mainly affects the language and country path of the booking URL.

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

Only return fares at or below this price (in the selected currency). Leave empty for no price limit.

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

How to order the results within each route.

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

Stop after collecting this many fare rows across all routes. The final count can slightly exceed this number: routes that are already running when the limit is reached are always finished in full, so results are never cut off part-way through a route. Set to 0 for no limit.

## Actor input object example

```json
{
  "origin": "DUB",
  "destination": "STN",
  "tripType": "oneWay",
  "adults": 1,
  "currency": "EUR",
  "market": "en-gb",
  "sortBy": "sourceOrder",
  "maxResults": 1000
}
```

# Actor output Schema

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

Table of fares with route, date, price, flight number, and booking link.

# 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": "DUB",
    "destination": "STN",
    "tripType": "oneWay",
    "adults": 1,
    "teens": 0,
    "children": 0,
    "infants": 0,
    "currency": "EUR",
    "market": "en-gb",
    "sortBy": "sourceOrder",
    "maxResults": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/ryanair-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": "DUB",
    "destination": "STN",
    "tripType": "oneWay",
    "adults": 1,
    "teens": 0,
    "children": 0,
    "infants": 0,
    "currency": "EUR",
    "market": "en-gb",
    "sortBy": "sourceOrder",
    "maxResults": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/ryanair-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 '{
  "origin": "DUB",
  "destination": "STN",
  "tripType": "oneWay",
  "adults": 1,
  "teens": 0,
  "children": 0,
  "infants": 0,
  "currency": "EUR",
  "market": "en-gb",
  "sortBy": "sourceOrder",
  "maxResults": 1000
}' |
apify call solidcode/ryanair-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ryanair Scraper",
        "description": "[💰 $0.90 / 1K] Scrape Ryanair fares directly — cheapest one-way and round-trip prices across flexible date windows, plus Explore mode for the lowest fare to every destination from your origin. Get flight numbers, times, duration, airports, and ready-to-book links in clean JSON or CSV.",
        "version": "1.0",
        "x-build-id": "5WaMTRqNfgvKtsaPS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~ryanair-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-ryanair-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/solidcode~ryanair-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-ryanair-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/solidcode~ryanair-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-ryanair-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",
                "properties": {
                    "origin": {
                        "title": "Origin airport(s)",
                        "type": "string",
                        "description": "Departure airport IATA code, e.g. 'DUB' for Dublin. Add several separated by commas (e.g. 'DUB, STN, BCN') to search from multiple origins."
                    },
                    "destination": {
                        "title": "Destination airport(s)",
                        "type": "string",
                        "description": "Arrival airport IATA code, e.g. 'STN' for London Stansted. Add several separated by commas. Leave empty to find the cheapest fare to every destination Ryanair flies to from your origin."
                    },
                    "tripType": {
                        "title": "Trip type",
                        "enum": [
                            "oneWay",
                            "roundTrip"
                        ],
                        "type": "string",
                        "description": "Search one-way fares, or round-trip fares that pair the cheapest outbound and return flights."
                    },
                    "departDateFrom": {
                        "title": "Outbound date from",
                        "type": "string",
                        "description": "Earliest outbound departure date (YYYY-MM-DD). Leave empty to start from today."
                    },
                    "departDateTo": {
                        "title": "Outbound date to",
                        "type": "string",
                        "description": "Latest outbound departure date (YYYY-MM-DD). Leave empty to search roughly a week from the start date."
                    },
                    "returnDateFrom": {
                        "title": "Return date from",
                        "type": "string",
                        "description": "Earliest return departure date (YYYY-MM-DD). Only used for round-trip searches."
                    },
                    "returnDateTo": {
                        "title": "Return date to",
                        "type": "string",
                        "description": "Latest return departure date (YYYY-MM-DD). Only used for round-trip searches."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Number of adult passengers (age 16+). Affects the quoted price and the booking link."
                    },
                    "teens": {
                        "title": "Teens",
                        "minimum": 0,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Number of teen passengers (age 12-15). Pre-filled into the booking link."
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Number of child passengers (age 2-11). Pre-filled into the booking link."
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Number of infant passengers (under 2). Pre-filled into the booking link."
                    },
                    "currency": {
                        "title": "Currency",
                        "enum": [
                            "EUR",
                            "GBP",
                            "USD",
                            "PLN",
                            "SEK",
                            "NOK",
                            "DKK",
                            "CHF",
                            "HUF",
                            "CZK",
                            "RON",
                            "BGN",
                            "MAD",
                            "ILS",
                            "CAD",
                            "AUD"
                        ],
                        "type": "string",
                        "description": "Currency for the fare prices."
                    },
                    "market": {
                        "title": "Market (locale)",
                        "enum": [
                            "en-gb",
                            "en-ie",
                            "de-de",
                            "fr-fr",
                            "es-es",
                            "it-it",
                            "pt-pt",
                            "nl-nl",
                            "pl-pl",
                            "sv-se",
                            "nb-no",
                            "da-dk",
                            "cs-cz",
                            "ro-ro",
                            "hu-hu",
                            "el-gr"
                        ],
                        "type": "string",
                        "description": "Locale used for fare data and the booking link, e.g. 'en-gb'. This mainly affects the language and country path of the booking URL."
                    },
                    "maxPrice": {
                        "title": "Maximum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return fares at or below this price (in the selected currency). Leave empty for no price limit."
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "sourceOrder",
                            "cheapest",
                            "earliestDeparture",
                            "shortestDuration"
                        ],
                        "type": "string",
                        "description": "How to order the results within each route."
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after collecting this many fare rows across all routes. The final count can slightly exceed this number: routes that are already running when the limit is reached are always finished in full, so results are never cut off part-way through a route. Set to 0 for no limit."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
