Ryanair, Hamiltonian Cycles, and using graph theory to find cheap flights
blog.jonlu.ca
blog.jonlu.ca
https://matrix.itasoftware.com/ to get detailed fare rules & restrictions
https://www.expertflyer.com & https://itunes.apple.com/us/app/seat-alerts/id533533342
https://www.checkmytrip.com/ allows entering name & booking-reference and gives all detail
https://tripcase.com will use name + booking-reference to get detailed PNR information including the first name
https://www.fly.kiev.ua can make a flight reservation without a payment, still gives an 6char booking-reference
But I agree that this is till a problem for airline inventory management, and an online travel agency should definitely not be opening this feature to the general public!
There are several usecases that require unpaid reservations, the most common one nowadays is corporate travel, when you need to integrate approval flows - the approval step will be between the reservation and the ticketing.
Like just about every industry, there is a world of complexity hidden underneath the surface :)
http://www.ai.mit.edu/courses/6.034f/psets/ps1/airtravel.pdf
Edit: I missed that someone had already linked to them - https://news.ycombinator.com/item?id=18531203
I've been involved in solving a similar problem, on the award flight search side. There are about 12,000 direct commercial routes offering award redemption, and the airline websites have different limitations: some only let you search one-way or only round-trip, or only one cabin at a time, or only give hints about available quantities. So you have to formulate the minimal set of queries that will give you complete information. And then given an origin and destination, figure out the valid routings, like you've discovered.
The other really interesting challenge with many of the airline websites are the extreme measures they go to, to block you from crawling their data. My favorite is British Airways, which runs 800 different tests to fingerprint your browser, from generating audio files to drawing to an off-screen canvas, all inside a custom VM with encrypted byte code. (Similar to how I've seen Google obfuscate the ReCaptcha code base.) Surprising to hear that Ryanair makes it so easy to access prices in comparison!
Ryanair is the kind of airline that I would suspect might run their own stack, and therefore not have the same cost structure.
2017:
* American Airlines profit: 7.6 Billion USD
* United profit: 7.1 Billion USD
* Delta Airlines profit: 4.7 Billion USD
* Southwest: 2.2 Billion USD
Total operating revenues: 42.2B
Net income: 1.90B
For a profit of 4.5%. Where are you getting your numbers from?
https://americanairlines.gcs-web.com/static-files/17cae9f4-5...
Can you say how access to an airline's flight catalog works and what that business model looks like? Is it pay per search for these third party search engines?
Now the pricing can be complex, a good first order approximation is that you pay a fee for access to the GDS, that varies depending on how many queries you are doing. For a traditional travel agency this fee will be very low, obviously for a major OLTA it will be big. However, for every booking that you perform, the GDS will give back a sizable amount of the distribution fee that it took (we are talking several euros per flight here). So as long as your "look to book" ratio is reasonable, the access costs will be small compared to the incentives you make.
Edit: Why are airlines pushing for the "direct" channels? Because it means they can cut out the middleman of course, the GDS. The problem is that this makes it hard for a travel agency to connect to every airline - the fixed costs of setting up pipes to every airline would be astronomical. And there will be an incentive for agencies to negotiate preferential deals with certain airlines. Both of these factors are obviously negative for the end user, travelers. It's a similar question to the whole net neutrality thing
Sabre for example was originally American Airlines' system, and Amadeus was initially created by a consortium of european airlines in reaction to the threat of american hegemony on this market. They are now far more profitable than their parents :)
They were all originally heavy mainframe operations (IBM TPF - which was quite an impressive system... in the 80s), but there is a transition to modern architectures. Amadeus have completed the transition to Linux boxes, Sabre are still ongoing. They both have some of the biggest civilian data centres in the world
I belong to a private slack with over 80 folks doing this as a hobby so we can do first class/business class international travel and hotel stays for free.
If anyone is into it as as well and would like to join a private Slack and contribute, hit me up. A big majority of the group are engineers.
NOTE: this group is for advanced folks only who have been doing this for a while. Think "r/churning level 2"
jashua DOT sf AT gmail
I miss the good old days when manufactured spend was as easy as ordering 10k in sacajawea coins from the treasury.
i'd be interested as well. could you add me to the slack? thank you
barbadosmercury@protonmail.com
We created some data structures that allow almost instant searching of such routes and we have scrapers running regularly on Ryanair, easyJet, wizzair, and Transavia. You can query the algorithm here: https://algo.tripchemy.com/routes/TSF?year=2019&month=02&day...
Where you want to have a trip of 20 days (4 lovatons, 5 flights) from 10 Feb. Starting and returning to TSF. We also added some scoring for niceness of airports.
- Instead of graph algorithms, we use more algorithms that originate from databases
- Currently the bottleneck is improving server parallelism and filtering/limiting the amount of results (cause the algorithm can send up millions and millions of rows back). Which in a sense is also a frontend problem: which locations do you want to visit?
If I'm in Antwerp, I really don't care much if I have to depart from/return to Brussels Zaventem, Charleroi or Eindhoven, it just doesn't matter. And if the fare is sufficiently cheaper, then Amsterdam, Düsseldorf, Beauvais or Paris is fine too. And I don't have to return to the airport I left from. Typically it's the same for my destination in the case of holidays.
But I still haven't found websites which allowed to do that easily, apart from Google Flights maybe.
Edit: kayak performs the same.
- the basic mode allows you to provide sets of origin and destination locations / countries / airports, and a range of dates; gives you results with direct and transfer flights (including all those ryanair+wizzair/easyjet/another-ryanair combos, etc.) and so on - check out how the interface looks like;
- advanced mode allows you to specify multiple hops, with time intervals / date ranges for how long you want to stay at those hops.
If someone were to provide a (paid, etc.) service and some decent platform-agnostic interface (for me personally, an API would do, too:), that'd be super amazing.
My base was Paris and I wanted to go to Stockholm for example. The direct Ryanair flight from Paris to Stockholm was expensive (Let's say 150 euros). I would manage to find two cheap flights that go for example from Paris to Rome and another one from Rome to Stockholm, both of those for 10 Euros each. The key is to use the big Ryanair hubs as gateway (Milan and Brussels would work really well back in the days)
I would basically lose my whole day traveling to save 80 euros. Sometimes it backfires though, and when it backfires you are on your own. Once my first flight got super delayed, and I got stuck in Milan for the night. I managed to have Ryanair rebook my second flight for the day.
I think Ryanair wants to be able to propose high prices for direct flights and prevent people from finding those cheaper indirect flights. That's why they don't make it easy to find them.
However if you book direct through these sites you are going to get the lowest ticketing class. With Ryanair that means you can't take anything more than a small bag onboard (since November you need to pay for a 10kg cabin bag, you can't drop it at the gate for free), and if you are in a group you will not be sitting next to each other, so it may be best to book directly through the airline's site.
The simple reason why Ryanair don't let you book multi-leg flights directly is because they don't want to be responsible for you missing a connection. It's ironic though, as compared to national European airlines I find their punctuality a lot better.
It's a flight search engine that let you filter what connections there are between the cities you want to travel and help you book a single flight that is going to stay there as a stopover. Sometimes it finds some weird flights that doesn't make any sense if you're just trying to reach your destination but if you're just traveling it's quite nice.
Last time I used it I found a overseas flight that stopped in Lisbon but on the way back made a connection in Bologna that was +200 cheaper then the normal flight.
http://www.cleverlayover.com also never worked for me. Good idea, bad executed.
Regarding travel websites, you may want to check out:
https://www.kiwi.com Sometimes finds insane travel routes.
http://www.vayama.com Lets me sometimes stay in Ethiopia for free a day when I fly from Asia to Europe. Does not show up on any other website I consult.
I have also had luck at times with
http://www.expedia.com (yes, sometimes an old dog still does the trick)
Visualizing the DFS at the last step was good enough :) Maybe in the future!
For multi city flights, I've found Google flights does things really well from a UX standpoint, and I believe they support Ryanair.
Honestly I regularly see these type of ridiculous options on all of the major travel sights as well as stuff like 3 and 4 layovers. Do you have any insight on why this happens or what such absurd results are even presented? I regularly see things like 54 hour travel time for for international flights.
Even services that "allegedly" advertise they have that, still require manually clicking every day combination.
I'd fly more often if it was easy. The few times I tried, it would be just faster to drive than go through all possible 900+ day combinations.
I'd assume it's two reasons: first that it's hard to get the UX right. There are going to wind up being so many combinations of possibilities that I'm not sure how you'd even sort them in a meaningful way. (E.g. it's unlikely price from lowest to highest will be the most meaningful, the lowest price alone might wind up having 100 different date combinations, so figuring out how to present the options in a meaningful way might just be something we haven't figured out yet.)
But second, it might just be too computationally expensive. You see how slow sites already are just for searching a single date, because there are so many possible combinations of connections to consider, and so many fare rules to calculate prices out of. Now a 2-week range for both start and end results in taking almost 200 times longer. It just might not be feasible, or worth the programming effort. I remember a blog post a long time ago from Kayak (I think?) talking about the insane effort that was required to cache flight fares just so show simple fare comparisons across a few days... and it only worked for the flights that were more commonly searched for.
I think the computational cost is a far bigger problem for these kinds of services than the UX.
These are the results for 'cheapest month' and 'everywhere' from DC
https://www.skyscanner.com/transport/flights-from/wasa/?adul...
It was sort of hidden for a while because we were testing other features, but it's back on the main search screen now.
Disclaimer: I work for Hopper
Edit: Forgot to mention this feature is only available on iOS at the moment...
We are building our search engine (focus on EU low-cost mainly) which allow what you looking for (even if you want to search this) for example: A -> B [stay 2-6] -> C [stay 10-12] -> A
Basically, to find a cycle of length 6, you repeatedly color every node in one of 6 colors at random. Then you look for a cycle with all different colored nodes, which can be done efficiently using dynamic programming.
You succeed in finding a particular 6 cycle exactly if each node in it has gotten a different color, but the chance of this is not bad. In the case of the OP it's even better, since there are probably many such cycles to find.
If you are looking to take this further, you can find some more info on Ryanair API endpoints here: