# Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts (`euroscrape/ryanair-low-fares`) Actor

Unofficial Ryanair API: Ryanair prices and Ryanair flights — the fare calendar of any route (cheapest price per day, months ahead), every destination under your price cap from any airport (cheap flights Europe, low cost flights, low cost airline), round trips, alerts on price drops and new deals.

- **URL**: https://apify.com/euroscrape/ryanair-low-fares.md
- **Developed by:** [EuroScrape](https://apify.com/euroscrape) (community)
- **Categories:** Travel, Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 calendar fares

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Ryanair Low Fare Finder: Cheapest Days, Anywhere & Alerts

**Ryanair's cheapest fares as clean data — the fare calendar of any route, and every destination you can reach under your price cap.** Two tools in one Actor: pick a route and get the cheapest price for every day months ahead, or pick your home airport and ask "where can I fly for under 20 €?".

![Ryanair fare calendars and anywhere deals, with real prices](https://raw.githubusercontent.com/EuroScrape/apify-actors/main/assets/demo-ryanair-low-fares.gif)

- 📅 **Fare calendars**: the cheapest fare for each day of the month, up to 6 months ahead, one way or round trip.
- 🌍 **Anywhere mode**: every destination Ryanair serves from your airport, cheapest first, with a price cap ("under 20 €").
- 🔔 **Deal alerts**: schedule it daily and get a Telegram, Discord, Slack or webhook ping when a fare drops or a new deal appears under your threshold.
- 🧾 **Honest data**: straight from Ryanair's own fare-finder API, including the fare's last-refresh time and Ryanair's own "previous price" when shown.

### ✨ Why this Actor

| | |
|---|---|
| 📅 **One run, whole calendars** | A month of a route is ~30 fares for about $0.015 — track ten routes daily for pennies. |
| 🗺️ **Airport names understood** | `"BVA"`, `"Paris Beauvais"` or `"Berlin"` — resolved against Ryanair's official list of 224 active airports. |
| 🔁 **Round trips done right** | Ryanair prices are per leg; `roundTrip` loads the return calendar too, flagged `inbound`. |
| 📊 **Free summaries** | Per route: cheapest day, median, cheapest day of each month. Per airport: top 10 deals and the cheapest fare per country. |
| 📣 **Deal-hunting alerts** | `alertMaxPrice` pings you the moment any fare at or below your threshold appears. |

### 🎯 Use cases

- **Deal hunters**: "any fare under 20 € from Beauvais in the next month" — checked every morning, pinged on Telegram.
- **Flexible travellers**: the cheapest day to fly a route across several months, before picking dates.
- **Travel media & newsletters**: weekly "deals from your city" sections, generated from data.
- **Analysts**: Ryanair price levels by route, month and country.

### 🚀 Examples

**The cheapest day to fly Berlin → Alicante over two months:**

```json
{
  "routes": ["BER-ALC"],
  "months": 2
}
```

**Where can I fly from Beauvais for under 30 €?**

```json
{
  "airports": ["Paris Beauvais"],
  "maxPrice": 30,
  "dateFrom": "2026-10-10",
  "dateTo": "2026-11-10"
}
```

**Daily deal alert — anything under 20 € from Berlin, pinged on Telegram:**

```json
{
  "airports": ["BER"],
  "maxPrice": 20,
  "monitorName": "ber-deals",
  "alertMaxPrice": 20,
  "telegramBotToken": "123456:ABC…",
  "telegramChatId": "123456789"
}
```

### 📦 Output

**A calendar fare** (real data):

```json
{
  "type": "fare",
  "route": "BER-ALC",
  "direction": "outbound",
  "origin": "BER",
  "originName": "Berlin Brandenburg",
  "destination": "ALC",
  "destinationName": "Alicante",
  "date": "2026-11-01",
  "departure": "2026-11-01T20:20:00",
  "arrival": "2026-11-01T23:25:00",
  "price": 27.99,
  "currency": "EUR",
  "soldOut": false
}
```

**A destination deal** (real data):

```json
{
  "type": "destination",
  "origin": "BVA",
  "originName": "Paris Beauvais",
  "destination": "BGY",
  "city": "Bergamo",
  "country": "Italy",
  "departure": "2026-11-02T06:00:00",
  "flightNumber": "FR3433",
  "price": 14.99,
  "currency": "EUR"
}
```

**Free summaries** (real data): per route — `BER-ALC: cheapest 2026-11-01 at 27.99 €, median 70.86 €, December cheapest 48.69 €`; per airport — `BVA: 13 destinations ≤ 30 €, top deals Bergamo 14.99, Belfast 16.99, Birmingham 16.99`, plus the cheapest fare per country.

### 💰 Pricing

| Event | Price |
|---|---|
| Run start | $0.003 |
| Calendar fare (one day of a route) | $0.0005 |
| Destination deal | $0.001 |
| Summaries | free |

A two-month calendar for one route ≈ $0.03. A daily "anywhere under 20 €" check on one airport ≈ $0.01–0.05 per run. Apify subscribers pay less: −10% (Starter), −20% (Scale), −30% (Business). Set a **maximum cost per run** in the run options and the Actor stops cleanly when it's reached.

### ❓ FAQ

**Are these final prices?** They are Ryanair's base fares, as shown on Ryanair's own low-fare pages — before seats, bags and other extras you may add at booking.

**Why is a route missing?** Ryanair doesn't serve it (the Actor tells you), or no fares are published yet for that month. Fares typically open several months ahead.

**One way or return?** Ryanair prices every leg separately. Calendars are one-way by default; `roundTrip: true` adds the return calendar (`direction: "inbound"`).

**How fresh are the prices?** Each fare carries `priceUpdatedAt`, Ryanair's own refresh timestamp — usually minutes old.

**Is it affiliated with Ryanair?** No. The Actor reads the same public fare-finder API that powers Ryanair's "Explore" pages, at a polite rate.

### 🔌 API, AI agents and integrations

- **API**: one call runs the Actor and returns the results, `POST https://api.apify.com/v2/acts/euroscrape~ryanair-low-fares/run-sync-get-dataset-items` (see the API tab for Python, JavaScript and cURL).
- **AI agents (MCP)**: add `https://mcp.apify.com?tools=euroscrape/ryanair-low-fares` to Claude, Cursor, VS Code or any MCP client, and the Actor becomes a tool your agent can call.
- **No-code automation**: start runs and pass the results on with Apify's integrations for n8n, Make and Zapier, or with a webhook when a run ends.
- **Exports**: every result set downloads as JSON, CSV, Excel or XML, and can be sent to Google Sheets.

### ⭐ Your feedback

If this Actor saves you time, a short review on Apify Store helps other users find it. Missing a field or a filter? Say it in your review: the most requested features are added first.

### 🔗 More from EuroScrape

- [Google Flights Scraper: Cheapest Dates, Prices & Price History](https://apify.com/euroscrape/google-flights-prices): flight prices for any route and dates across all airlines, cheapest day to fly, typical price range and price-drop alerts.
- [Google Hotels Scraper: Prices from Every Booking Site](https://apify.com/euroscrape/google-hotels-prices): hotel prices for any destination and dates, with the price on every booking site, rate parity, price calendars and alerts.
- [Vinted Scraper: 26 Countries, Deals, Alerts & Seller Data](https://apify.com/euroscrape/vinted-scraper): search Vinted across 26 countries, prices with buyer fees, seller ratings and instant alerts on new listings.
- [EU Second-Hand Marketplaces Scraper: Vinted, OLX & More](https://apify.com/euroscrape/eu-marketplace-deals): one search on the top second-hand marketplaces of 18 European countries, prices in €, cheapest country and resale margin.
- [Kleinanzeigen Scraper: Deal Finder & Price-Drop Alerts](https://apify.com/euroscrape/kleinanzeigen-scraper): German classifieds with view counts, full seller details and instant alerts.
- [France Real Estate Sold Prices (DVF): €/m², Sales & Trends](https://apify.com/euroscrape/france-property-prices): every property sale registered by the French State — real prices, €/m², addresses, GPS, market trends per city and alerts on new sales.
- [France Energy Ratings (DPE): Homes, Energy Sieves & Alerts](https://apify.com/euroscrape/france-energy-ratings): official energy certificates of French homes — class, address, consumption, yearly bill — with the F/G energy sieves of any city and alerts on new certificates.
- [France Building Permits (Sitadel): Projects, Builders & Alerts](https://apify.com/euroscrape/france-building-permits): official register of French building permits — housing programmes and commercial buildings with the developer (name, SIREN), address, size and status, and alerts when works start.
- [EU Public Tenders Scraper: TED, BOAMP & Awards](https://apify.com/euroscrape/eu-public-tenders): open tenders and contract awards from all of Europe (TED) and France (BOAMP, DECP), with winners per lot, values in € and daily alerts.
- [EU VAT Number Validator (VIES): Bulk Check, Proof & Alerts](https://apify.com/euroscrape/vat-validator): validate VAT numbers in bulk against the EU's official registry, with consultation proof for tax audits and alerts when a customer's number becomes invalid.
- [App Store Reviews Scraper + Google Play Reviews](https://apify.com/euroscrape/app-reviews): reviews from both stores in 58 countries, rating by version and country, alerts on new negative reviews.
- [Website Tech Stack Detector: 280+ Technologies, Leads & Signals](https://apify.com/euroscrape/website-intelligence): technologies, company identity, contacts and sales signals for any website.
- [French Companies Scraper (SIRENE)](https://apify.com/euroscrape/france-companies): every French company by activity, area and size, with verified websites and emails.
- [UK Companies House Scraper](https://apify.com/euroscrape/uk-companies): UK companies by SIC code and location, with directors, websites and emails.
- [Impressum & Legal Notice Scraper (EU)](https://apify.com/euroscrape/company-identity): legal identity, registry numbers and VAT IDs from any website, registry-verified.
- [EU Electricity Prices (Day-Ahead): All Zones & Cheap Hours](https://apify.com/euroscrape/eu-electricity-prices): tomorrow's spot prices for 40+ European bidding zones, the cheapest 3-hour window of each day, negative-price alerts and years of history.
- [France Fuel Prices: Cheapest Stations Near You & Alerts](https://apify.com/euroscrape/france-fuel-prices): live official prices of all ~10,000 French stations — cheapest Diesel, E10, E85 or LPG around any point, with distances and price-drop alerts.

# Actor input Schema

## `routes` (type: `array`):

Airport pairs like "BVA-AGP" or "BER → ALC": you get the cheapest fare for every day of the chosen months.

## `months` (type: `integer`):

How many months of the fare calendar to load.

## `startMonth` (type: `string`):

Default: the current month.

## `roundTrip` (type: `boolean`):

Also load the return-leg calendar (Ryanair prices are per leg: a return is two one-ways).

## `airports` (type: `array`):

Airport codes or names ("BVA", "Paris Beauvais", "Berlin"): you get the cheapest fare to every destination Ryanair serves from there.

## `dateFrom` (type: `string`):

Earliest departure date for the cheapest-destination search (default: tomorrow).

## `dateTo` (type: `string`):

Latest departure date (default: in 31 days).

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

Only destinations with a fare at or below this price ("where can I fly for under 20?").

## `maxDestinationsPerAirport` (type: `integer`):

Cheapest first.

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

Currency of the fares.

## `includeSummary` (type: `boolean`):

Per route: cheapest day, median, cheapest day of each month. Per airport: top 10 destinations and cheapest fare per country.

## `monitorName` (type: `string`):

Set a name and schedule the Actor (e.g. daily): each run then flags new fares and price changes since the previous run.

## `alertOnPriceDropPct` (type: `integer`):

Monitoring: alert when a fare drops by this percentage or more.

## `alertMaxPrice` (type: `integer`):

Get pinged whenever a fare at or below this price appears (new or dropped) — deal-hunting mode.

## `telegramBotToken` (type: `string`):

Alerts on Telegram: create a bot with @BotFather and paste its token.

## `telegramChatId` (type: `string`):

Your chat ID (send a message to your bot, then open api.telegram.org/bot<token>/getUpdates).

## `discordWebhookUrl` (type: `string`):

Alerts in a Discord channel: Channel settings → Integrations → Webhooks.

## `slackWebhookUrl` (type: `string`):

Alerts in Slack: create an Incoming Webhook for your channel.

## `webhookUrl` (type: `string`):

Receives one POST per run with the new deals and price drops (Make, Zapier, n8n…).

## `maxNotifications` (type: `integer`):

Maximum number of alert messages per run.

## Actor input object example

```json
{
  "routes": [
    "BER-ALC"
  ],
  "months": 2,
  "roundTrip": false,
  "airports": [
    "Paris Beauvais"
  ],
  "maxDestinationsPerAirport": 50,
  "currency": "EUR",
  "includeSummary": true,
  "alertOnPriceDropPct": 10,
  "maxNotifications": 30
}
```

# Actor output Schema

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

One row per calendar day or destination.

## `deals` (type: `string`):

Cheapest destinations from your airports.

## `runSummary` (type: `string`):

Counters for this run (items found, output, errors).

# 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 = {
    "routes": [
        "BER-ALC"
    ],
    "airports": [
        "Paris Beauvais"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("euroscrape/ryanair-low-fares").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 = {
    "routes": ["BER-ALC"],
    "airports": ["Paris Beauvais"],
}

# Run the Actor and wait for it to finish
run = client.actor("euroscrape/ryanair-low-fares").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 '{
  "routes": [
    "BER-ALC"
  ],
  "airports": [
    "Paris Beauvais"
  ]
}' |
apify call euroscrape/ryanair-low-fares --silent --output-dataset

```

## MCP server setup

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

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/FOUgjZepQypSUDLov/builds/FPFDfOH8076pntAhz/openapi.json
