Skip to content

Instantly share code, notes, and snippets.

@vool
Last active March 27, 2024 16:12
Show Gist options
  • Star 81 You must be signed in to star a gist
  • Fork 20 You must be signed in to fork a gist
  • Save vool/bbd64eeee313d27a82ab to your computer and use it in GitHub Desktop.
Save vool/bbd64eeee313d27a82ab to your computer and use it in GitHub Desktop.
Ryanair api endpoints

API domains

https://desktopapps.ryanair.com

https://api.ryanair.com

Airports

https://api.ryanair.com/aggregate/3/common?embedded=airports,countries,cities,regions,nearbyAirports,defaultAirport&market=en-gb

https://desktopapps.ryanair.com/en-gb/res/stations

Closures

https://api.ryanair.com/aggregate/3/common?embedded=closures

Flight info

https://api.ryanair.com/flightinfo/3/flights/?&arrivalAirportIataCode=&departureAirportIataCode=DUB&departureTimeScheduledFrom=00:00&departureTimeScheduledTo=23:59&length=&number=&offset=

Schedules

https://desktopapps.ryanair.com/Calendar?Destination=EIN&IsTwoWay=false&Months=16&Origin=CFU&StartDate=2016-11-06

https://api.ryanair.com/timetable/3/schedules/DUB/LGW/years/2016/months/11

Availability and fares info

https://desktopapps.ryanair.com/en-gb/availability?ADT=1&CHD=0&DateIn=2016-11-24&DateOut=2016-11-10&Destination=STN&FlexDaysIn=6&FlexDaysOut=6&INF=0&Origin=VLC&RoundTrip=true&TEEN=0&ToUs=AGREED

Fair Finder

One way

https://services-api.ryanair.com/farfnd/3/oneWayFares?&departureAirportIataCode=BCN&language=en&limit=16&market=en-gb&offset=0&outboundDepartureDateFrom=2019-02-11&outboundDepartureDateTo=2019-10-28&priceValueTo=150

Return

https://services-api.ryanair.com/farfnd/3/roundTripFares?&arrivalAirportIataCode=STN&departureAirportIataCode=VLC&inboundDepartureDateFrom=2019-04-11&inboundDepartureDateTo=2019-04-28&language=es&limit=16&market=es-es&offset=0&outboundDepartureDateFrom=2019-03-11&outboundDepartureDateTo=2019-03-28&priceValueTo=150

Cheapest per day as well as availability:

https://api.ryanair.com/farefinder/3/oneWayFares/SXF/TSR/cheapestPerDay?market=de-de&outboundMonthOfDate=2017-04-01

FareFinder Image paths

https://www.ryanair.com/de/de.farefinder.json is an JSON file in which several picture paths are declared :)

Currencies

https://desktopapps.ryanair.com/bg-bg/res/currencies

Discounts

https://api.ryanair.com/discount/3/discounts

Markets

https://ryanair.com/ie/en.markets.json https://www.ryanair.com/content/ryanair.markets.json

Requires auth/session

https://desktopapps.ryanair.com/en-gb/checkin/checkinpassengers

@maximdyatel
Copy link

@tkon99
What API you used for collecting Easyjet prices?

@tkon99
Copy link

tkon99 commented Sep 18, 2019

The same one as the website, you can change the date range they use to get the whole year for a specific route at once iirc

@alexcagliari87
Copy link

@TDvorian I was collecting daily Ryanair and Easyjet prices but abandoned the project in the end. You can get around ratelimiting entirely by using a paid (but cheap) proxy, I was using luminati at the time. I set it up to change IP's every 5 requests and to retry http errors automatically and with a new IP. The good thing is that the proxy manager does it for you and all your program needs to do is use one local http proxy. For me it cost about $5/m in the end. Another thing I did was that I saved all the "other currencies" (other than EUR) in the table as well as an estimate in EUR to allow easier (and much faster) search results. Maybe that's useful for you too, if you're not already doing that.

Anyway, it would be great to have a joint database, since, as you said, it saves resources. I have another idea that uses price data and I could also use it for academic purposes as I'm taking some data courses right now. I hope there's someone who has Vueling/Eurowings/Transavia data as well.

I spoke with a Luminati employee this morning and now the minimum price is about 500 usd/month...Do you know a cheap service that we can use to override api limit?

@tkon99
Copy link

tkon99 commented Sep 18, 2019

Are you sure? Maybe for residential IP's yes but for shared ones definitely not. See: https://luminati.io/pricing
I was using: Datacenter Proxies - Pay per GB

@alexcagliari
Copy link

alexcagliari commented Sep 18, 2019 via email

@tkon99
Copy link

tkon99 commented Sep 18, 2019

Unlimited, if you pay per GB you can use as many as you want.
Looking at alternative the luminati $0.50 per GB is really unbeatable, scraping services are too small for this usecase (tens of millions of requests per month) so only big rotating proxies will work. I found https://www.proxyrotator.com/ which seems good (it's a fixed price at least) and since this workload doesn't have to be x-threaded (because we can just crawl prices during the entire day) their cheapest plan seems a good option.

@alexcagliari
Copy link

alexcagliari commented Sep 18, 2019 via email

@maximdyatel
Copy link

The same one as the website, you can change the date range they use to get the whole year for a specific route at once iirc

Could you be more specific? Thank you

@psirens
Copy link

psirens commented Sep 21, 2019

My solution was a cron job once per minute. There are approx 2300 easyjet route urls and 4700 ryanair. Each time it downloads one easyjet route, and 6 months of a ryanair route. So route data can be up to three days behind but good enough for my purposes, and reliable. Initially I collected every route within 24hrs but requests started being dropped due to rate-limiting causing issues. The database has reached 400mb but I guess I have never looked to remove historic data.

@alexcagliari87
Copy link

Hi guys,
i have a data discrepancy problem between these 2 entrypoints:

  1. https://www.ryanair.com/api/farfnd/3/oneWayFares/CAG/BRI/availabilities
  2. https://www.ryanair.com/api/timtbl/3/schedules/BRI/CAG/years/2020/months/03

If you see the results from the first API yu can see that the flights, in this case, are scheduled until October 2020.
If instead the second entrypoint is invoked, the service will run until month 03 (March) ... from month 04 onwards he returns "{" code ":" ResourceNotFound "," message ":" Resource not found "}".
Do any of you know an entrypoint from which you can get month-to-month schedules updated? I necessarily need the flight number and the scheduled time..
@vool @maximdyatel @mtrovo @tkon99

@caltv
Copy link

caltv commented Nov 12, 2019

Seeing some weird behaviour from availability over the last week, it switches between a higher and lower fare every few minutes but the website never changes

https://desktopapps.ryanair.com/en-gb/availability?RoundTrip=false&DateOut=2020-03-02&Destination=DUB&Origin=BCN&ToUs=AGREED

e.g endpoint shows "amount":25.570000000

website shows

Screenshot 2019-11-12 at 08 37 47

@caltv
Copy link

caltv commented Nov 13, 2019

And today the fare on the website switched to the lower fare that the API was alternating between last week...

@wesleygas
Copy link

It seems that almost all endpoints except for schedules, availability and farefinder are returning 404/401. Months passed since I've created my account and I still haven't heard from them.

I'm especially interested in the Airport data, does anyone has any lead about how to get it?

@barrypearseburke
Copy link

barrypearseburke commented Feb 1, 2020

Hi Guys
Ive been using
https://www.ryanair.com/api/farfnd/3/oneWayFares/ORIGIN_AIRPORT_CODE/DEST_AIRPORT_CODE/cheapestPerDay?outboundDateFrom=2020-02-01&outboundDateTo=2021-02-01
to give me the cheapest rates per day.
The api is seem cheaper for a lot of flights compared to the website from what i can see. Anybody else use this and get this?

@justcuri0us
Copy link

Hi Guys,
I came across this gist, and have been having a play with it.
I'm particularly interested in the One Way fare finder, but I want to send a request for a specific route (STN - RBA) and get the fares for all flights falling between a specified range of dates. I'm using this url:
https://services-api.ryanair.com/farfnd/3/oneWayFares?&departureAirportIataCode=STN&arrivalAirportIataCode=RBA&language=en&limit=64&market=en-gb&offset=0&outboundDepartureDateFrom=2023-11-04&outboundDepartureDateTo=2023-11-30&priceValueTo=150
but it's only returning the first available flight. Is there a way to get it to return all flights within the date range, or will I have to make multiple api calls?

Also, what does the offset do?

@justcuri0us
Copy link

Perfect, this seems to be exactly what I'm looking for. Thanks very much !

@ajanderson1
Copy link

Anyway, it would be great to have a joint database, since, as you said, it saves resources. I have another idea that uses price data and I could also use it for academic purposes as I'm taking some data courses right now. I hope there's someone who has Vueling/Eurowings/Transavia data as well.

I am playing with collating some ryanair flight price data (off the back of mere curiosity).
I wonder if anyone else is/has done likewise and would be interested to share?

@nudabagana
Copy link

Hey! Might be a dumb question, but.. how do you find what endpoints exist and what they accept? For example this v4 that @psirens showed. Is there a way to find all possible variables and endpoints?

@ajanderson1
Copy link

ajanderson1 commented Jul 24, 2023

@nudabagana - The website uses these API endpoints during the booking process, so you can look for these requests in a browser dev console (in Chrome: Developer Tools -> Network)

This serves as a good reference also:
https://postman.com/hakkotsu/workspace/ryanair

@ivallesp
Copy link

How does the limit and offset arguments work? How do I advance pages?

@federicomarollatouch
Copy link

Hi guys,
i need the availability API but it always responds with "Availability declined". I tried using the Ryanair website to search for flights and then using the browser to call the API and it worked. In practice it seems to require cookies that are saved with the first search through their site. Has anyone noticed this and/or how did they fix it?

https://www.ryanair.com/api/booking/v4/en-gb/availability?ADT=1&TEEN=0&CHD=0&INF=0&Origin=PMO&Destination=MXP&promoCode=&IncludeConnectingFlights=false&Disc=0&DateOut=2024-02-16&FlexDaysBeforeOut=2&FlexDaysOut=2&DateIn=&FlexDaysBeforeIn=2&FlexDaysIn=2&RoundTrip=false&ToUs=AGREED

@VSIND
Copy link

VSIND commented Feb 8, 2024

If you're still searching for an API, check out https://rapidapi.com/DataCrawler/api/ryanair2. I found it to be effective.

@dankoden
Copy link

Hi guys, all endpoints are not aviablle ? Give me please actual links or link for actual doc 🙏

@Kacper99
Copy link

@dankoden Might be that your IP address is blocked by Ryanair if you're hitting the endpoints too frequently. AFAIK There are no official docs

@KrzDom
Copy link

KrzDom commented Feb 14, 2024

Anyway, it would be great to have a joint database, since, as you said, it saves resources. I have another idea that uses price data and I could also use it for academic purposes as I'm taking some data courses right now. I hope there's someone who has Vueling/Eurowings/Transavia data as well.

I am playing with collating some ryanair flight price data (off the back of mere curiosity). I wonder if anyone else is/has done likewise and would be interested to share?

Same here. In the last year I flew a few times with ryanair and while booking the prices fluctuated like crazy sometime. I want to get the development of the fare for the same route over the time of 100 days. The modul ryanair-py seems to be working quite well. Trying to play around right now.
Would be happy to share as soon as I get the things working.

@artpetro
Copy link

I collected flight prices (outbound and return) for 8 months for 4 (later 5) flight connections. I queried the prices approximately every 30 minutes, resulting in a database of approximately 8 million flight prices.

To understand the cause of price changes (or how exactly Ryanair's pricing algorithm works), additional data is needed. For example, the number of available seats for a specific flight. It is highly likely that additional variables are involved in price calculation, such as flight date, time, or even demand (how often users view a particular connection). However, Ryanair does not provide this additional information through the API.

Nevertheless, with the collected data, it is already possible to conduct various analyses.

I have stored the data in both SQL and Influx databases. If anyone is interested, I am happy to provide access to it.

@mtrovo
Copy link

mtrovo commented Mar 4, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment