Ryanair Flights Scraper: Fares, Seats & Schedules avatar

Ryanair Flights Scraper: Fares, Seats & Schedules

Pricing

from $11.54 / 1,000 results

Go to Apify Store
Ryanair Flights Scraper: Fares, Seats & Schedules

Ryanair Flights Scraper: Fares, Seats & Schedules

Scrape Ryanair fares and flight availability between 230+ European airports by IATA code and date. Extract price, currency, flight number, seats left, duration, stops and booking deep link. Export to JSON, CSV or Excel.

Pricing

from $11.54 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

0.22 hours

Issues response

3 days ago

Last modified

Share

Ryanair Flights Scraper: Fares, Seats & Schedules

Ryanair Flights Scraper: Fares, Seats & Schedules

Here is one real result, with every field a fare record returns:

{
"origin": "STN",
"originName": "London Stansted",
"destination": "DUB",
"destinationName": "Dublin",
"departureDateTime": "2026-09-09T22:45:00",
"arrivalDateTime": "2026-09-10T00:05:00",
"flightNumber": "FR256",
"price": 18.99,
"currency": "EUR",
"previousPrice": null,
"priceUpdated": "2026-08-10T14:02:33.000Z",
"departureCity": "London",
"arrivalCity": "Dublin",
"departureCountry": "United Kingdom",
"arrivalCountry": "Ireland",
"flightKey": "FR~ 256~ ~~STN~09/09/2026 22:45~DUB~09/10/2026 00:05~~",
"newRoute": false,
"direction": "outbound",
"deepLink": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-09-09&dateIn=&isReturn=false&originIata=STN&destinationIata=DUB",
"observedAt": "2026-08-10T14:04:41.832Z",
"error": null
}

The most complete Ryanair fare scraper available. It returns every field the fare scan exposes between two airports, from price and currency to flight number, city and country names, a price-change comparison and a ready-to-use booking deep link, and can add a per-flight availability pass with seats left, duration and stops. Works across the Ryanair network by IATA code and date, one-way or round trip.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor scans Ryanair fares between an origin and destination airport (by IATA code) across the dates you give, one-way or round trip, and writes one fare record per flight to the run's dataset. Each fare record includes the price and currency, flight number, full departure and arrival date and times, origin and destination city and country names, a previous-price comparison when available, a new-route flag, the trip direction, and a booking deep link. When withDetails is on, the actor makes a second availability request per day and emits an additional details record per flight with seats left, duration, stops, operating carrier and published fare.

Data covers the Ryanair network across 230+ European airports. Prices are returned in the currency you choose.

Quickstart

Open the actor, paste this into the input, and press Run. It scans one-way fares from London Stansted to Dublin.

{
"maxFlights": 10,
"withDetails": true,
"origin": "STN",
"destination": "DUB",
"tripType": "oneWay",
"currency": "EUR",
"adults": 1
}

Leave departureDateFrom and departureDateTo empty to scan a near-future date automatically, or set a date range to scan several days. For round trips, set tripType to round and provide the return dates.

Input reference

FieldTypeRequiredDefaultDescription
originstringnoSTNDeparture airport IATA code, for example STN, DUB, BCN.
destinationstringnoDUBArrival airport IATA code.
departureDateFromstringno(auto)Earliest outbound date (YYYY-MM-DD). Leave empty to search a near-future date automatically.
departureDateTostringno(same as from)Latest outbound date (YYYY-MM-DD). Leave empty to use the same day as departureDateFrom.
tripTypeenumnooneWayoneWay for one-way or round for round trip.
returnDateFromstringno(empty)Earliest inbound date (YYYY-MM-DD). Round trips only.
returnDateTostringno(empty)Latest inbound date (YYYY-MM-DD). Round trips only.
currencystringnoEURCurrency for the fare scan prices, for example EUR, GBP, USD.
adultsintegerno1Number of adult passengers (affects seat availability counts).
withDetailsbooleannotrueWhen on, make a second request per day to retrieve every flight with seats left, duration, operating carrier and fare types. Adds a separate details record per flight.
maxFlightsintegerno10Maximum fare records to collect. Range 1 to 1000000.

Output reference

The actor emits two kinds of records. Fare records (the result event) always. Availability records (the details event) only when withDetails is on. Types: string, number, integer, boolean, or null when a value is absent.

Fare record fields:

FieldTypeDescription
originstringDeparture airport IATA code.
originNamestringDeparture airport name.
destinationstringArrival airport IATA code.
destinationNamestringArrival airport name.
departureDateTimestringLocal departure date and time.
arrivalDateTimestringLocal arrival date and time.
flightNumberstringRyanair flight number, for example FR256.
pricenumberFare amount for the selected passengers.
currencystringCurrency of the price.
previousPricenumberPrior fare for change comparison, or null.
priceUpdatedstringISO timestamp Ryanair last updated the price.
departureCitystringDeparture city name.
arrivalCitystringArrival city name.
departureCountrystringDeparture country name.
arrivalCountrystringArrival country name.
flightKeystringRyanair internal flight key.
newRoutebooleanWhether Ryanair flags this as a new route.
directionstringoutbound or return.
deepLinkstringReady-to-use Ryanair booking URL for this trip.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success.

Availability record fields (details event, present when withDetails is on). These carry the same route, flight and pricing fields as a fare record, plus:

FieldTypeDescription
publishedPricenumberPublished fare before discounts, or null.
fareClassstringFare class, for example Regular.
seatsLeftintegerSeats left on the flight, or null when Ryanair reports plenty available.
durationstringFlight duration, for example 1:20.
stopsintegerNumber of stops (0 for direct).
operatedBystringOperating carrier, or null.
sold_outbooleanWhether the flight is sold out.
departureDateTimeUtcstringDeparture time in UTC, or null.
arrivalDateTimeUtcstringArrival time in UTC, or null.

Example output record

Real fare record from a live run (input {"origin":"STN","destination":"DUB","tripType":"oneWay","currency":"EUR"}):

{
"origin": "STN",
"originName": "London Stansted",
"destination": "DUB",
"destinationName": "Dublin",
"departureDateTime": "2026-09-14T06:30:00",
"arrivalDateTime": "2026-09-14T07:50:00",
"flightNumber": "FR271",
"price": 19.99,
"currency": "EUR",
"previousPrice": null,
"priceUpdated": "2026-08-15T07:05:36.000Z",
"departureCity": "London",
"arrivalCity": "Dublin",
"departureCountry": "United Kingdom",
"arrivalCountry": "Ireland",
"flightKey": "FR~ 271~ ~~STN~09/14/2026 06:30~DUB~09/14/2026 07:50~~",
"newRoute": false,
"direction": "outbound",
"deepLink": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-09-14&dateIn=&isReturn=false&originIata=STN&destinationIata=DUB",
"observedAt": "2026-08-15T09:53:03.488Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~ryanair-flights-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"origin":"STN","destination":"DUB","tripType":"oneWay","currency":"EUR","maxFlights":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~ryanair-flights-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"origin":"BCN","destination":"CIA","tripType":"round","departureDateFrom":"2026-10-01","returnDateFrom":"2026-10-08","maxFlights":100}'

Apify CLI:

apify call scrapers_lat/ryanair-flights-scraper \
--input '{"origin":"STN","destination":"DUB","withDetails":true}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per fare record returned (result event). See the pricing tab for the current per-result price.
  • Details billing. When withDetails is on, each availability record is billed as a separate details event. Turn it off to scan fares only.
  • No charge on failure. A run that finds no fares does not push billable records, so empty runs cost nothing. Error records are written without an event name and are not charged.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 fares per run. Upgrade for higher maxFlights.

FAQ and troubleshooting

A run returned no fares. Why? Ryanair may not fly that route on the chosen date, or the date range was empty of scheduled flights. Try another date, confirm both IATA codes, or widen the date range. Runs with no fares are not charged.

How do I scan a round trip? Set tripType to round and provide returnDateFrom (and optionally returnDateTo). Return-leg records have direction set to return.

What is the deepLink? It is a ready-to-use Ryanair booking URL preloaded with your route, dates and passenger count, so you can open the exact trip on ryanair.com.

Why is seatsLeft null on a details record? Ryanair reports a sentinel value when plenty of seats are available rather than an exact count. In that case seatsLeft is returned as null instead of a made-up number.

Why did I only get fare records and no details records? Details records are only emitted when withDetails is on and Ryanair returns per-flight availability for the day. When availability is unavailable, the fare scan still returns.

Is this an official Ryanair tool? No. This actor is independent and has no affiliation with Ryanair. It reads only publicly available fare and availability data. Use it in accordance with Ryanair's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Ryanair. Accesses only publicly available fare and availability data. Use in accordance with Ryanair's terms of service.