Ryanair API — Cheap Flight Fares & Prices | $0.99/1k avatar

Ryanair API — Cheap Flight Fares & Prices | $0.99/1k

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Ryanair API — Cheap Flight Fares & Prices | $0.99/1k

Ryanair API — Cheap Flight Fares & Prices | $0.99/1k

Cheapest Ryanair fares from any airport or route: one row per flight with date, price, currency, departure and arrival airports and times, and a booking link. Search by airport, route or date range, cap the price. No login, no API key. Export CSV, JSON or Excel.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Raffy

Raffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

What does Ryanair Flight Fares do?

Ryanair Flight Fares extracts cheap flight prices from Ryanair and delivers them as clean, structured JSON, CSV or Excel. It works as a Ryanair API alternative: give it a departure airport (STN) or a route (DUB-STN) and a date window, and get the cheapest one-way fare for every destination back in seconds, without a browser, without residential proxies and without writing a scraper yourself.

Typical use cases:

  • Run a travel-deal site or newsletter that needs today's cheapest fares out of a set of airports.
  • Monitor one route over time and alert when the price drops below a threshold.
  • Research where an airport can be reached from cheaply this month, for route planning or content.

It does not log in, read paywalled content or collect private user data. It reads only the airline's publicly available fare finder.

Why use Ryanair Flight Fares?

  • Fast and cheap. Pure HTTP extraction (no headless browser), so runs finish in seconds and cost fractions of a cent per fare. The default run returns 20 fares in about 9 seconds.
  • Honest results. Every row carries a status (ok, not_found, error), so you (or an AI agent calling this Actor) can tell "no fares in that window" apart from "the site could not be read". You are only billed for ok rows.
  • Runs anywhere Apify runs. Schedule it, call it from the API, chain it with other Actors, or receive results via integrations (Google Sheets, Slack, webhooks, Zapier, Make).
  • Every row is bookable. The url of each row is the airline's own booking page for exactly that flight and date, so a result goes straight into a deal post or an alert.

What data can Ryanair Flight Fares extract?

FieldTypeDescription
departureAirportstringIATA code of the departure airport, e.g. STN
departureAirportNamestringDeparture airport name, e.g. London Stansted
departureCitystringCity the departure airport serves
departureCountrystringCountry of the departure airport
arrivalAirportstringIATA code of the arrival airport, e.g. AHO
arrivalAirportNamestringArrival airport name, e.g. Alghero
arrivalCitystringCity the arrival airport serves
arrivalCountrystringCountry of the arrival airport
departureDateTimestringLocal departure time at the departure airport (ISO 8601, no zone)
arrivalDateTimestringLocal arrival time at the arrival airport (ISO 8601, no zone)
flightNumberstringFlight number, e.g. FR230
pricenumberCheapest one-way fare found for that route and date
currencystringISO 4217 currency code, e.g. GBP
previousPricenumberThe fare before the latest change, when the airline reports one
newRoutebooleantrue when the airline flags the route as newly launched
priceUpdatedstringISO 8601 time the airline last repriced the fare
urlstringBooking page for this exact flight
statusstringok, not_found or error (see below)
errorstringReason when status is not ok
scrapedAtstringISO 8601 time of extraction

One row is the cheapest fare found for one destination inside your date window, which is how the airline's own fare finder answers.

Result status (tri-state output)

statusMeaningBilled?
okThe fare was found and extracted.Yes
not_foundRyanair answered, but has no fares for that airport, route or date window (including an airport it does not serve).No
errorRyanair could not be read after retries (network error, block, or API change). error says why.No

How to scrape Ryanair with Ryanair Flight Fares

  1. Open the Actor in Apify Console and click Try for free.
  2. Type one or more departure airports into Airports or routes as IATA codes (STN, DUB-STN), or type one into Search query.
  3. Optionally set Earliest/Latest departure date, a Market (sets the booking link's language, e.g. .com/gb/en/...) and a Maximum fare.
  4. Set Maximum results (start with the default 20 to see the output) and click Start. The run takes about 10 seconds for the default input.
  5. Open the Output tab or Export the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the API tab (Node.js, Python, curl examples) or add a Schedule.

How much does it cost to scrape Ryanair?

This Actor uses pay-per-event pricing:

EventPrice
Actor start$0.005 per run
Result (status: ok row)$0.00099 per fare

Example: 1,000 fares cost about $1.00 ($0.005 to start plus 1,000 x $0.00099). Rows with status not_found or error are never billed. Platform compute is included, so the start fee and the price per result are the whole price list. The free Apify plan's $5 of monthly credit covers about 5,000 fares in a single run. You can cap spending per run with Maximum results and in the run's Max total charge option.

Input

See the Input tab for the full schema. The main options:

FieldTypeDefaultDescription
startUrlsarray of strings["STN"]Departure airports (STN), routes (STN-ALC) or ready-made fare-finder URLs
querystring-One airport or route, used instead of the list above
dateFromstringa week from todayEarliest outbound departure date, YYYY-MM-DD
dateTostring30 days after dateFromLatest outbound departure date, YYYY-MM-DD
marketstringen-gbBooking-link locale, e.g. en-gb for a .com/gb/en/... link. Does not change currency — that follows the departure airport's own country.
maxPriceinteger-Only return fares at or below this amount, in whatever currency the departure airport's fares are quoted in
maxItemsinteger20Stop after this many rows
proxyConfigurationobjectApify Proxy offOptional; datacenter proxy is enough if needed

Example input:

{
"startUrls": ["STN", "DUB-STN"],
"dateFrom": "2026-11-10",
"dateTo": "2026-12-10",
"market": "en-gb",
"maxPrice": 40,
"maxItems": 20
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Example rows, taken from a real run:

[
{
"url": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&dateOut=2026-10-11&originIata=STN&destinationIata=AHO&isConnectedFlight=false&isReturn=false",
"status": "ok",
"scrapedAt": "2026-09-25T01:14:01.402Z",
"departureAirport": "STN",
"departureAirportName": "London Stansted",
"departureCity": "London",
"departureCountry": "United Kingdom",
"arrivalAirport": "AHO",
"arrivalAirportName": "Alghero",
"arrivalCity": "Alghero",
"arrivalCountry": "Italy",
"departureDateTime": "2026-10-11T06:25:00",
"arrivalDateTime": "2026-10-11T09:55:00",
"flightNumber": "FR230",
"price": 14.99,
"currency": "GBP",
"newRoute": false,
"priceUpdated": "2026-09-25T00:19:49.000Z"
},
{
"url": "https://www.ryanair.com/gb/en/trip/flights/select?adults=1&dateOut=2026-10-07&originIata=STN&destinationIata=AOI&isConnectedFlight=false&isReturn=false",
"status": "ok",
"scrapedAt": "2026-09-25T01:14:01.402Z",
"departureAirport": "STN",
"departureAirportName": "London Stansted",
"departureCity": "London",
"departureCountry": "United Kingdom",
"arrivalAirport": "AOI",
"arrivalAirportName": "Ancona",
"arrivalCity": "Ancona",
"arrivalCountry": "Italy",
"departureDateTime": "2026-10-07T06:35:00",
"arrivalDateTime": "2026-10-07T09:50:00",
"flightNumber": "FR124",
"price": 14.99,
"currency": "GBP",
"newRoute": false,
"priceUpdated": "2026-09-25T00:20:18.000Z"
}
]

Tips

  • Keep maxItems small while testing, then raise it.
  • Pass several airports in one run instead of many single-airport runs; you pay the start fee once.
  • A wider date window finds more destinations, because the fare finder returns the cheapest date per destination inside the window.
  • Set market to match the booking-link language you want (e.g. en-ie for .com/ie/en/... links); currency will not change with it.
  • Mixing departure airports from different countries in one run (e.g. STN and DUB) mixes currencies in the output — check currency per row, and note that a single maxPrice is applied in each departure airport's own currency, not converted.
  • If you see error rows mentioning blocking, enable Apify Proxy (datacenter) in Proxy configuration.

Limitations

  • One airline. This Actor reads Ryanair's own fare finder, so it does not compare Ryanair against other carriers.
  • market does not set the currency. Verified: the same route returns the identical price and currency under every market value. Ryanair quotes each fare in the currency of the departure airport's own country (Dublin is always EUR, Stansted is always GBP) regardless of market; market only changes the language/locale of the booking url.
  • One-way fares only, and one row per destination: the cheapest date inside your window, not every flight on every date. Every destination Ryanair serves from the airport comes back in one request (for example about 150 from Stansted and 115 from Dublin).
  • Fares are what the airline advertises at the time of the run, excluding bags, seats and other extras, and they change constantly. Re-run before acting on a price.
  • Results reflect the public fare finder at the time of the run; Ryanair may change its API (it has moved from v3 to v4 before), in which case rows come back as error and the Actor is updated quickly (report it in the Issues tab).

FAQ

Scraping publicly available data is generally legal, but you are responsible for how you use the output. Read the legal notice below and Ryanair's terms of service, and do not collect personal data without a legitimate reason.

Can I use this Actor from an AI agent or MCP client?

Yes. Every row is self-describing (status + error), inputs are plain strings, and results can be fetched via the dataset API or the Apify MCP server.

Why did I get fewer rows than maxItems?

The airport serves fewer destinations in that date window, your maxPrice excluded the rest, or the run hit your Max total charge limit. Check the run log for "Stopping gracefully".

Can I search a specific route?

Yes. Write it as two IATA codes, DUB-STN, either in the list or in the query. You then get the cheapest date for that route inside your window.

What if a field is missing?

Optional fields such as previousPrice are omitted when Ryanair does not publish them. If a field that should always be present is missing, open an issue in the Issues tab with the run ID.

This Actor extracts only data that Ryanair publishes publicly; it does not extract private user data such as e-mail addresses, phone numbers, gender or precise location, and it does not log in or read anything behind access controls. However, your results could still contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with Ryanair's terms of service and applicable law when using the extracted data.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Ryanair or its owners. All trademarks belong to their respective owners.