Waarom (en hoe) ik zelf een ticketzoekmachine bouwde
Ik probeer de beste ticketzoekmachine ooit te maken en ben aardig onderwerg. Je leest in deze blogpost hoe ver onderweg ik ben.
Ik heb verstand van het boeken van vliegtickets. Het is niet zo moeilijk om daar zo stellig over te zijn vanwege twee redenen: de meeste mensen hebben er juist geen verstand van en ik heb de afgelopen jaren ontzettend veel tijd besteed aan het perfectioneren van deze eigenschap. Dan behoor je al gauw tot het 99e percentiel van de vliegticketsnappers. De samenvatting van mijn kennis bundelde ik in het boek Thuisblijven is duurder en dat boek is een bescheiden succes geworden. Sommige mensen kochten het.
Dat boek is niet voor niets meer dan 250 pagina’s lang. Om goed vliegtickets te kunnen boeken moet je maar niet één trucje kennen. Er is ook niet één website waar de beste deals te vinden zijn. Dat vind ik niet alleen jammer, de lezers of potentiële lezers van mijn boek ook. Die komen dan van een koude kermis thuis. Ze moeten stuk voor stuk moeite gaan zitten doen om ergens goed in te worden. En—ziekte van de moderne tijd—moeite doen kost zoveel moeite.
Als ik besluit dat ik ergens naartoe wil vliegen, dan zoek ik snel via Google Flights welke data er voordelige tarieven zijn. Vervolgens onthoud ik die data, en doe deze specifieke zoekopdracht op Momondo, omdat deze website mij doorgaans een voordelig tarief geeft. Ik check voor de zekerheid ook nog even Skycanner en, als het een enkeltje van minder dan €100 betreft, check ik ook Jetcost, omdat deze website al sinds jaar en dag een bug heeft waardoor betalen met American Express -€18 kost (en je dus op ieder ticket korting krijgt). Als ik een voordelig tarief heb gevonden, gebruik ik een Chrome plugin van Where to credit om te kijken bij Expedia welke boekingsklasse het betreft en dus hoeveel punten ik waar kan verdienen. En ik check op Matrix nog even de ticketvoorwaarden of ik er misschien een andere voordeligere route (met meer of langere stops) kan maken met dezelfde voorwaarden. Vervolgens hoop ik me te herinneren welke airline gratis stopovers aanbiedt met eventueel gratis stopover hotels en maaltijden. Ja, dan weet ik bijna zeker dat ik de beste deal heb gevonden, maar boek ik het ticket meestal niet. Ik vind het vooral leuk om te zoeken, niet om te boeken.
En dit gaat allemaal redelijk automatisch en zonder al te veel moeite, maar dat komt dus omdat ik het al jaren doe.
Ik snap heus wel dat zelfs de lezers van Thuisblijven is duurder na die leesinvestering nog even de 10.000-hour-rule moeten toepassen om hetzelfde te presteren.
Bovendien is er ook nog een groep mensen die nog steeds verwacht dat er één website is waar je gewoon het beste kunt zie welke vlucht het voordeligste is, maar ook hoe chill de airline en het toestel zijn, waarom een korte of lange overstap wel of niet handig is, welke boekingsklasse het ticket heeft, of en hoe en waar je punten spaart, hoeveel en wat je er mee kunt en waar bovendien ook nog informatie te vinden is over de bestemming waar je naartoe wilt of vergelijkbare bestemmingen kunt zien, die voldoen aan je eisen maar voordeliger zijn.
Die website heb ik niet gemaakt. Maar ik ben er wel mee gestart.
Ik weet niets van programmeren maar ik maak wel al jaren websites. Meer dan de helft van mijn leven geleden, anno 2000, leerde ik websites maken van mijn klasgenoot Remco. En ik leerde het weer aan mijn broertje. En terwijl Remco en mijn broertje zich verder ontwikkelden, beperkte mijn websitemaakkennis zich destijds tot HTML en CSS en 20 jaar later nog steeds tot HTML en CSS, maar ook wat Wordpress en ook wat in elkaar geknoop met Zapier. Dus nee, ik weet er niet zoveel van en ik kan zeker niet je printer/e-mail/smartphone/staafmixer repareren.
Maar ik heb wel mensen om me heen die er verstand van hebben en ik wil graag m’n best doen als ik iets interessant vind en wil leren. Zo leerde ik immers ook goed te worden in vliegtickets boeken (en kamerplanten en diëten belachelijk maken). Dus ik besloot dat ik die bovengenoemde ideale zoekmachine maar moest maken.
Maar hoe dan?
Ik zei tegen mijn internetvrienden Marco, Peter en Flowers dat ik een idee had voor een zoekmachine voor de 5% van de mensen die niet per se tussen datum X en Y naar plek Z willen vliegen en ze raadden me aan om eerst een API te kiezen en de resultaten van te tonen. Maar goed, ik wist op dat moment natuurlijk alleen dat een API ‘iets met websites’ was dus dat was de eerste uitdaging. Gelukkig waren ze niet te beroerd om me te helpen en had ik nog zeker wat aan mijn in 2003 geplante HTML-en-CSS-kennis. En als mijn internetvrienden (een paar tijdzones verderop in Zuidoost-Azië) sliepen, dan was er ook nog de hulplijn mijn broertje dat zich immers ook had ontwikkeld tot fulltime en professioneel nerdje. Top.
Ik vond dat Kiwi (een vliegticketzoekmachine en OTA—Online Travel Agency) een API had waarmee het ontwikkelaars liet zoeken in z’n data. Dat was voor Kiwi immers ook handig, want zo maakten anderen manieren om verkeer naar die website te sturen. Deze API zou ik ook gaan gebruiken. En deze API gebruik ik op het moment van schrijven nog steeds. Dus mijn ticketzoekmachine toont momenteel alléén de data en prijzen van Kiwi. Maar daar kom ik zo wel op.
De eerste stap die ik zette was het maken van een script. Dat script vulde ik met twee datapunten: de IATA-code van een aankomstluchthaven en de IATA-code van een vertrekluchthaven. En oja, van dat script snapte ik geen ene moer, maar dat moest ik van mijn internetvrienden gewoon even doen om de boel werkende te krijgen. Ik klooide wat aan met veel hulp en plotseling had ik een knopje gemaakt en als ik op dat knopje drukte, kwam er een woord op het scherm:
Denpasar
Ik voelde me als iedere computernerd die ‘Hello World’ op een scherm kan laten zien met een stukje code. Ik had namelijk ergens ingevoerd dat ik tussen AMS en DPS wilde vliegen en gevraagd aan het script om de aankomstluchthaven te tonen. Dat was gelukt. Vanaf nu kon ik verder.
Omdat ik wist hoe je de aankomstluchthaven kon tonen, wist ik ook hoe je de vertrekluchthaven kon tonen. En omdat ik wist hoe je beide gegevens van het eerste resultaat kon tonen, wist ik ook hoe je gegevens van de overige resultaten kon tonen. En omdat ik wist hoe je resultaten kon tonen, wist ik ook hoe je prijzen kon tonen. En zo had ik opeens een lijstje gemaakt met routes en prijzen. Maar nog zonder dat iemand een datum in kon voeren.
Vanaf hier kwam ik in een flow. Ik had aardig wat tijd te besteden en werd een paar dagen volledig opgezogen door dit project. Ieder klein stapje in het project dat lukte zorgde ervoor dat ik die flow bleef. Voordat ik het wist had ik een piepklein zoekmachinetje gemaakt: vul een vertrekluchthaven en aankomstluchthaven in en een vertrekdatum en ik toon je resultaten. Wat vet.
De dagen en weken die volgden probeerde ik steeds meer dingen te verbeteren. Mijn vier(!) hulplijnen (Marco, Peter, Flowers en m’n broertje) waren niet te beroerd om deze n00b te helpen. Maar inmiddels snapte ik zelf ook steeds beter wat ik aan het maken was. En omdat ik kleine delen begon te snappen, kon ik ook steeds beter googelen hoe ik een probleem moest oplossen.
En nu is er een werkende zoekmachine met wat basisfunctionaliteiten. Deze heet Yelmair.
Op Yelmair kun je nu vliegtickets vinden van A (of meerdere vertrekluchthavens of zelfs hele landen, regio’s en continenten) van een datum (of periode) naar B (of meerdere luchthavens of landen, regio’s en continenten) en eventueel terug op een datum (of periode). En dan zie je in het resultaat ook in welk toestel je vliegt en wat de boekingsklasse is.
Dus in principe kun je gewoon zoeken van West-Europa en Praag naar Zuid-Oost Azië en Shanghai tussen nu en 1 mei en retour tussen 1 en 28 oktober. Dat is al iets wat maar weinig andere zoekmachines kunnen. Link hier.
Maar ik ben nog niet klaar. Op dit moment krijg ik data van Kiwi dus is er geen onderscheid in prijzen. Maar ik wil later dat je met Yelmair alle routes kunt zoeken die je wilt en dat partijen als Kiwi (maar ook Expedia of bijvoorbeeld Budgetair) me kunnen vertellen voor welke prijs je het ticket bij hen kan boeken. Ik wil kunnen tonen hoeveel punten je waar kunt sparen (en wat je er aan hebt), ik wil je vertellen over gratis stopoverhotels (edit: zit er inmiddels in), over airlines die je gratis stops van meerdere dagen in het ticket toelaten, welk deel van je route voordelig is en hoe je daar meer gebruik van kunt maken, welke bestemmingen vergelijkbaar maar voordeliger zijn, welke periodes voor je bestemming voordeliger zijn, welke airlines en toestellen meer beenruimte bieden, waar maaltijden aan boord gratis zijn en nog veel meer (wat er uit mijn hoofd op papier is gezet, vind je hier en wat ik heb gedaan, vind je hier).
Kortom: ik ben nog wel even bezig. Maar ál deze informatie is beschikbaar, er is alleen (nog) niemand die het beschikbaar heeft gemaakt op één plek. Ik denk omdat de grote massa toch zo goedkoop en zo snel mogelijk van A naar B wil (en massa is kassa) en er niet zoveel bedrijven iets maken voor die 5% die andere dingen belangrijk vinden. Daar maak ik een website voor.
Ik probeer het allemaal te integreren in Yelmair. Maar ik ben geen programmeur, dus het duurt even.
Je kunt dit project supporten door simpelweg Yelmair te gebruiken, door m’n boek aan te schaffen of door me een bericht te sturen op Telegram.
**
Programmeurs en andere computernerdjes zullen het helemaal niet speciaal vinden en niet-nerdjes die misschien nog net weten wat een e-mail is wel. Ik zit er precies tussenin: ik weet dat wat ik heb gemaakt veel beter, uitgebreider, slimmer, logischer en anders kan maar ik vind het tegelijk wonderlijk om te beseffen dat ik iets nieuws heb geleerd en het werkend heb gekregen. Dit besef heeft ervoor gezorgd dat ik zelfs denk dat ik ooit kan maken wat ik wil maken. Dat zou toch tof zijn.
Naschrift na anderhalf jaar
Deze website werd gelanceerd precies voor een coronapandemie die nogal wat roet in het eten van reizigers gooide (hoewel we natuurlijk gewoon nog steeds op reis kunnen). De enige dagelijkse gebruiker van Yelmair lijk ikzelf te zijn. Het is mijn favoriete tool voor het snel vinden van voordelige routes (en de hoeveelheid punten die ik kan sparen per vlucht).