# Ryanair Flight Scraper (`parsebird/ryanair-flight-scraper`) Actor

Scrape Ryanair flights and fares: cheapest one-way and round-trip prices, every scheduled flight per day with times and flight numbers, and cheapest fares to every destination in Explore mode. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/ryanair-flight-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 fare 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Flight Scraper

Ryanair Flight Scraper extracts **flights, fares, and schedules from [Ryanair](https://www.ryanair.com)** without the booking API. Give it an origin and destination for the **cheapest one-way or round-trip prices**, turn on **All flights** for every scheduled departure per day with times and flight numbers, or leave the destination empty to **Explore the cheapest fare to every Ryanair destination** from your airport.

<table><tr>
<td style="border-left:4px solid #073590;padding:12px 16px;font-weight:600">
Turn any Ryanair route and date window into a structured fare table — price, currency, flight number, carrier, from/to airport name, city and country, departure and arrival times, duration, and a ready-to-book link — across one-way, round-trip, all-flights, and explore modes, with multi-route search and any currency.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Actor: parsebird/ryanair-flight-scraper — scrapes Ryanair fares and flight schedules. Input: {"origin": "DUB", "destination": "STN", "tripType": "oneWay", "allFlights": false, "departDateFrom": "2026-10-01", "departDateTo": "2026-10-14", "returnDateFrom": "", "returnDateTo": "", "currency": "EUR", "market": "en-gb", "sortBy": "sourceOrder", "maxPrice": null, "includeUnavailable": false, "adults": 1, "teens": 0, "children": 0, "infants": 0, "maxResults": 1000}. origin/destination are IATA codes, comma-separate for multiple routes (DUB,STN). Leave destination empty for Explore mode (cheapest fare to every destination). tripType roundTrip needs destination + returnDateFrom/To. allFlights=true returns every scheduled flight per day (one-way fixed routes only). Date window max 62 days per route. Run via ApifyClient("YOUR_TOKEN").actor("parsebird/ryanair-flight-scraper").call(run_input=input). Output per row: tripType, carrierCode, carrierName, price, currency, flightNumber, fromCode/fromName/fromCity/fromCountry, toCode/toName/toCity/toCountry, departureDate, arrivalDate, durationMinutes, stops, bookingUrl; allFlights rows add isDayCheapest, dayCheapestPrice, dayCheapestFlightNumber; roundTrip rows use totalPrice and outbound-*/return-* fields. Get an API token at https://console.apify.com/account#/integrations. Full API spec: https://apify.com/parsebird/ryanair-flight-scraper/api
```

### What does Ryanair Flight Scraper do?

Ryanair Flight Scraper is a **Ryanair scraper and fare tracker** built on Ryanair's public fare-finder and timetable data. It reads the same open fare feed the ryanair.com website uses, so you get real prices and schedules without logging in or hitting the booking API.

✈️ **Four search modes in one actor**

| Input | What you get |
|-------|--------------|
| `origin` + `destination` + dates | Cheapest one-way fare per day for that route across the window |
| `origin` + `destination` + dates, `allFlights: true` | Every scheduled flight per day (times + flight numbers), the day's cheapest fare attached |
| `origin` + `destination` + return dates, `tripType: roundTrip` | Cheapest round-trip combinations with total price |
| `origin` only (no `destination`) | **Explore** — cheapest fare to every Ryanair destination |

💶 **Any currency** — EUR, GBP, USD, PLN, SEK, and more, converted by Ryanair's own pricing engine.

🗺️ **Multi-route runs** — comma-separate `origin` and `destination` (`DUB,STN` → `BCN,CIA`) to scan every origin–destination pair in a single run.

🔗 **Ready-to-book links** — every row carries a `bookingUrl` that opens the Ryanair selection page with the route, date, and passenger mix pre-filled.

🎯 **Filters and sorting** — cap fares with `maxPrice`, show gap days with `includeUnavailable`, and order rows by source order, cheapest, earliest departure, or shortest duration.

📅 **Date windows up to 62 days** per route per run.

#### Why scrape Ryanair?

- Track **Ryanair fares** for a route over time and get alerted when a price drops
- Build a **cheap-flights dashboard** for every destination from a home airport (Explore mode)
- Compare the **full daily schedule** — times and flight numbers — for route planning
- Feed a **travel deal site**, price-comparison tool, or itinerary planner with structured fares
- Pull round-trip price matrices across flexible outbound and return windows

### What data can you extract with Ryanair Flight Scraper?

| Field | Type | Description |
|-------|------|-------------|
| tripType | string | `oneWay` or `roundTrip` |
| carrierCode / carrierName | string | Operating carrier (`FR` Ryanair, `RK` Ryanair UK, …) |
| price | number | null | Fare in the selected currency (one-way / explore rows) |
| totalPrice | number | null | Outbound + inbound fare (round-trip rows) |
| currency | string | ISO currency code of the fare |
| flightNumber | string | Ryanair flight number, e.g. `FR292` |
| fromCode / fromName / fromCity / fromCountry | string | Origin airport IATA code, name, city, country |
| toCode / toName / toCity / toCountry | string | Destination airport IATA code, name, city, country |
| departureDate / arrivalDate | string | Local departure and arrival timestamps (`YYYY-MM-DDTHH:MM:SS`) |
| durationMinutes | number | null | Flight duration in minutes, timezone-corrected |
| stops | number | Always `0` — Ryanair fare-finder routes are direct |
| bookingUrl | string | Ryanair selection-page link with route, date, and passengers pre-filled |
| isDayCheapest | boolean | `allFlights` rows: is this the day's cheapest flight |
| dayCheapestPrice | number | null | `allFlights` rows: the day's lowest fare |
| dayCheapestFlightNumber | string | null | `allFlights` rows: flight number carrying the day's lowest fare |
| outbound-price / outbound-flight-number / outbound-departure / outbound-arrival / outbound-duration | mixed | Round-trip outbound leg |
| return-price / return-flight-number / return-departure / return-arrival / return-duration | mixed | Round-trip inbound leg |
| scrapedAt | string | ISO 8601 timestamp of the run |

### How to use Ryanair Flight Scraper

1. Open [Ryanair Flight Scraper](https://apify.com/parsebird/ryanair-flight-scraper) and click **Try for free**.
2. Enter an **Origin** IATA code (e.g. `DUB`). Add a **Destination** (`STN`), or leave it empty for **Explore mode**.
3. Set **Outbound date from / to** (`YYYY-MM-DD`). Up to 62 days per route.
4. Pick a **Trip type**: `One way`, or `Round trip` with a **Return date from / to** window.
5. Turn on **All flights** to list every scheduled departure per day instead of just the cheapest.
6. Choose **Currency** and **Market**, optionally set a **Max price** and a **Sort** order.
7. Click **Start**, then export the dataset as **JSON, CSV, Excel, or HTML**, or pull it via API.

#### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| origin | string | **Yes** | `DUB` | Origin airport IATA code(s), comma-separated for multiple routes |
| destination | string | No | `STN` | Destination IATA code(s). Empty = Explore mode |
| tripType | string | No | `oneWay` | `oneWay` or `roundTrip` |
| allFlights | boolean | No | `false` | Every scheduled flight per day (one-way fixed routes only) |
| departDateFrom | string | No | today | First outbound date, `YYYY-MM-DD` |
| departDateTo | string | No | +7 days | Last outbound date, `YYYY-MM-DD` (max 62-day window) |
| returnDateFrom / returnDateTo | string | Round trip | — | Inbound date window |
| currency | string | No | `EUR` | Fare currency (EUR, GBP, USD, PLN, …) |
| market | string | No | `en-gb` | Ryanair market for the booking-link locale |
| sortBy | string | No | `sourceOrder` | `sourceOrder`, `cheapest`, `earliestDeparture`, `shortestDuration` |
| maxPrice | integer | No | — | Drop fares above this price |
| includeUnavailable | boolean | No | `false` | Emit a row for outbound dates with no available fare |
| adults / teens / children / infants | integer | No | 1 / 0 / 0 / 0 | Passenger mix for the booking link |
| maxResults | integer | No | 1000 | Hard cap on total rows |
| proxyConfiguration | object | No | Apify Proxy | Datacenter proxy is sufficient |

### Output example

**One-way / Explore row**

```json
{
  "tripType": "oneWay",
  "carrierCode": "FR",
  "carrierName": "Ryanair",
  "price": 14.99,
  "currency": "EUR",
  "flightNumber": "FR292",
  "fromCode": "DUB", "fromName": "Dublin", "fromCity": "Dublin", "fromCountry": "Ireland",
  "toCode": "STN", "toName": "London Stansted", "toCity": "London", "toCountry": "United Kingdom",
  "departureDate": "2026-10-10T22:00:00",
  "arrivalDate": "2026-10-10T23:20:00",
  "durationMinutes": 80,
  "stops": 0,
  "bookingUrl": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-10-10&dateIn=&isConnectedFlight=false&isReturn=false&discount=0&originIata=DUB&destinationIata=STN",
  "scrapedAt": "2026-09-09T12:00:00+00:00"
}
```

**All flights row** (`allFlights: true`)

```json
{
  "tripType": "oneWay",
  "carrierCode": "FR",
  "carrierName": "Ryanair",
  "flightNumber": "FR30",
  "price": null,
  "currency": "EUR",
  "isDayCheapest": false,
  "dayCheapestPrice": 14.99,
  "dayCheapestFlightNumber": "FR292",
  "fromCode": "DUB", "toCode": "STN",
  "departureDate": "2026-10-06T06:30:00",
  "arrivalDate": "2026-10-06T07:50:00",
  "durationMinutes": 80,
  "stops": 0,
  "bookingUrl": "https://www.ryanair.com/gb/en/trip/flights/select?..."
}
```

**Round-trip row** (`tripType: roundTrip`)

```json
{
  "tripType": "roundTrip",
  "carrierCode": "FR",
  "totalPrice": 29.98,
  "currency": "EUR",
  "fromCode": "DUB", "toCode": "STN",
  "outbound-price": 14.99, "outbound-flight-number": "FR292", "outbound-departure": "2026-10-06T22:00:00",
  "return-price": 14.99, "return-flight-number": "FR289", "return-departure": "2026-10-13T16:20:00",
  "bookingUrl": "https://www.ryanair.com/gb/en/trip/flights/select?...&isReturn=true"
}
```

Download results in **JSON, CSV, Excel, or HTML** from the Apify Console or via the API.

### Use cases

- 📉 **Fare tracking** — schedule the actor to watch a route and export the fare history for alerting
- 🏷️ **Cheap-flights site** — run Explore mode daily from a set of home airports and publish the lowest fares
- 🗺️ **Trip planning** — pull the full daily schedule (times + flight numbers) for a route before booking
- 🔁 **Round-trip optimizer** — get the price matrix across flexible outbound and return windows
- 🤖 **Travel bots and itinerary tools** — feed structured Ryanair fares into a chatbot or planner
- 📊 **Airline and market research** — compare Ryanair pricing and frequency across routes and seasons

### How it works

1. **Routes** — `origin` and `destination` are split into IATA codes and expanded into every origin–destination pair; with no destination, each origin runs in Explore mode.
2. **Airports** — Ryanair's public airport directory is loaded once for names, cities, countries, and timezones.
3. **One-way / Explore** — the fare-finder feed is queried per day (or once across the window for Explore) for the cheapest fare, with flight number and times.
4. **Round trip** — cheapest outbound and inbound fares are collected per day and paired into every valid combination where the return is on or after the outbound.
5. **All flights** — the route timetable supplies every scheduled departure per day; the day's cheapest fare is matched by flight number and attached to each row.
6. **Filter, sort, cap** — `maxPrice` and `sortBy` are applied, then rows are truncated to `maxResults` and pushed to the dataset.

The actor uses lightweight `httpx` requests and stays under 512 MB — no browser required.

### How much does it cost to scrape Ryanair?

Ryanair Flight Scraper uses [pay-per-event pricing](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event). Platform compute is included — you pay per row.

| Plan | Price per 1,000 fare rows | Price per 1,000 scheduled-flight rows |
|------|---------------------------|----------------------------------------|
| Free | **$0.99** | **$0.99** |
| Bronze | **$0.89** | **$0.89** |
| Silver | **$0.79** | **$0.79** |
| Gold | **$0.69** | **$0.69** |

- A **fare row** is any one-way, round-trip, or Explore fare, plus the day's cheapest flight in All flights mode.
- A **scheduled-flight row** is an extra flight in All flights mode (times and number, no fare of its own) or a row for a date with no available fare.

**Example:** a one-way run over a 30-day window for one route returns about 30 fare rows and costs roughly $0.03 on the Free plan. An All flights run over the same window returns roughly 240 rows and costs about $0.24.

You can run Ryanair Flight Scraper with the [free monthly usage credits](https://apify.com/pricing) on every Apify plan.

### Integrations and API access

Ryanair Flight Scraper works with the full [Apify platform](https://docs.apify.com/platform):

- **API access** — run it and fetch results via the [REST API](https://docs.apify.com/api/v2) or the Python and JavaScript clients
- **Scheduling** — set up recurring runs with the [Apify Scheduler](https://docs.apify.com/platform/schedules) to track fares over time
- **Webhooks** — trigger downstream work when a run finishes
- **Integrations** — push data to [Google Sheets](https://apify.com/apify/google-sheets), [Slack](https://docs.apify.com/platform/integrations/slack), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), Airtable, and more

#### Python example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "origin": "DUB,STN",
    "destination": "BCN,CIA",
    "tripType": "oneWay",
    "departDateFrom": "2026-10-01",
    "departDateTo": "2026-10-31",
    "currency": "EUR",
    "sortBy": "cheapest",
    "maxResults": 500,
}

run = client.actor("parsebird/ryanair-flight-scraper").call(run_input=run_input)

for fare in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(fare["departureDate"], fare["fromCode"], "->", fare["toCode"], fare.get("price"), fare["currency"])
```

#### JavaScript example

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const input = {
    origin: 'STN',
    destination: '',
    departDateFrom: '2026-11-01',
    departDateTo: '2026-11-20',
    currency: 'GBP',
    sortBy: 'cheapest',
    maxResults: 50,
};

const run = await client.actor('parsebird/ryanair-flight-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((f) => console.log(`${f.toCity}\t${f.price} ${f.currency}\t${f.departureDate}`));
```

### Pricing

| Event | Price per event (Free) | Price per 1,000 |
|-------|------------------------|-----------------|
| fare-result | $0.00099 | **$0.99** |
| scheduled-flight | $0.00099 | **$0.99** |

Bronze, Silver, and Gold plans pay less — see the cost section above.

### FAQ

**Where does the data come from?**
Ryanair's public fare-finder feed and route timetables — the same open data the ryanair.com website reads. No login, no booking API, no captcha.

**How current are the fares?**
They are live at the moment of the run. Schedule the actor to capture fares over time and build a price history.

**Why is `price` null on some All flights rows?**
Ryanair's open fare data does not price each individual flight — only the cheapest fare per day is published. In All flights mode every row still carries `dayCheapestPrice` and `dayCheapestFlightNumber`, and the matching flight is marked `isDayCheapest: true` with its `price` set.

**Can I search more than one route at once?**
Yes. Comma-separate `origin` and `destination` (for example `DUB,STN` and `BCN,CIA`) and the actor scans every pair.

**What is Explore mode?**
Leave `destination` empty and the actor returns the cheapest fare to every Ryanair destination from each origin over the date window — ideal for "where can I go cheaply" dashboards.

**How long a date range can I search?**
Up to 62 days per route per run. Longer searches should be split across multiple runs or scheduled.

**Does it return connecting flights or other airlines?**
No. Ryanair sells direct point-to-point flights, so `stops` is always `0` and the carrier is always Ryanair or a Ryanair Group airline (`FR`, `RK`).

**Is the booking link ready to use?**
Yes. `bookingUrl` opens the Ryanair selection page with the route, date, trip type, and passenger mix pre-filled.

**Can I schedule recurring runs?**
Yes — use [Apify scheduling](https://docs.apify.com/platform/schedules) and webhooks to keep a fare feed fresh.

**Found a bug or need a field added?**
Open the **Issues** tab on the Actor page.

### Is it legal to scrape Ryanair?

Ryanair Flight Scraper collects publicly available information: published fares and flight schedules that Ryanair serves to anyone browsing ryanair.com. It does not log in, place bookings, or access personal data.

Scraping public data is generally legal, as reaffirmed by the [US Ninth Circuit in hiQ Labs v. LinkedIn](https://www.eff.org/deeplinks/2022/04/scraping-public-websites-still-isnt-crime-court-reaffirms). Make sure your use complies with applicable law and with Ryanair's Terms of Use. This actor is independent and not affiliated with or endorsed by Ryanair. See Apify's guide to [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Related actors

- [Kayak Car Rental Scraper](https://apify.com/parsebird/kayak-car-rental-scraper) — car hire prices, suppliers, and vehicle classes from Kayak
- [Airbnb Scraper & API](https://apify.com/parsebird/airbnb-scraper) — Airbnb listings, prices, availability, and host data
- [Airbnb Reviews Scraper](https://apify.com/parsebird/airbnb-reviews-scraper) — full review histories with sentiment and translation
- [GetYourGuide Scraper](https://apify.com/parsebird/getyourguide-scraper) — tours, activities, and experiences with prices and availability

# Actor input Schema

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

Origin airport IATA code(s), comma-separated for multiple routes (e.g. DUB or DUB,STN,BCN).

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

Destination airport IATA code(s), comma-separated. Leave empty for Explore mode (cheapest fare to every destination from each origin).

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

oneWay returns outbound fares only. roundTrip pairs the cheapest outbound and inbound fares and requires a destination and a return date window.

## `allFlights` (type: `boolean`):

One-way fixed routes only. Return every scheduled flight for each day in the window with departure times and flight numbers. Ryanair does not price each flight individually, so every row carries the day's cheapest fare in dayCheapestPrice.

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

First outbound date, YYYY-MM-DD. Defaults to today. Up to 62 days per route per run.

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

Last outbound date, YYYY-MM-DD. Defaults to 7 days after the outbound start date.

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

First inbound date, YYYY-MM-DD. Round trip only.

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

Last inbound date, YYYY-MM-DD. Round trip only.

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

Fare currency.

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

Ryanair site market used for the booking link locale.

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

Order of the rows in the dataset.

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

Drop fares above this price (in the selected currency). Leave empty for no ceiling.

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

Emit a row for outbound dates that have no available fare, so gaps in the window are visible.

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

Adult passengers for the booking link.

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

Teen passengers (12-15) for the booking link.

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

Child passengers (2-11) for the booking link.

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

Infant passengers (under 2) for the booking link.

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

Hard cap on the total number of rows saved to the dataset.

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

Apify Proxy routing. Datacenter proxy is enough for Ryanair's fare APIs.

## Actor input object example

```json
{
  "origin": "DUB",
  "destination": "STN",
  "tripType": "oneWay",
  "allFlights": false,
  "currency": "EUR",
  "market": "en-gb",
  "sortBy": "sourceOrder",
  "includeUnavailable": false,
  "adults": 1,
  "teens": 0,
  "children": 0,
  "infants": 0,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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",
    "departDateFrom": "",
    "departDateTo": "",
    "returnDateFrom": "",
    "returnDateTo": "",
    "adults": 1,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/ryanair-flight-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",
    "departDateFrom": "",
    "departDateTo": "",
    "returnDateFrom": "",
    "returnDateTo": "",
    "adults": 1,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/ryanair-flight-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "origin": "DUB",
  "destination": "STN",
  "departDateFrom": "",
  "departDateTo": "",
  "returnDateFrom": "",
  "returnDateTo": "",
  "adults": 1,
  "maxResults": 100
}' |
apify call parsebird/ryanair-flight-scraper --silent --output-dataset

```

## MCP server setup

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

```

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

## OpenAPI specification

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