Situatie
Aplicații precum Google Flights, Skyscanner sau Kayak par extrem de complicate la prima vedere. Compară sute de rute, aeroporturi, date și prețuri și încearcă să găsească cea mai bună combinație pentru utilizator.
Vestea bună este că nu trebuie să construiești un nou Skyscanner ca să lansezi ceva util.
Poți crea un MVP care caută zboruri ieftine, identifică automat ofertele interesante și folosește AI pentru a răspunde la întrebări precum:
„Unde pot zbura din București în următoarele două luni cu mai puțin de 100 €?”
sau:
„Găsește-mi un city break ieftin în Italia, fără escală, pentru 3-4 zile.”
În acest articol îți arăt cum aș construi o astfel de aplicație folosind Next.js, API-uri de zboruri cu acces gratuit sau free tier, Supabase și un model AI.
Notă: „API gratuit” nu înseamnă întotdeauna „gratuit și nelimitat”. Unele servicii oferă doar un free tier, au limite de trafic sau permit utilizarea gratuită doar pentru proiecte personale. Verifică termenii înainte să transformi proiectul într-un produs comercial.
Solutie
1. Ce construim, mai exact?
Să presupunem că aplicația noastră se numește FlyCheap AI.
Utilizatorul intră pe site și spune:
Plecare: București
Buget: 120 €
Perioadă: următoarele 60 de zile
Durată: 3-5 zile
Preferințe: zbor direct
Aplicația caută destinațiile disponibile și poate afișa ceva de genul:
Roma — 49 €
București → Roma
3 nopți
Scor ofertă: 9,4/10
Milano — 58 €
București → Milano
4 nopți
Scor ofertă: 8,9/10
Bologna — 67 €
București → Bologna
3 nopți
Scor ofertă: 8,5/10
AI-ul poate apoi genera explicații:
„Roma este cea mai bună ofertă dintre rezultatele actuale. Prețul este semnificativ mai mic decât majoritatea tarifelor găsite pentru această rută, iar zborul este direct.”
Practic, aplicația are trei componente importante:
date despre zboruri → algoritm de analiză → interfață AI
2. De unde luăm prețurile zborurilor?
Aici apare cea mai dificilă parte.
Există foarte multe API-uri cu informații despre avioane și aeroporturi, dar mult mai puține API-uri gratuite care îți oferă prețuri reale pentru bilete.
Pentru un MVP, una dintre variantele interesante este Aviasales Data API prin Travelpayouts.
API-ul poate returna prețuri minime, destinații populare și oferte speciale. Important de înțeles este că Data API folosește prețuri din cache bazate pe căutările utilizatorilor Aviasales, nu un inventar complet de tarife în timp real. Datele pot rămâne în cache între aproximativ 2 și 7 zile, în funcție de endpoint.
Asta îl face foarte bun pentru lucruri precum:
„Care sunt cele mai ieftine destinații din București luna viitoare?”
dar mai puțin potrivit pentru:
„Rezervă-mi exact acest zbor la 18:35 la prețul afișat acum.”
Există și un Flight Search API în timp real, însă în prezent accesul este destinat proiectelor care au cel puțin 50.000 de utilizatori activi lunar. Pentru un proiect nou, Travelpayouts recomandă Data API.
Pentru MVP, cached prices sunt suficiente.
3. Ce facem cu Aviationstack și OpenSky?
S-ar putea să găsești rapid pe Google API-uri precum Aviationstack sau OpenSky.
Sunt utile, dar rezolvă altă problemă.
Aviationstack oferă informații despre zboruri, aeroporturi, companii aeriene și statusul curselor. În momentul redactării acestui articol, planul gratuit oferă 100 de request-uri pe lună și este destinat utilizării personale; pentru utilizare comercială există planuri plătite.
OpenSky Network este excelent pentru date despre poziția aeronavelor și trafic aerian. API-ul poate fi folosit gratuit pentru aplicații personale și non-profit, dar utilizarea comercială necesită acordul OpenSky.
Cu alte cuvinte:
Travelpayouts / Aviasales → prețuri și oportunități
Aviationstack → informații operaționale despre zboruri
OpenSky → poziția și mișcarea aeronavelor
Dacă obiectivul tău principal este să găsești bilete ieftine, începe cu datele de preț.
4. Stack-ul pe care l-aș folosi
Pentru un MVP aș păstra lucrurile foarte simple:
Frontend + backend: Next.js
Database: Supabase/PostgreSQL
Flight prices: Aviasales Data API
AI: Gemini API
Hosting: Vercel sau un serviciu similar
Cron jobs: pentru verificarea periodică a prețurilor
Supabase este foarte potrivit pentru un proiect mic deoarece planul Free include în prezent două proiecte gratuite, PostgreSQL, autentificare și o cotă generoasă pentru Edge Functions și Realtime.
Pentru AI putem folosi Gemini Developer API. Google oferă în continuare un free tier pentru anumite modele, cu limite de utilizare, ceea ce este suficient pentru prototipuri și proiecte mici.
5. Prima funcție: caută zborurile ieftine
Un request către Aviasales Data API poate arăta conceptual astfel:
const url = new URL(
"https://api.travelpayouts.com/aviasales/v3/prices_for_dates"
);
url.searchParams.set("origin", "BUH");
url.searchParams.set("destination", "ROM");
url.searchParams.set("departure_at", "2026-10");
url.searchParams.set("currency", "eur");
url.searchParams.set("sorting", "price");
url.searchParams.set("limit", "20");
url.searchParams.set("token", process.env.TRAVELPAYOUTS_TOKEN!);
const response = await fetch(url);
const flights = await response.json();
În producție este mai bine să păstrezi cheia API pe server și să nu o expui direct în browser.
Răspunsul poate conține informații precum aeroportul de plecare, destinația, data și prețul identificat.
Documentația Aviasales oferă inclusiv endpoint-uri pentru bilete ieftine pe anumite date, intervale de preț și oferte speciale.
6. Secretul aplicației nu este API-ul. Este algoritmul.
Dacă aplicația afișează pur și simplu:
Roma — 50 €
Paris — 80 €
Madrid — 90 €
nu ai construit mare lucru.
Partea interesantă apare atunci când începi să colectezi prețurile în baza ta de date.
De exemplu:
BUH → ROM
49 €
62 €
58 €
71 €
54 €
65 €
52 €
După câteva săptămâni poți calcula prețul median pentru rută.
Să presupunem:
Preț median = 64 €
Preț actual = 49 €
Reducerea relativă ar fi:
(64 - 49) / 64 = 23,4%
Acum aplicația poate spune:
„Acest zbor este cu aproximativ 23% sub prețul observat în mod obișnuit.”
Aici începe să apară adevărata valoare a produsului.
7. Creează un „Deal Score”
Poți merge mai departe și calcula un scor între 0 și 100.
De exemplu:
Deal Score =
40% × abaterea față de prețul median
+
25% × prețul absolut
+
15% × zbor direct
+
10% × ore bune de plecare
+
10% × durata city-break-ului
Un zbor de 39 € care pleacă la ora 06:00 ar putea avea:
Preț: 10/10
Raport față de medie: 10/10
Oră: 5/10
Direct: 10/10
Deal Score: 91/100
Astfel, nu mai afișezi doar „zboruri ieftine”.
Afișezi oportunități.
8. Unde intervine AI-ul?
Un LLM nu ar trebui să inventeze prețurile.
Prețurile trebuie să vină din API și din baza ta de date.
AI-ul trebuie folosit ca un strat de interpretare peste aceste date.
De exemplu, backend-ul tău trimite modelului:
{
"origin": "Bucharest",
"budget": 100,
"results": [
{
"destination": "Rome",
"price": 49,
"median_price": 72,
"direct": true
},
{
"destination": "Milan",
"price": 55,
"median_price": 61,
"direct": true
}
]
}
Iar promptul poate fi:
Analizează aceste oferte de zbor.
Recomandă maximum 3 destinații.
Prioritizează:
1. diferența față de prețul obișnuit;
2. respectarea bugetului;
3. zborurile directe.
Nu inventa prețuri sau zboruri care nu există în date.
Răspunde în limba română.
AI-ul poate transforma apoi niște rânduri dintr-o bază de date într-o experiență mult mai naturală:
Roma pare cea mai bună alegere. Zborul costă 49 €, este direct și se află cu aproximativ 32% sub prețul median observat pentru această rută.
Asta este mult mai interesant decât un simplu tabel.
9. Adaugă căutare în limbaj natural
Aici aplicația începe să semene cu un adevărat produs AI.
În loc să ai 20 de filtre, utilizatorul poate scrie:
„Vreau să plec din București undeva unde este cald, pentru 4 zile, în octombrie. Buget maxim 120 € pentru avion.”
Modelul AI transformă mesajul într-o structură:
{
"origin": "BUH",
"max_price": 120,
"duration_min": 3,
"duration_max": 5,
"month": "2026-10",
"preferences": {
"weather": "warm"
}
}
Backend-ul folosește apoi aceste filtre pentru căutarea propriu-zisă.
Principiul important este:
AI-ul interpretează intenția. API-ul furnizează datele. Codul verifică regulile.
Nu invers.
10. Construiește un „Anywhere Search”
Aceasta ar putea fi cea mai atractivă funcție a aplicației.
Utilizatorul nu selectează destinația.
Introduce doar:
Plecare: București
Buget: 80 €
Perioadă: septembrie-octombrie
Aplicația caută zeci de destinații și returnează:
🇮🇹 Roma 49 €
🇮🇹 Milano 52 €
🇦🇹 Viena 57 €
🇵🇱 Cracovia 61 €
🇧🇪 Bruxelles 64 €
Apoi AI-ul le poate grupa:
Cel mai ieftin: Roma
Cel mai bun city break: Viena
Cel mai bun raport preț/oportunitate: Milano
Dintr-o simplă listă de tarife ai creat un fel de AI travel agent.
11. Salvează istoricul prețurilor
În Supabase poți avea un tabel foarte simplu:
create table flight_prices (
id bigint generated by default as identity primary key,
origin text,
destination text,
departure_date date,
return_date date,
price numeric,
currency text,
collected_at timestamptz default now()
);
De fiecare dată când verifici o rută, salvezi rezultatul.
După o perioadă vei putea calcula:
preț minim
preț maxim
mediană
medie
variația prețului
percentila prețului actual
Aceste date îți permit să construiești propriul sistem de identificare a ofertelor.
Și, foarte important, acesta devine treptat un avantaj pe care un simplu wrapper peste un API nu îl are.
12. Adaugă alerte de preț
Utilizatorul poate crea o regulă:
BUH → Barcelona
sub 70 €
septembrie-octombrie
Un cron job verifică periodic datele.
Dacă apare:
Barcelona — 58 €
aplicația trimite:
🔥 Preț bun găsit
București → Barcelona
58 € dus-întors
Preț observat obișnuit: 91 €
Deal Score: 94/100
Această funcție poate deveni principalul motiv pentru care utilizatorii revin în aplicație.
13. Nu verifica fiecare rută la fiecare minut
Una dintre primele greșeli pe care le poți face este să construiești ceva de genul:
100 aeroporturi
×
100 destinații
×
365 zile
×
verificare la fiecare 5 minute
Ai distruge imediat orice free tier.
În schimb, construiește un sistem inteligent de caching.
Dacă ai verificat recent:
BUH → FCO
10-14 octombrie
salvează rezultatul.
Dacă următorul utilizator caută aceeași combinație, returnează rezultatul din cache dacă este suficient de recent.
Asta înseamnă:
mai puține request-uri
aplicație mai rapidă
costuri mai mici
14. Cum arată arhitectura finală?
Într-o versiune simplificată:
UTILIZATOR
↓
Next.js
↓
AI intent parser
↓
Flight Search Service
↓
Cache / Supabase
↓
Flight API
↓
Deal Score Engine
↓
AI recommendation
↓
REZULTATE
Observă că AI-ul nu controlează tot sistemul.
Este doar o componentă.
Exact asta îți dorești.
Regulile importante — buget, date, preț, monedă, disponibilitate — trebuie procesate programatic.
15. MVP-ul pe care l-aș construi prima dată
Nu aș începe cu conturi premium, aplicație mobilă, 50 de filtre și rezervări.
Prima versiune ar face doar următorul lucru:
Utilizatorul introduce aeroportul de plecare, bugetul și perioada.
Aplicația caută cele mai ieftine destinații disponibile, le compară cu istoricul de prețuri și returnează 5-10 oportunități.
AI-ul explică primele trei.
Atât.
Dacă oamenii folosesc produsul, poți adăuga ulterior:
alerte de preț, conturi, favorite, recomandări personalizate, hoteluri, meteo, evenimente locale, estimări pentru costul complet al city-break-ului și eventual monetizare prin afiliere.
16. Cât te costă să construiești un astfel de proiect?
Pentru un prototip, costul poate fi foarte apropiat de zero.
Poți folosi un frontend open-source, Supabase Free pentru database și autentificare, un API de zboruri cu acces gratuit pentru MVP și free tier-ul unui model AI.
Totuși, odată ce produsul începe să primească trafic, trebuie să te aștepți să plătești pentru infrastructură și acces la date.
Și acesta este un lucru normal.
Scopul free tier-urilor nu este să rulezi gratuit o companie cu 100.000 de utilizatori.
Scopul lor este să poți testa ideea înainte să investești serios în ea.
Concluzie
Cea mai interesantă aplicație de zboruri ieftine pe care o poți construi nu este neapărat încă un motor de căutare.
Poate fi un sistem care răspunde la întrebarea:
„Este acesta cu adevărat un preț bun?”
API-urile îți oferă datele.
Baza ta de date îți construiește istoricul.
Algoritmul identifică anomaliile.
AI-ul transformă rezultatele într-o recomandare ușor de înțeles.
Iar produsul final ar putea permite unui utilizator să scrie pur și simplu:
„Am 150 € și un weekend liber luna viitoare. Unde pot pleca?”
și să primească în câteva secunde cele mai bune variante disponibile.
Acolo începe să devină mult mai interesant decât un simplu tabel cu bilete de avion.
Leave A Comment?