FlightCostairline route economicsRUENDE
FlightCost › Research

Which routes are attractive for an airline: Europe and India

FlightCostApp research, November 2026 · how airlines and airports evaluate a route, which data are openly available, and our rating of 1,357 European and 204 Indian pairs (to be updated)

◷ Queued for the calculatorThe calculator shows traffic on a pair; the pair rating and hints in Network mode are queued.
Currency:rate as of 2026-10-29, live on the website
The market is a city pairhow many people want to get from one city to another, including those who now fly via a connection or drive to a neighbouring airport1,2
Low-cost entry: market +10…44 %, fare −11…21 %a low-cost entrant grows the pair but pushes down yield for everyone3,4
No open fares by pairneither in Europe nor in India — so the rating rests on market size, growth and load factor5
7–8 % of routes close each yearin the EU in 2025, 1,127 routes out of about 14,800 were closed; of the UDAN routes, 7 % survived the end of the subsidy6,7

Which route to open is the central question of network planning. It is decided not by the aircraft but by the market: how many people want to fly between two cities, whether demand is growing, how many seats are already offered on the pair and by whom, whether the airports will let you in and what it costs. Below: how airlines and airports assess this, what of it can be measured from open data, and our rating of city pairs for Europe and India. It does not say 'fly here': it shows where the market is large, growing and already short of seats — where your own calculation should start.

How airlines evaluate a route

When an airline decides whether to open a route, it first assesses not the aircraft but the market: how many people want to travel from one city to another. What matters is the city pair, not the airport pair — a Dublin–Brussels flight does not substitute for London–Paris, but for a Londoner Stansted and Heathrow are interchangeable. A good illustration is Newcastle–Madrid: there is no direct flight, yet 81,000 people a year travel between Newcastle's catchment area and Madrid, and 12,000–14,000 of them each leave via Heathrow, Stansted, Gatwick, Manchester and Edinburgh. Ryanair, incidentally, has already been on this pair — from 2017 to 2018 — and left.1,2

For pairs with no flights yet, gravity models are used: demand grows with population, income and the economy at both ends and falls with distance and travel time; neighbouring airports within 200 km are taken into account too. Such a model on 1,228 Germany–Europe pairs explained 70 to 76 % of the variation, but price was not included — there were no data. Where a market is already served, carrier shares are estimated with the quality of service index (QSI): a non-stop flight, a convenient time and a larger aircraft score more points. But QSI only splits existing demand; it does not forecast its growth.8,9

Demand stimulation and falling yield

Market growth when a new, especially low-cost, carrier enters is called stimulation. On routes from London, Ryanair's arrival grew the market by 10–44 %, partly by taking passengers from British Airways. In the US, demand on 109 new Southwest markets rose by 28 % on average. The benchmark for a calculation is elasticity: −1.4 at route level but only −0.8 at national level. The difference is diversion: the UK CAA concluded that without low-cost carriers the national market would have grown almost as much, and their growth came largely at the expense of charters.3,10,11,12

The flip side of stimulation is falling yield. In Europe in 2016–2019, fares on pairs with a low-cost carrier were about 11 % lower, and the entry of a new low-cost carrier meant around −21 %. In the US, a non-stop Southwest lowered the fare on a pair by 27–29 %, even its mere presence at both airports without a flight on the pair by 9 %, while a second legacy carrier cut it by only ≈4 %. It works the other way too: after Go First's exit in India, fares for near-term Delhi–Mumbai flights rose by 37 %, and on the thin Delhi–Leh pair they multiplied.4,13,14

Frequency and competition

Frequency is a weapon of its own. The classic S-curve says that the passenger share grows faster than the frequency share: share = frequency to the power α divided by the sum of the same values for everyone, with α around 1.5. However, as early as 2006 McKinsey showed that where a low-cost carrier competes with legacy carriers, the effect almost disappears — passengers choose on price. So in Europe and India, where low-cost carriers hold most of the market, the S-curve should be applied with care; an alternative model looks at how far the schedule is from the desired departure time.15,16,17

Competition on a pair is usually measured by the number of carriers and by the Herfindahl–Hirschman index — the sum of squared shares; above 1,800 a market is considered highly concentrated. By this criterion almost any pair is concentrated. In Europe more than 60 % of city pairs are served by a single carrier, but they account for less than 20 % of revenue, and the most lucrative pairs have three or more carriers. In India the whole market is concentrated: in 2025 IndiGo carried about 64 % of domestic passengers, and together with Air India Group about 90 %.1,18,19,20

Infrastructure, incentives and subsidies

Even a good market can be closed off by infrastructure. At Level 3 airports demand exceeds capacity, and without a slot from the coordinator you cannot fly; in the EU a slot is kept only if it is used at least 80 % of the time. In Mumbai in 2026, it was proposed to temporarily withdraw 265 of 770 weekly international departure slots because of terminal reconstruction, and the new Navi Mumbai airport, with 20 million passengers a year, opened in December 2025. Night bans, such as Frankfurt's from 23:00 to 04:00, narrow the window for flights, and India's international pairs are subject to quotas under bilateral agreements — for example, no more than 66,000 seats a week with Dubai.21,22,23,24,25,26

Money for launching a route is a topic of its own. Airports publish incentive schemes: in Vilnius a new year-round route gets a 50, 40 and 30 % discount on charges over three years. The EU's 2014 guidelines allowed start-up aid of up to 50 % of charges for three years, but the 2026 draft of new guidelines proposes abolishing it altogether. Low-cost carriers react sharply to taxes: in 2025–2026 Ryanair removed about 800,000 seats in Germany and about a million in Belgium and moved aircraft to countries that are cutting charges. Planners themselves say an incentive is only a tool; in the end a route has to pay for itself.27,28,29,30

Social routes are subsidised by the state. In the EU these are public service obligations (PSO): if nobody flies commercially, the right to the route is tendered with exclusivity and compensation for losses; Norway spends NOK 2.43 billion on this, or NOK 1,000–1,500 per passenger. In India the UDAN scheme caps the fare at INR 2,500 per flight hour on half the seats and pays for 9–40 seats per flight. The auditors' verdict is sobering: of 774 routes awarded, only 54 (7 %) were operating after the subsidy ended, so traffic from subsidised years is poor proof of a market.7,31,32,33

Published metrics

Airports and consultants publish their own attractiveness metrics. ACI EUROPE calculates direct, indirect and hub connectivity of airports every year; tourism consultants such as Mabrian track seats, carriers, seasonality, prices and search demand; EUROCONTROL publishes a seasonality index by which Greece (88) is seven times more seasonal than Finland (13). But the underlying data of these indices are commercial schedules and bookings; only the final figures are open.34,35,36

Finally, routes in Europe are short-lived. In 2025 the EU closed 1,127 routes and opened 1,281 out of a network of about 14,800 — so roughly 7–8 % disappear each year. Low-cost carriers deliberately try out and close destinations; short and low-capacity routes, pairs of primary airports and Eastern European markets close more often, and seasonality and market share also significantly affect the risk of closure. Network carriers face one more trap: the profit of an individual sector depends on subjective cost allocation and does not see the contribution of connecting passengers. So our rating is most honestly applied to point-to-point routes, with hub pairs flagged separately.6,37,38

What can be measured from open data

Open statistics show only part of the picture. Eurostat publishes passengers by airport pair but openly admits it does not see the true origin and destination, and it discloses airlines only as 'EU / non-EU'. So transfer traffic through a hub ends up in the pair statistics, and the competitors on a pair have to be reconstructed from schedules. Fares by pair are not openly available in Europe: researchers buy OAG data or scrape prices from websites, and as early as 2008 they called for a European counterpart to the US DB1B database, which publishes a 10 % sample of tickets.4,5,39,51

The picture in India is similar. The regulator DGCA publishes airline shares and passengers by city pair — domestic monthly, international quarterly — but without the carrier on a pair and without fares: DGCA monitors prices on some routes but does not publish the series52. The market is almost a duopoly: in 2025 IndiGo carried about 64 % of domestic passengers19.

Open data sources on routes — table
SourceWhat it provides GranularityAccess
Eurostat avia_par_<cc> (Air passenger transport between main airports of <country> and their main partner airports)passengers on board (PAS_BRD), carried (PAS_CRD), seats (ST_PAS), commercial passenger flights (CAF_PAS), each +_ARR/_DEP; no carrier (only an EU/non-EU label)airport pair (reporting × partner, segment), month/quarter/yearfree: Eurostat API/databrowser39
Eurostat Reference Manual on Air Transport Statistics v14definitions: seats available, commercial air flight, dataset B1 by airport pairs of embarkation/disembarkationmethodologyfree PDF40
Eurostat HICP CP0733 Passenger transport by air (FRED mirror)consumer price index for air passenger transport, by country and EUcountry, month; not a pairfree (FRED / Eurostat prc_hicp_midx)41
Destatis CPI Personenbeförderung im Luftverkehrair fare price index over ~100 routes; only the index is published (domestic/Europe/intercontinental)group of destinations, monthfree (index)42
IATA WASG Annex 12.7 — list of Level 2 / Level 3 airportsairport coordination levelsairport, seasonfree xlsx21,43
AESA: Clasificación de los aeropuertos españolesLevel 3 / Level 2 of Spanish airportsairport, seasonfree44
ACL airport info pagesIATA level, night rules (local rules), opening hoursairportfree45,46,47
COHOR (French slot coordinator)level changes; Level 3 in the site menuairport, seasonfree48
FHKV § 1 (Germany)17 coordinated/facilitated airports without a split by levelairportfree49
ACNL AMS Capacity Declaration W26/27seasonal capacity, night limit, hourly runway valuesairport, season, 20/60 minfree PDF50

Bottom line for the rating: market size and growth are open in both regions, the seat load factor on a pair only in Europe (Eurostat publishes seats), competition on a pair and fares are not. Slot-coordinated airports are known only in part: Spain, the UK, Dublin, Warsaw, part of France, four airports in India; Germany does not split its 17 airports by level 44,45,46,47,49,53,54,55,56,57,58,59. So slots are a flag in the rating, not a penalty.

One more caveat: the latest full year in Europe's open statistics is 2024. We downloaded the Eurostat tables at the end of October 2026, and for all 32 countries the series end in December 2024; for India, data run to 2026-07.

How we calculate the rating

The rating answers one question: where is the market already large, growing and short of seats. For each pair three pillars are calculated, each a percentile within its own market (100 is best); the index is their average.

IndexEurope = ⅓ · ( P[ln passengers] + P[growth 2024/23] + P[passengers ÷ seats] )
IndexIndia = ⅓ · ( P[ln passengers] + P[growth, 12 months] + P[growth 2025/24] )
P[x] = share of pairs in the same market with a worse value of x, 0–100

TermWhat it is Source
ln passengerspassengers per year in both directions; the logarithm keeps million-passenger pairs from eclipsing the rest Eurostat PAS_CRD (2024), DGCA (12 months)
growthpassengers versus the previous year; in India 2025/24 uses the months present in both years (the DGCA series has no May 2024)same series
passengers ÷ seatsseat load factor on the pair over the year — a measure of undersupplyEurostat ST_PAS

The rating includes pairs with at least 200,000 passengers a year in Europe and 150,000 in India — below that a market will not fill a daily narrowbody flight. European pairs beyond 4,500 km are in a separate table: that is no longer A320 or 737 territory. A pair in Europe is an airport pair (that is how Eurostat publishes; London airports are not merged), in India a city pair (Mumbai and Goa have two airports each, which are added together).

What the rating does not account for: fares and yield, transfer traffic via hubs (Eurostat counts people on board), seasonality, traffic rights and sanctions. Pairs with Russian airports are flights by Turkish and other non-European carriers; they are closed to European carriers.

Europe: top short- and medium-haul pairs

At the top are pairs that combine a large market, growth and full aircraft. 5 of the first 30 involve Turkey and Russia; without them the top is taken by leisure and capital-city pairs in Spain, Germany and the Benelux: Frankfurt FRA — Palma de Mallorca PMI, Berlin BER — Rome FCO, Amsterdam AMS — Málaga AGP.

Gaziantep GZT — Istanbul SAW: no observationsGaziantep GZT — Istanbul SAW: 908,584 pax1Antalya AYT — Yekaterinburg SVX: no observationsAntalya AYT — Yekaterinburg SVX: 583,475 pax2Nevşehir NAV — Istanbul IST: no observationsNevşehir NAV — Istanbul IST: 523,328 pax3Frankfurt FRA — Palma de Mallorca PMI: A320ceo / A321ceo 77 %, 737 MAX 10 %, A320neo / A321neo 7 %Frankfurt FRA — Palma de Mallorca PMI: 957,995 pax4Berlin BER — Rome FCO: 737-700/800/900 49 %, A320ceo / A321ceo 41 %, 737 MAX 10 %Berlin BER — Rome FCO: 521,832 pax5Gaziantep GZTIstanbul SAWAntalya AYTYekaterinburg SVXNevşehir NAVIstanbul ISTFrankfurt FRAPalma de Mallorca PMIBerlin BERRome FCO
━ domestic ━ international
A320ceo / A321ceo737-700/800/900
Colour — the type that operates the most flights on the pair (ADS-B observations, autumn 2026); dashed — no observations.
#PairkmPassengersGrowth 2024/23Load factorIndexConstraints
1Gaziantep GZT — Istanbul SAW832908,584+29 %92 %93
2Antalya AYT — Yekaterinburg SVX3,128583,475+48 %92 %90Russia: non-EU carriers only
3Nevşehir NAV — Istanbul IST567523,328+30 %93 %89
4Frankfurt FRA — Palma de Mallorca PMI1,251957,995+14 %92 %87slots: LEPA
5Berlin BER — Rome FCO1,178521,832+63 %90 %87
6Antalya AYT — Moscow SVO2,1781,373,168+41 %87 %86Russia: non-EU carriers only
7Amsterdam AMS — Málaga AGP1,883912,495+19 %90 %85slots: LEMG
8Warsaw WAW — Antalya AYT1,864652,427+15 %92 %84slots: EPWA
9Berlin BER — Barcelona BCN1,502617,388+15 %92 %84slots: LEBL
10Antalya AYT — Kazan KZN2,502461,742+20 %94 %84Russia: non-EU carriers only
Places 11–50
#PairkmPassengersGrowth 2024/23Load factorIndexConstraints
11Brussels BRU — Barcelona BCN1,084882,536+16 %90 %83slots: LEBL
12Brussels BRU — Málaga AGP1,735620,651+22 %90 %83slots: LEMG
13Diyarbakır DIY — Istanbul SAW993618,145+12 %94 %83
14Barcelona BCN — Budapest BUD1,522482,176+30 %90 %83slots: LEBL
15Barcelona BCN — Paris CDG8581,288,959+15 %89 %82slots: LEBL, LFPG
16Antalya AYT — Moscow VKO2,1351,547,990+8 %91 %82Russia: non-EU carriers only
17Bergamo BGY — Bucharest OTP1,290553,013+24 %90 %82
18Hannover HAJ — Palma de Mallorca PMI1,531462,388+33 %90 %82slots: LEPA
19Barcelona BCN — Paris ORY8271,129,008+11 %90 %82slots: LEBL, LFPO
20Madrid MAD — Paris CDG1,0621,055,318+21 %88 %81slots: LEMD, LFPG
21Greven FMO — Antalya AYT2,475389,274+47 %91 %81
22Barcelona BCN — Seville SVQ8091,113,832+10 %91 %81slots: LEBL
23Madrid MAD — Milan MXP1,149956,259+32 %86 %81slots: LEMD
24Trabzon TZX — Istanbul SAW8801,403,913+16 %88 %81
25Antalya AYT — St. Petersburg LED2,547757,738+18 %89 %81Russia: non-EU carriers only
26Brussels BRU — Alicante ALC1,458541,435+15 %91 %80slots: LEAL
27Amsterdam AMS — Madrid MAD1,4591,229,083+15 %88 %80slots: LEMD
28Berlin BER — Palma de Mallorca PMI1,646864,826+10 %91 %80slots: LEPA
29Berlin BER — Madrid MAD1,850538,897+17 %90 %80slots: LEMD
30Köln CGN — Antalya AYT2,4321,021,404+11 %90 %80
31Hannover HAJ — Antalya AYT2,387786,830+11 %90 %80
32Dublin DUB — Málaga AGP1,868831,603+7 %92 %80slots: EIDW, LEMG
33Amsterdam AMS — Alicante ALC1,613580,008+12 %92 %80slots: LEAL
34Amsterdam AMS — Athens ATH2,182619,734+21 %89 %79
35Paris ORY — Rome FCO1,0901,181,970+8 %91 %79slots: LFPO
36Barcelona BCN — Rome FCO8481,704,556+15 %87 %79slots: LEBL
37Erzurum ERZ — Istanbul SAW1,009463,594+14 %92 %79
38Barcelona BCN — Porto OPO899703,182+8 %92 %79slots: LEBL
39Hamburg HAM — Palma de Mallorca PMI1,659974,294+12 %89 %78slots: LEPA
40Dublin DUB — Rome FCO1,886502,678+17 %90 %78slots: EIDW
41Antalya AYT — Chişinău RMO1,126666,743—88 %78
42Elazığ EZS — Istanbul SAW890352,546+20 %93 %78
43Katowice KTW — Antalya AYT1,775638,307+10 %91 %78
44Amsterdam AMS — Porto OPO1,595419,980+20 %90 %77
45Şanlıurfa GNY — Istanbul SAW911311,864+33 %93 %77
46Alicante ALC — Barcelona BCN404582,616+35 %86 %77slots: LEAL, LEBL
47Tenerife TFN — Madrid MAD1,7721,785,863+25 %83 %77slots: LEMD
48London LGW — Rome FCO1,406923,766+16 %87 %77slots: EGKK
49Athens ATH — Tel Aviv TLV1,1941,006,877+32 %83 %77
50Warsaw WAW — Barcelona BCN1,870370,426+36 %89 %77slots: EPWA, LEBL

Long-haul pairs (over 4,500 km)

Madrid MAD — Santiago SCL: 787 100 %Madrid MAD — Santiago SCL: 777,760 pax1Madrid MAD — Lima LIM: 787 45 %, A330 39 %, A350 16 %Madrid MAD — Lima LIM: 985,526 pax2Amsterdam AMS — Willemstad CUR: no observationsAmsterdam AMS — Willemstad CUR: 720,627 pax3Madrid MAD — Buenos Aires EZE: A330 55 %, A350 35 %, 787 9 %Madrid MAD — Buenos Aires EZE: 1,077,881 pax4Lisbon LIS — São Paulo GRU: A330 65 %, 777 33 %, 787 2 %Lisbon LIS — São Paulo GRU: 864,997 pax5Madrid MADSantiago SCLLima LIMAmsterdam AMSWillemstad CURBuenos Aires EZELisbon LISSão Paulo GRU
━ long-haul
A330787
Colour — the type that operates the most flights on the pair (ADS-B observations, autumn 2026); dashed — no observations.
#PairkmPassengersGrowth 2024/23Load factorIndexConstraints
1Madrid MAD — Santiago SCL10,719777,760+49 %92 %94slots: LEMD
2Madrid MAD — Lima LIM9,526985,526+18 %93 %90slots: LEMD
3Amsterdam AMS — Willemstad CUR7,834720,627+18 %94 %89
4Madrid MAD — Buenos Aires EZE10,0871,077,881+17 %92 %88slots: LEMD
5Lisbon LIS — São Paulo GRU7,935864,997+18 %91 %87
6Madrid MAD — São Paulo GRU8,378786,006+22 %90 %86slots: LEMD
7Paris CDG — Tokyo HND9,708653,683+39 %88 %82slots: LFPG
8Madrid MAD — Mexico City MEX9,0651,208,106+11 %89 %80slots: LEMD
9Zurich ZRH — Hong Kong HKG9,280316,135+53 %91 %79
10Barcelona BCN — Doha DOH4,862590,053+41 %87 %79slots: LEBL

Source: Eurostat avia_par, 2024, pairs with a full year of data; load factor — passengers ÷ seats.

India: top pairs

In India the top of the rating is not Delhi — Mumbai (the largest pair, but its growth is moderate and both airports are slot-constrained) but pairs growing faster than the market: Bagdogra — Mumbai, Delhi — Varanasi, Indore — Pune. Growth of 50–70 % a year on a pair often means new flights or a new airport — it should be checked, not taken on trust.

Bagdogra — Mumbai: no observationsBagdogra — Mumbai: 535,540 pax1Ahmedabad — Bengaluru: no observationsAhmedabad — Bengaluru: 1,160,344 pax2Ahmedabad — Kolkata: no observationsAhmedabad — Kolkata: 572,452 pax3Delhi — Indore: no observationsDelhi — Indore: 1,125,785 pax4Bengaluru — Kozhikode: no observationsBengaluru — Kozhikode: 418,074 pax5BagdograMumbaiAhmedabadBengaluruKolkataDelhiIndoreCalicut
━ domestic
#PairkmPassengersGrowth, 12 monthsGrowth 2025/24IndexConstraints
1Bagdogra — Mumbai1,793535,540+68 %+27 %79slots: VABB
2Ahmedabad — Bengaluru1,2221,160,344+9 %+21 %79
3Ahmedabad — Kolkata1,620572,452+12 %+53 %78slots: VECC
4Delhi — Indore6621,125,785+12 %+17 %78slots: VIDP
5Bengaluru — Kozhikode298418,074+79 %+31 %78
6Delhi — Varanasi667986,296+14 %+16 %78slots: VIDP
7Indore — Pune500306,353+58 %+83 %77
8Darbhanga — Delhi910338,207+33 %+79 %76slots: VIDP
9Bengaluru — Nagpur889518,196+19 %+28 %76
10Coimbatore — Hyderabad706526,347+11 %+51 %76
Places 11–50
#PairkmPassengersGrowth, 12 monthsGrowth 2025/24IndexConstraints
11Delhi — Rajkot917382,487+72 %+28 %76slots: VIDP
12Darbhanga — Mumbai1,553266,327+76 %+107 %75slots: VABB
13Bengaluru — Mangalore307830,937+10 %+18 %74
14Delhi — Udaipur541694,697+17 %+12 %73slots: VIDP
15Delhi — Imphal1,720316,939+56 %+30 %73slots: VIDP
16Delhi — Mangalore1,750250,375+42 %+85 %72slots: VIDP
17Bagdogra — Delhi1,1261,260,830+25 %−0 %72slots: VIDP
18Guwahati — Hyderabad1,678373,702+11 %+57 %71
19Delhi — Patna8571,525,446+12 %+1 %71slots: VIDP
20Chennai — Kolkata1,3861,141,602+14 %+2 %71slots: VOMM, VECC
21Chennai — Pune913805,417+4 %+24 %71slots: VOMM
22Bengaluru — Coimbatore252435,911+11 %+28 %70
23Bengaluru — Gorakhpur1,620248,304+20 %+226 %70
24Hyderabad — Pune500734,831+8 %+18 %70
25Gorakhpur — Mumbai1,377263,443+18 %+57 %69slots: VABB
26Mumbai — Patna1,449463,774+16 %+18 %69slots: VABB
27Mumbai — Varanasi1,248911,684+4 %+18 %69slots: VABB
28Guwahati — Jaipur1,571201,983+84 %+55 %69
29Hyderabad — Vishakhapatnam5121,020,892+1 %+20 %69
30Bengaluru — Indore1,078485,896+5 %+38 %69
31Delhi — Nagpur853760,429+11 %+8 %68slots: VIDP
32Mumbai — Udaipur624641,195+16 %+6 %68slots: VABB
33Chandigarh — Kolkata1,460184,712+48 %+81 %68slots: VECC
34Mumbai — Nagpur683780,802+9 %+9 %68slots: VABB
35Bengaluru — Lucknow1,544823,200+7 %+11 %67
36Kochi — Pune975225,278+20 %+68 %67
37Delhi — Gorakhpur658445,378+5 %+38 %67slots: VIDP
38Bhubaneswar — Delhi1,2771,201,331+7 %+4 %67slots: VIDP
39Kochi — Mumbai1,0641,309,191+13 %−3 %67slots: VABB
40Bengaluru — Chennai2681,516,377+4 %+5 %66slots: VOMM
41Goa — Indore842179,514+46 %+70 %66
42Goa — Pune356456,149+12 %+14 %66
43Bengaluru — Delhi1,7094,877,158+7 %−2 %65slots: VIDP
44Bengaluru — Tiruchirappalli292210,620+43 %+29 %65
45Delhi — Kolkata1,3132,912,808+5 %−1 %65slots: VIDP, VECC
46Kolkata — Mumbai1,6662,215,829−2 %+10 %65slots: VECC, VABB
47Bengaluru — Patna1,580643,043−2 %+29 %65
48Delhi — Nashik—164,614+41 %+78 %65slots: VIDP
49Delhi — Deoghar1,059192,376+34 %+37 %64slots: VIDP
50Bengaluru — Port Blair1,640298,793+33 %+16 %64

Source: DGCA, domestic flights by city pair, last 12 months to 2026-07; compiled by github.com/Vonter/india-aviation-traffic (ODbL).

Who already flies these pairs

The rating looks at the market but not at rivals: Eurostat does not publish the carrier on a pair. They can be seen from the aircraft themselves. Every airliner broadcasts its position via ADS-B, and the OpenSky receiver network turns this into flights with departure and arrival airports. We collected departures and arrivals at the top airports — 18 days in autumn 2026 — and aggregated the flights by pair and carrier; the call sign gives the carrier, the aircraft register the type. This is no longer Eurostat's 2024 but the current schedule — an autumn one: leisure pairs have more flights in summer.

The picture is familiar from the theory above. On large capital-city pairs two or three carriers share the market: Madrid — Paris is split evenly between Iberia and Air France, Barcelona — Orly is two-thirds Vueling. Pairs between secondary cities are almost purely low-cost: Berlin — Rome is held by Ryanair and easyJet, Barcelona — Budapest by Wizz Air and Ryanair, Bergamo — Bucharest by Ryanair and Wizz Air; that is exactly where a new low-cost carrier finds entry most expensive and a network carrier cheapest. The fleet on these pairs is still old: of flights with a known type only about 18 % are operated by new-generation aircraft (A320neo, A321neo, 737 MAX, A220), the A321neo about 2 %; so the fuel advantage the calculator gives the A321neo is not yet shared by every rival on the pair.

Which aircraft fly them

4. Frankfurt FRA — Palma de Mallorca PMI8.4
5. Berlin BER — Rome FCO3.3
6. Antalya AYT — Moscow SVO2.4
7. Amsterdam AMS — Málaga AGP9.6
8. Warsaw WAW — Antalya AYT2.9
9. Berlin BER — Barcelona BCN6.4
11. Brussels BRU — Barcelona BCN4.8
12. Brussels BRU — Málaga AGP2.9
14. Barcelona BCN — Budapest BUD4.4
15. Barcelona BCN — Paris CDG11.8
17. Bergamo BGY — Bucharest OTP3.0
18. Hannover HAJ — Palma de Mallorca PMI3.4
19. Barcelona BCN — Paris ORY12.4
20. Madrid MAD — Paris CDG13.9
A320ceo / A321ceoA320neo / A321neo737-700/800/900737 MAXA220 / E-JetA330
Bar length — flights per day in each direction; segments — share of flights by aircraft family (flights with a known type).

On Europe's medium-haul pairs the picture is the same everywhere: previous-generation A320s and 737-800s, with neo and MAX only scattered, most visibly at low-cost carriers (Wizz Air flies Barcelona — Budapest with the A321neo). On long-haul pairs the fleet is newer: 787s and A350s sit alongside previous-generation A330s and 777-300ERs (except TAP's A330-900).

1. Madrid MAD — Santiago SCL0.9
2. Madrid MAD — Lima LIM3.5
4. Madrid MAD — Buenos Aires EZE5.8
5. Lisbon LIS — São Paulo GRU4.1
6. Madrid MAD — São Paulo GRU5.2
7. Paris CDG — Tokyo HND4.1
8. Madrid MAD — Mexico City MEX5.6
9. Zurich ZRH — Hong Kong HKG1.6
10. Barcelona BCN — Doha DOH2.9
A330A350787777
Bar length — flights per day in each direction; segments — share of flights by aircraft family (flights with a known type).
Carriers by pair — table
#PairFlights per dayLeader shareWho flies: flights per day (types)
1Gaziantep GZT — Istanbul SAW——no flights seen
2Antalya AYT — Yekaterinburg SVX——no flights seen
3Nevşehir NAV — Istanbul IST——no flights seen
4Frankfurt FRA — Palma de Mallorca PMI8.448 %Condor 4.1 (A320) · Discover Airlines 2.1 (A320) · Lufthansa 1.3 (A321, A321neo) · TUIfly 0.9 (737 MAX 8, 737-800)
5Berlin BER — Rome FCO3.359 %Ryanair 2.0 (737-800, 737 MAX 8) · easyJet 1.4 (A319, A320)
6Antalya AYT — Moscow SVO2.467 %Southwind 1.6 · Aeroflot 0.8 (A321)
7Amsterdam AMS — Málaga AGP9.639 %Transavia 3.8 (737-800) · easyJet 2.3 (A320neo, A319) · Vueling 1.6 (A320, A320neo) · Ryanair 1.0 (737-800)
8Warsaw WAW — Antalya AYT2.962 %Enter Air 1.8 (737-800) · SunExpress 0.7 (737-800) · Corendon 0.4 (737 MAX 8, 737-800)
9Berlin BER — Barcelona BCN6.453 %Vueling 3.4 (A321, A320) · Ryanair 1.6 (737-800, 737 MAX 8) · easyJet 1.4 (A319, A320)
10Antalya AYT — Kazan KZN——no flights seen
11Brussels BRU — Barcelona BCN4.850 %Vueling 2.4 (A320, A321) · Brussels Airlines 1.7 (A320, A319) · Ryanair 0.6 (737-800)
12Brussels BRU — Málaga AGP2.942 %Brussels Airlines 1.2 (A320) · TUI fly Belgium 0.6 (737 MAX 8, 737-800) · Transavia 0.4 (737-800) · Vueling 0.4 (A320)
13Diyarbakır DIY — Istanbul SAW——no flights seen
14Barcelona BCN — Budapest BUD4.454 %Wizz Air 2.4 (A321neo) · Ryanair 2.0 (737-800, 737 MAX 8)
15Barcelona BCN — Paris CDG11.866 %Air France 7.8 (A320, A321) · Vueling 3.6 (A320, A321) · Air France Hop 0.3 (E190)
16Antalya AYT — Moscow VKO——no flights seen
17Bergamo BGY — Bucharest OTP3.075 %Ryanair 2.2 (737-800, 737 MAX 8) · Wizz Air Malta 0.8 (A321, A321neo)
18Hannover HAJ — Palma de Mallorca PMI3.450 %TUIfly 1.7 (737-800, 737 MAX 8) · Eurowings 1.4 (A320) · Corendon Europe 0.3 (737-800)
19Barcelona BCN — Paris ORY12.467 %Vueling 8.3 (A320, A321) · Transavia France 4.1 (737-800)
20Madrid MAD — Paris CDG13.950 %Iberia 7.0 (A320neo, A321) · Air France 6.7 (A320) · Air France Hop 0.2 (E190)

Long-haul pairs

#PairFlights per dayLeader shareWho flies: flights per day (types)
1Madrid MAD — Santiago SCL0.991 %LATAM Chile 0.8 (787-9, 787-8) · LATAM Perú 0.1 (787-9)
2Madrid MAD — Lima LIM3.539 %Iberia 1.4 (A330-200, A350-900) · Plus Ultra 0.8 (A330-200) · LATAM Perú 0.7 (787-9, 787-8) · Air Europa 0.7 (787-9)
3Amsterdam AMS — Willemstad CUR——no flights seen
4Madrid MAD — Buenos Aires EZE5.846 %Iberia 2.7 (A350-900, A330-200) · Aerolíneas Argentinas 1.7 (A330-200) · Air Europa 0.9 (787-8, 787-9) · Plus Ultra 0.5 (A330-200)
5Lisbon LIS — São Paulo GRU4.161 %TAP 2.5 (A330-900) · LATAM Brasil 1.6 (777-300ER)
6Madrid MAD — São Paulo GRU5.241 %Iberia 2.1 (A330-300, A350-900) · LATAM Chile 0.9 (787-9) · Air Europa 0.9 (787-9) · LATAM Brasil 0.8 (777-300ER, 787-9)
7Paris CDG — Tokyo HND4.158 %Air France 2.4 (777-300ER) · JAL 0.9 (777-300ER) · ANA 0.8 (787-9)
8Madrid MAD — Mexico City MEX5.652 %Iberia 2.9 (A350-900) · Aeroméxico 2.7 (787-9, 787-8)
9Zurich ZRH — Hong Kong HKG1.651 %Swiss 0.8 (777-300ER) · Cathay Pacific 0.8 (A350-900, A350-1000)
10Barcelona BCN — Doha DOH2.9100 %Qatar Airways 2.9 (787-9)

Source: OpenSky Network, flights by airport (ADS-B); aggregated with bin/observed_export.py and bin/competitors.py. Flights per day — one direction, average per observed day. Excluded: business aviation, cargo carriers and carriers with one or two flights in the period (most often an airport estimation error: the aircraft passed nearby rather than landed). Long-haul flights are a lower bound: there are no receivers over the ocean, and the destination airport is not always determined (which is why, for example, no flights at all are seen on Amsterdam — Curaçao, although KLM flies there). Antalya pairs — 5 days; domestic Turkish pairs and pairs with Russian airports other than Sheremetyevo are not visible in OpenSky data — there are few receivers. We have not yet collected India; the data will come with the next update.

Which aircraft to fly

For each top pair the calculator computed the breakeven fare — how much a passenger must pay for the flight to break even at an 80 % load factor — on the types that can be obtained new today: A320neo, A321neo, 737 MAX 8 and 9, A220-300, E195-E2, and for long-haul pairs A350-900 and 787-9. On every narrowbody pair the A321neo is cheapest per passenger: 4–5 % cheaper than the A320neo and 5–6 % cheaper than the 737 MAX 8. The gap is smaller than it might seem: the A321neo has more seats, but the flight costs more too — it burns more fuel, and charges and air navigation fees are calculated from weight. In the database the A321neo has a 97 t maximum take-off weight and 33 t of tankage, like the long-range A321LR/XLR, which is why it 'reaches' Curaçao and São Paulo from Europe; a standard 93.5 t A321neo would not get there without extra tanks. But a bigger aircraft also means fewer frequencies: the 'flights per day needed' column shows how many A321neo flights in each direction the pair's market fills at an 80 % load factor, and 'flown now' how many flights all carriers together operate on the pair (from the observations above). Where it comes to fewer than two, a smaller type with a convenient schedule is the wiser choice — frequency sells tickets by itself (the S-curve above).

For pairs with Russian airports the choice is different. Western types are unavailable to Russian carriers, and of the Russian ones only the Tu-214 is currently in series production — certified, four aircraft in 2026; the SJ-100 awaits certification by late 2026 – early 2027, the MC-21 by the end of 2027. The calculator now computes the Tu-214. The manufacturer does not publish fuel burn, so the anchor is a reference hourly burn of 3.7 t/h (the same reference gives 19 g per passenger-kilometre — at 210 seats and 850 km/h that is 3.4 t/h [airlines-inform]; layout — Red Wings) via the 757-200 as an analogue on the Tu-214 airframe. We checked it against a non-public table of trip fuel by distance obtained from industry contacts: the calculation with this anchor differs from it by 1–2 % between 1,000 and 4,000 km. Per trip the Tu-214 burns 7–11 % more than the 757-200 — exactly the generation gap between the PS-90A and PW2000 engines. The result on the Antalya pairs: a 194-seat Tu-214 (Red Wings layout) comes out 21–25 % more expensive per passenger than the A321neo, on which Turkish carriers fly the same routes — trip fuel almost a third higher, maintenance by the default rate twice as high, and fewer seats. The calculator does not yet compute the MC-21 — there is no certified version and no published burn; the SJ-100 below is an estimate: the PD-8 version's empty weight and burn are unpublished.

Europe

#PairBest typeBreakeven fareA320neo737 MAX 8Flights per day neededFlown now
1Gaziantep GZT — Istanbul SAWA321neo85 EUR88 EUR89 EUR7.1—
2Antalya AYT — Yekaterinburg SVXTu-214 (A321neo — 182 EUR)228 EUR—195 EUR5.2—
3Nevşehir NAV — Istanbul ISTA321neo75 EUR78 EUR79 EUR4.1—
4Frankfurt FRA — Palma de Mallorca PMIA321neo106 EUR111 EUR112 EUR7.58.4
5Berlin BER — Rome FCOA321neo89 EUR93 EUR94 EUR4.13.3
6Antalya AYT — Moscow SVOTu-214 (A321neo — 150 EUR)182 EUR—159 EUR12.12.4
7Amsterdam AMS — Málaga AGPA321neo122 EUR127 EUR129 EUR7.19.6
8Warsaw WAW — Antalya AYTA321neo121 EUR126 EUR128 EUR5.12.9
9Berlin BER — Barcelona BCNA321neo109 EUR114 EUR116 EUR4.86.4
10Antalya AYT — Kazan KZNTu-214 (A321neo — 142 EUR)177 EUR—152 EUR4.1—
11Brussels BRU — Barcelona BCNA321neo95 EUR98 EUR100 EUR6.94.8
12Brussels BRU — Málaga AGPA321neo117 EUR121 EUR123 EUR4.82.9
13Diyarbakır DIY — Istanbul SAWA321neo90 EUR94 EUR95 EUR4.8—
14Barcelona BCN — Budapest BUDA321neo110 EUR115 EUR116 EUR3.84.4
15Barcelona BCN — Paris CDGA321neo87 EUR90 EUR91 EUR10.011.8
16Antalya AYT — Moscow VKOTu-214 (A321neo — 129 EUR)160 EUR—138 EUR13.7—
17Bergamo BGY — Bucharest OTPA321neo98 EUR103 EUR104 EUR4.33.0
18Hannover HAJ — Palma de Mallorca PMIA321neo106 EUR111 EUR113 EUR3.63.4
19Barcelona BCN — Paris ORYA321neo86 EUR89 EUR90 EUR8.812.4
20Madrid MAD — Paris CDGA321neo93 EUR96 EUR98 EUR8.213.9

Long-haul pairs

#PairBest typeBreakeven fareA320neo737 MAX 8Flights per day neededFlown now
1Madrid MAD — Santiago SCLA350-900601 EUR——3.80.9
2Madrid MAD — Lima LIMA350-900540 EUR——4.83.5
3Amsterdam AMS — Willemstad CURA321neo343 EUR——5.6—
4Madrid MAD — Buenos Aires EZEA350-900568 EUR——5.35.8
5Lisbon LIS — São Paulo GRUA321neo347 EUR——6.74.1
6Madrid MAD — São Paulo GRUA350-900481 EUR——3.85.2
7Paris CDG — Tokyo HNDA350-900555 EUR——3.24.1
8Madrid MAD — Mexico City MEXA350-900511 EUR——5.95.6
9Zurich ZRH — Hong Kong HKGA350-900517 EUR——1.51.6
10Barcelona BCN — Doha DOHA321neo220 EUR——4.62.9

India

#PairBest typeBreakeven fareA320neo737 MAX 8Flights per day neededFlown now
1Bagdogra — MumbaiA321neo113 EUR118 EUR120 EUR4.2—
2Ahmedabad — BengaluruA321neo88 EUR92 EUR93 EUR9.0—
3Ahmedabad — KolkataA321neo107 EUR112 EUR114 EUR4.5—
4Delhi — IndoreA321neo66 EUR69 EUR70 EUR8.8—
5Bengaluru — KozhikodeA321neo53 EUR55 EUR56 EUR3.3—
6Delhi — VaranasiA321neo66 EUR69 EUR70 EUR7.7—
7Indore — PuneA321neo66 EUR69 EUR70 EUR2.4—
8Darbhanga — DelhiA321neo75 EUR78 EUR79 EUR2.6—
9Bengaluru — NagpurA321neo76 EUR80 EUR81 EUR4.0—
10Coimbatore — HyderabadA321neo75 EUR78 EUR79 EUR4.1—
11Delhi — RajkotA321neo75 EUR79 EUR80 EUR3.0—
12Darbhanga — MumbaiA321neo105 EUR109 EUR111 EUR2.1—
13Bengaluru — MangaloreA321neo53 EUR56 EUR56 EUR6.5—
14Delhi — UdaipurA321neo60 EUR63 EUR64 EUR5.4—
15Delhi — ImphalA321neo103 EUR108 EUR110 EUR2.5—
16Delhi — MangaloreA321neo105 EUR110 EUR111 EUR1.9—
17Bagdogra — DelhiA321neo82 EUR86 EUR87 EUR9.8—
18Guwahati — HyderabadA321neo109 EUR114 EUR116 EUR2.9—
19Delhi — PatnaA321neo73 EUR76 EUR77 EUR11.9—
20Chennai — KolkataA321neo99 EUR103 EUR105 EUR8.9—

If we are not alone on the pair: market share decides the type

'Cheapest per passenger' silently assumes we carry all of the pair's passengers. A newcomer on a route where two or three carriers already fly will win a share, and a big aircraft then either flies half-empty or rarely — once a day or less — while frequency itself sells tickets. The rule below: of the types that, at our share, give at least two flights a day in each direction, we take the cheapest per passenger; if none reaches that, the cheapest among the smallest (within 10 % by seats), flagged. With the whole market the answer is almost always the A321neo; with a quarter of the market it is 110–140-seat aircraft on half the European pairs and most Indian ones. This is the argument for why new routes are built up on such aircraft and a big one is brought in once the route has gained passengers: frequency is worth more than 5–10 % extra cost per seat.

Which aircraft of this class is better our calculation decides with a caveat. The E195-E2 comes out 8–10 % cheaper per passenger than the A220-300 — it has a lighter airframe and lower burn — but its burn is an estimate: Embraer does not publish E195-E2 trip fuel, so we transferred to it the correction measured on the E190-E2, which has the same engine and wing (Aircraft Commerce No. 142); a check against Embraer's stated 25 % fuel reduction versus the E195-E1 agrees to within 2 %. On the pairs with Russia this role is played by the SJ-100: 6–8 % dearer per passenger than the Tu-214, but it wins on frequency at a small market share; its burn comes from the SSJ100 flight manual with SaM146 engines (1.7 t/h; agrees with the developer's presentation to within 4 %), its empty weight from the SSJ100 95LR: neither is published for the PD-8 version, so for it this is a lower bound.

flights per daytype = pair passengers per year × share ÷ 365 ÷ 2 ÷ (seatstype × 0.8)
type = argmintype: flights ≥ N breakeven faretype

PairShareType Flights per dayFarevs cheapest

Breakeven fare — FlightCostApp calculator for July, 80 % load factor, default inputs (lease, crew, maintenance, airport charges, air navigation, regional fuel). '—' — the type cannot operate the pair because of weight, range or runway.

What we change in the calculator

  1. ⚑ Mind when entering dataWhen choosing a pair, look at the market, not only at cost: size, growth and load factor on the pair are in the rating above; the calculator already shows the traffic on a pair.
  2. ◷ Queued for the calculatorThe pair rating in Network mode: a hint 'large and growing market' or 'slots' next to the pair selection.
  3. ◷ Queued for the calculatorBreakeven fare versus market fare — as soon as fares by pair become available (aggregator prices already exist for some markets), a fourth pillar, 'price headroom'.
  4. ◷ Queued for the calculatorThe rating is updated — India every quarter, Europe when Eurostat publishes 2025.

How it was checked

Two researchers kept logs — 493 steps (trace/r1–r2): how routes are evaluated and which data are open. Separate agents opened every source and checked the quotes (verify/): r1 — found verbatim 129, partially 4; r2 — found verbatim 123, partially 1. Corrected after checking: the share of variation explained by the gravity model is 70–76 %, not 'exactly' three quarters.

The pair series were built with bin/eurostat_pairs.py and bin/india_pairs.py: in Europe both countries report a pair — we take the average; in India since 2026 DGCA writes cities with the airport in brackets and has renamed some cities — the names were reconciled, otherwise a pair's growth would be an artefact. DGCA's 2023 series for Goa is double-counted, so we do not use growth versus 2023.

What was not found
  • No recent (2018–2026) open estimates of traffic stimulation from LCC entry specifically in Europe were found; for fares there is Gualini et al. 2024, for traffic Pitfield 2005 and CAA 2006
  • No recent open estimates of the S-curve exponent for Europe/India; we take α≈1.3–1.7 from the literature
  • Carrier shares by city pair in India are not in the open sources found (only national shares); DGCA detail was checked in r2
  • Slot figures for Delhi (peak movements per hour, free slots) are behind a paywall only
  • OAG, Cirium, Mabrian and ASM metrics are proprietary; only the final indices are open
  • IATA WASG Annex 12.7 (xlsx) not parsed — no full Level 2/3 list; Germany without a split by level
  • dgca.gov.in was unreachable: primary city-pair tables, reports and schedules came via copies/press; the format of the airline-wise schedule was not checked
  • No open average fares by pair in either Europe or India
  • Europe: no open 'carrier × pair × frequency' data (except manual collection from schedules)
Sources (59)
  1. IATA (2019)
  2. Aviation Week (2026) Newcastle–Madrid
  3. Pitfield (2005) Ryanair's impact ... London area airports
  4. Gualini, Martini, Porta (2024)
  5. Gaggero, Piga (2008)
  6. Cyprus Mail (2026), по IATA
  7. Factly о CAG (2023)
  8. Grosche et al. (2007) Gravity models
  9. Cambron, Pelletier (2020) QSI
  10. InsideFlyer (2017)
  11. InterVISTAS (2007) Estimating Air Travel Demand Elasticities
  12. Flightglobal о CAA (2006)
  13. Brueckner, Lee, Singer (2010)
  14. Business Today (2023) Go First
  15. Vaze, Barnhart (2010) Price of Airline Frequency Competition
  16. Binggeli, Pompeo (2006) Does the S-curve still exist?
  17. Hansen, Liu (2015) Airline Competition and Market Frequency
  18. National Law Review (2023)
  19. Network Thoughts (2026)
  20. The Week / PTI (2026)
  21. IATA — Coordinated airports
  22. European Commission — Airport slots
  23. Free Press Journal (2026)
  24. The Week / PTI (2025)
  25. Boeing — Frankfurt noise regulations
  26. AGBI (2025)
  27. Vilnius Airport incentive scheme
  28. CMS Law (2026)
  29. Euronews (2026)
  30. Aviation Week (2026)
  31. European Commission — PSOs
  32. HITRANS (2025)
  33. DT Next (2016) UDAN
  34. ACI EUROPE (2024) Airport Industry Connectivity Report
  35. India Outbound / Mabrian (2026)
  36. EUROCONTROL Data Snapshot #61 (2026)
  37. de Wit, Zuidberg (2016) Route churn
  38. Belobaba (2006)
  39. avia_pa ESMS
  40. Reference Manual on Air Transport Statistics v14
  41. FRED CP0733EUCCM086NEST
  42. Destatis Qualitätsbericht Luftverkehr Preisindex 2005
  43. IATA WASG Annex 12.7 (xlsx)
  44. AESA classification
  45. ACL: London City
  46. ACL: Luton
  47. ACL: Heathrow
  48. COHOR notice 06.10.2023
  49. FHKV § 1
  50. AMS Capacity Declaration W26
  51. BTS Library FAQ DB1B
  52. APACA NDB Mumbai
  53. ACL airport info: Birmingham (BHX)
  54. ACL airport info: Dublin (DUB)
  55. ACL airport info: London Gatwick (LGW)
  56. ACL airport info: Manchester (MAN)
  57. ACL airport info: London Stansted (STN)
  58. ACL airport info: Warsaw Chopin (WAW)
  59. Asian Breeze 70