Ryanair Flights Scraper: Fares, Prices, Schedules & API avatar

Ryanair Flights Scraper: Fares, Prices, Schedules & API

Pricing

from $11.54 / 1,000 results

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

Ryanair Flights Scraper: Fares, Prices, Schedules & API

Scrape Ryanair flight prices, fares and schedules between 220+ European airports by route and date, no API key. Get every flight per day with price, currency, flight number, duration, local and UTC times, city, country and booking link. One-way or round trip. Export JSON, CSV, Excel.

Pricing

from $11.54 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

0.22 hours

Issues response

10 hours ago

Last modified

Share

Ryanair Flights Scraper: Fares, Prices, Schedules & API

Ryanair Flights Scraper: Fares, Prices, Schedules & API

Scrape Ryanair flight prices, fares and schedules between 220+ European airports by route and date, with no API key and no login. This Ryanair scraper returns every flight Ryanair publishes on your route for each day you scan, not just the cheapest one, and prices each day by its lowest available fare. Ideal for airfare data, flight price monitoring, travel dashboards and cheap-flight research.

Here is one real result, with every field the actor returns:

{
"origin": "STN",
"originName": "London Stansted",
"destination": "DUB",
"destinationName": "Dublin",
"departureDateTime": "2026-09-20T06:35:00",
"arrivalDateTime": "2026-09-20T07:55:00",
"departureDateTimeUtc": "2026-09-20T05:35:00.000Z",
"arrivalDateTimeUtc": "2026-09-20T06:55:00.000Z",
"flightNumber": "FR256",
"fareType": "Value",
"cabin": "Economy",
"price": 18.99,
"publishedPrice": null,
"currency": "EUR",
"previousPrice": null,
"priceUpdated": "2026-09-04T14:01:36.000Z",
"seatsLeft": null,
"duration": "1h 20m",
"durationMinutes": 80,
"stops": 0,
"direct": true,
"operatedBy": null,
"soldOut": false,
"available": true,
"fareClass": null,
"fareKey": null,
"fareOptions": null,
"seatMap": null,
"route": "STN-DUB",
"departureCity": "London",
"arrivalCity": "Dublin",
"departureRegion": "England",
"arrivalRegion": "Leinster",
"departureCountry": "United Kingdom",
"arrivalCountry": "Ireland",
"departureCountryCode": "GB",
"arrivalCountryCode": "IE",
"departureLatitude": 51.885,
"departureLongitude": 0.235,
"arrivalLatitude": 53.4213,
"arrivalLongitude": -6.27007,
"departureTimezone": "Europe/London",
"arrivalTimezone": "Europe/Dublin",
"dayOfWeek": "Sunday",
"direction": "outbound",
"source": "schedule+fare",
"isLowestFareOfDay": true,
"deepLink": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-09-20&dateIn=&isReturn=false&originIata=STN&destinationIata=DUB",
"url": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&teens=0&children=0&infants=0&dateOut=2026-09-20&dateIn=&isReturn=false&originIata=STN&destinationIata=DUB",
"observedAt": "2026-09-04T16:42:34.340Z",
"error": null
}

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

Apify Coverage Output Billing

Table of contents

What it does

This Ryanair flights scraper (a Ryanair flight prices scraper and airfare data API in one) scans a Ryanair route between two airports over the date range you pass, and returns every flight Ryanair publishes on that route for each day, not only the cheapest departure. It reads the public Ryanair timetable for the full list of daily flights and prices each day using that day's lowest available fare, so you get a complete picture of the schedule plus the best price on the board.

Every row is enriched with the origin and destination airport name, city, region, country, ISO country code, coordinates and timezone, plus local and UTC departure and arrival times, flight duration (text and minutes), day of week, a direct flag, and a booking deep link so a buyer can jump straight to that route and date on ryanair.com.

By default each fare of a flight is its own dataset row, with fareType and cabin telling the fares apart. Set collapseFares to true to instead get one row per flight with every fare nested in a fareOptions array. Set includeReturn (or tripType round) to also scan the return leg in the same run; return-leg rows are tagged direction inbound.

Why this Ryanair scraper

  • Every flight, not just the cheapest. Most Ryanair scrapers return one cheapest fare per day. This one returns the whole daily timetable and marks the priced flight with isLowestFareOfDay.
  • No API key, no login. You do not need Ryanair credentials or an official API. Just enter a route and dates.
  • Richest field set. City, region, country, ISO code, coordinates, timezone, local and UTC times, duration in minutes, day of week, direct flag, route string, and a booking link, on every row.
  • One-way, round trip, date range and flexible dates. Scan a single day, a whole window, or add flex days around your target dates.
  • Pay per result. No monthly rental. You only pay for the flight records you keep.

Quickstart

Open the actor, paste this into the input, and press Run. It scans the STN to DUB route for a near-future week and returns every published flight, priced by the day's lowest fare.

{
"origin": "STN",
"destination": "DUB",
"departureDateFrom": "2026-09-15",
"departureDateTo": "2026-09-21",
"currency": "EUR",
"maxFlights": 50
}

Only origin and destination are required. Leave the dates empty to have the actor pick a near-future date automatically. Set tripType to round with returnDateFrom / returnDateTo, or set includeReturn to true, to also scan the way back.

Input reference

FieldTypeRequiredDefaultDescription
originstringyesSTNDeparture airport IATA code (for example STN, DUB, BCN). One of 224 Ryanair airports.
destinationstringyesDUBArrival airport IATA code. One of 224 Ryanair airports.
departureDateFromstringno(auto)Earliest outbound date (YYYY-MM-DD). Leave empty for a near-future date. Past dates are moved forward.
departureDateTostringno(= from)Latest outbound date (YYYY-MM-DD). Leave empty to use the same day as departureDateFrom.
tripTypeenumnooneWayoneWay or round. Round trips also scan the return leg using the return date fields.
returnDateFromstringno(empty)Earliest inbound date (YYYY-MM-DD). Round trips only.
returnDateTostringno(empty)Latest inbound date (YYYY-MM-DD). Round trips only.
includeReturnbooleannofalseAlso scan the return leg (destination back to origin). Return-leg rows are tagged direction inbound.
collapseFaresbooleannofalseBy default every fare of a flight is a separate row. Enable this to get one row per flight with all fares nested in a fareOptions array.
currencyenumnoEURCurrency for the fare prices. One of EUR, GBP, USD, PLN, SEK, DKK, NOK, CHF, HUF, RON, BGN, CZK.
adultsintegerno1Number of adult passengers.
teensintegerno0Teen passengers aged 12 to 15.
childrenintegerno0Child passengers aged 2 to 11.
infantsintegerno0Infant passengers under 2 years old.
flexDaysintegerno0Widen the search window by this many days (0 to 7) before and after your dates.
marketstringnogb/enLocale for the booking deep link, for example en-gb, es-es, it-it.
maxFlightsintegerno10Maximum number of flight fare records to collect. Free Apify accounts are capped at 10 per run.

For drop-in compatibility with other Ryanair scrapers, the actor also accepts these aliases: mode (ONEWAY / ROUND) for tripType; dateFrom / dateTo / departureDate for the outbound dates; inboundDateFrom / inboundDateTo / returnDate for the return dates; and maxItems / maxResults for maxFlights.

Output reference

One dataset item per fare by default, or one per flight when collapseFares is true. Types: string, number, integer, boolean, array, object, or null when the source value is absent.

FieldTypeDescription
originstringDeparture airport IATA code.
originNamestringDeparture airport name.
destinationstringArrival airport IATA code.
destinationNamestringArrival airport name.
routestringRoute as ORIGIN-DESTINATION, for example STN-DUB.
departureDateTimestringLocal scheduled departure (YYYY-MM-DDTHH:mm:ss).
arrivalDateTimestringLocal scheduled arrival (YYYY-MM-DDTHH:mm:ss).
departureDateTimeUtcstringDeparture in UTC, derived from the airport timezone.
arrivalDateTimeUtcstringArrival in UTC, derived from the airport timezone.
dayOfWeekstringDay of week of the local departure, for example Sunday.
flightNumberstringRyanair flight number, for example FR256.
fareTypestringFare label for this row, for example Value, Regular, or Scheduled when only the timetable is available.
cabinstringCabin for this fare. Ryanair is Economy.
pricenumberFare price in currency, or null when only the timetable slot is known.
publishedPricenumberPublished pre-discount price when exposed, otherwise null.
currencystringISO currency code of the prices.
previousPricenumberPrior price when a change is exposed, otherwise null.
priceUpdatedstringISO timestamp of when Ryanair last updated the fare, or null.
durationstringFlight duration, for example 1h 20m.
durationMinutesintegerFlight duration in minutes, for example 80.
stopsintegerNumber of stops. Ryanair point-to-point flights are 0.
directbooleantrue when the flight is non-stop.
seatsLeftintegerLive seats remaining. Returned as null; Ryanair does not expose live availability publicly.
operatedBystringOperating carrier when different, otherwise null.
soldOutbooleantrue when the day is sold out for the requested party size.
availablebooleantrue when the flight is not sold out.
fareClassstringRyanair fare class code when exposed, otherwise null.
fareKeystringInternal fare identifier when exposed, otherwise null.
fareOptionsarrayAll fares of the flight (only populated when collapseFares is true), otherwise null.
departureCitystringDeparture city.
arrivalCitystringArrival city.
departureRegionstringDeparture region or state.
arrivalRegionstringArrival region or state.
departureCountrystringDeparture country name.
arrivalCountrystringArrival country name.
departureCountryCodestringDeparture country ISO code, for example GB.
arrivalCountryCodestringArrival country ISO code, for example IE.
departureLatitudenumberDeparture airport latitude.
departureLongitudenumberDeparture airport longitude.
arrivalLatitudenumberArrival airport latitude.
arrivalLongitudenumberArrival airport longitude.
departureTimezonestringDeparture airport IANA timezone, for example Europe/London.
arrivalTimezonestringArrival airport IANA timezone.
seatMapobjectSeat map. Returned as null; Ryanair does not expose a public per-flight seat map.
directionstringoutbound for the requested leg, inbound for a return-leg row.
sourcestringWhere the row came from: schedule (timetable only), schedule+fare (timetable slot priced by fare), or farefinder.
isLowestFareOfDaybooleantrue when this flight carries the day's lowest available fare.
deepLinkstringRyanair booking URL for the exact route and date.
urlstringSame booking URL as deepLink (alias for compatibility).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed day, an item with a populated error field is written and not charged.

Comparison with other Ryanair scrapers

CapabilityThis actorepctex/ryanair-scraperstudio-amba/ryanair-scraperautomation-lab
Every flight of the day (not just cheapest)YesCheapest per queryCheapest per dayCheapest routes
One-way and round tripYesYesYesYes
Date range and flexible datesYes (range + flexDays)Single date + flexDaysRangeLimited
Passengers (adults / teens / children / infants)YesYesAdults onlyAdults only
Currency selectionYes (12)LimitedYesYes
Accepts competitor input aliasesYesNoNoNo
Local and UTC timesYesLocal onlyLocal onlyLocal only
City, region, country and ISO codeYesAirport onlyNames onlyNames only
Airport coordinates and timezoneYesNoNoNo
Day of week, duration in minutes, direct flagYesNoNoNo
Booking deep link per flightYesSometimesYesNo
Pricing modelPay per resultMonthly rental + usagePay per resultPay per result

Every input the listed competitors accept (origin, destination, dates, round trip, passengers, currency, result limit) is accepted here, either directly or through an alias, and every output field they return is included plus the extra enrichment above.

Use cases

  • Flight price monitoring and fare alerts across a route or a whole date window.
  • Airfare data feeds for travel dashboards, price-comparison sites and BI tools.
  • Cheap-flight research with isLowestFareOfDay and per-day lowest fares.
  • Route and schedule analysis using every daily flight, duration and day of week.
  • Travel apps and chatbots that need a Ryanair flight data API without an official key.

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","departureDateFrom":"2026-09-15","departureDateTo":"2026-09-21","currency":"EUR","maxFlights":50}'

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":"DUB","destination":"STN","includeReturn":true,"collapseFares":true}'

Apify CLI:

apify call scrapers_lat/ryanair-flights-scraper \
--input '{"origin":"STN","destination":"DUB","tripType":"round","returnDateFrom":"2026-09-22","returnDateTo":"2026-09-28"}'

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 record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a day errors, the actor writes an item with a populated error field and does not charge for it. Empty runs cost nothing.
  • 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 records per run. Upgrade for a higher maxFlights.
  • Row count. By default each fare is one row, so a flight with several fares produces several rows. Set collapseFares to true for one row per flight.

FAQ and troubleshooting

Does it return every flight or only the cheapest? Every flight Ryanair publishes on the route for each day you scan. Each day is priced by its lowest available fare, and the flight carrying that fare is marked with isLowestFareOfDay set to true.

Do I need a Ryanair API key or login? No. The actor reads only publicly available Ryanair flight and fare data. No key, account or payment wall is involved.

Why are price and fareType sometimes empty? Those rows come from the timetable only (source is schedule) when Ryanair does not return a live fare for that slot. The flight is real; only the price is not yet available for the requested party size and date.

How are the UTC times calculated? From the local scheduled time and the departure or arrival airport's IANA timezone, so daylight-saving changes are handled correctly.

Why are seatMap and seatsLeft always null? Ryanair does not expose a public per-flight seat map or live seat availability. Those endpoints are session and bot protected, so we return null rather than invent values.

How do I get the return leg too? Set tripType to round with returnDateFrom / returnDateTo, or set includeReturn to true. Return-leg rows are tagged direction inbound.

How do I get one row per flight instead of per fare? Set collapseFares to true. Each flight becomes a single row with all its fares in the fareOptions array.

A run returned 0 records. Why? Ryanair may not fly the requested route, or there are no flights in the date range. Confirm both airports are on the Ryanair network and widen the date range. Zero-result runs are not charged.

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

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for public platforms: company registries, government data, finance, travel, 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 data. Use in accordance with Ryanair's terms of service.