Skip to content

Every South African airport, by the numbers

Twenty-two South African airports have an IATA code and scheduled passenger flights. Nine of them are run by Airports Company South Africa and file monthly passenger returns; those nine carried 41,135,224 passengers in the 2025/26 financial year. Each has a page here, built on its own filings rather than on a press release.

Three airports carry nine in ten passengers

O. R. Tambo, Cape Town and King Shaka between them moved 37,033,334 of the network’s 41.1 million passengers — 90 per cent. Everything else is, in practice, a connection.

JNBBusiest in Africa

O. R. Tambo

Johannesburg, Gauteng

The continent's main long-haul interchange, and the only South African airport with a rail link into the city. Two terminals under one roof, eight to ten minutes' walk apart, and the only one of the nine where more than a third of passengers are international.

International share41%
TerminalsA and B
Rail to Sandton~15 min

FY2025/2620,083,399

CPTFastest growing

Cape Town

Cape Town, Western Cape

One terminal, two piers, and the shortest connections in the country.

International share28%
Main runway01/19, 3,201 m

FY2025/2611,333,736

DURBuilt with room to grow

King Shaka

Durban, KwaZulu-Natal

Opened in 2010 and overwhelmingly domestic: barely one passenger in twenty flies international.

International share5%
Distance to Durban35 km

FY2025/265,616,199

Only three see international passengers

This is the single most useful thing to understand before booking, and almost nobody states it plainly. In 2025/26, scheduled international traffic was recorded at exactly three of the nine: O. R. Tambo (8,196,340), Cape Town (3,128,631) and King Shaka (296,387). Chief Dawid Stuurman in Gqeberha recorded 70 international passengers for the entire year. George, East London, Bram Fischer, Kimberley and Upington recorded none at all.

Several of those airports are still called “International” in their official names. That reflects customs facilities rather than a current route network.

The coast peaks in December. The interior peaks in March.

Six of the nine are busiest in December, driven by the southern-hemisphere summer holidays and the coastal exodus. The three inland airports — Bram Fischer, Kimberley and Upington — peak in March instead, because their traffic follows the business and agricultural calendar rather than the school year.

The size of that swing also varies far more than people expect. Upington moves 76 per cent between its best and worst month; O. R. Tambo only 31. Each airport page carries its own month-by-month figures.

Network passenger movements by month, FY2025/26. The pale portion of each bar is international traffic.
Domestic and regionalInternationalMonthly average
April3,444,588+0.5%
May3,087,229−9.9%
June3,008,907−12.2%
July3,306,627−3.5%
August3,338,549−2.6%
September3,348,861−2.3%
October3,755,492+9.6%
November3,417,743−0.3%
December4,013,840+17.1%
January3,560,948+3.9%
February3,214,922−6.2%
March3,637,518+6.1%

All twenty-two airports

Thirteen more airports have an IATA code and scheduled service but file no public monthly returns. Several matter a great deal to the traveller even though they move comparatively few people: Skukuza is inside the Kruger National Park, Hoedspruit serves the private reserves, and Lanseria is a serious alternative to O. R. Tambo for anyone staying north of Johannesburg.

IATAICAOAirportCityProvinceOperator
JNBFAORO. R. Tambo InternationalJohannesburgGautengACSA
CPTFACTCape Town InternationalCape TownWestern CapeACSA
DURFALEKing Shaka InternationalDurbanKwaZulu-NatalACSA
PLZFAPEChief Dawid Stuurman InternationalGqeberhaEastern CapeACSA
GRJFAGGGeorgeGeorgeWestern CapeACSA
ELSFAELKing PhaloEast LondonEastern CapeACSA
BFNFABLBram Fischer InternationalBloemfonteinFree StateACSA
KIMFAKMKimberleyKimberleyNorthern CapeACSA
UTNFAUPUpington InternationalUpingtonNorthern CapeACSA
HLAFALALanseria InternationalJohannesburgGautengPrivate
MQPFAKNKruger Mpumalanga InternationalMbombelaMpumalangaPrivate
SZKFASZSkukuzaSkukuza, Kruger National ParkMpumalangaSANParks
HDSFAHTEastgateHoedspruitLimpopoOther
PHWFAPHHendrik Van EckPhalaborwaLimpopoOther
PTGFAPPPolokwane InternationalPolokwaneLimpopoOther
UTTFAUTK. D. MatanzimaMthathaEastern CapeOther
PZBFAPMPietermaritzburgPietermaritzburgKwaZulu-NatalOther
RCBFARBRichards BayRichards BayKwaZulu-NatalOther
MGHFAMGMargateMargateKwaZulu-NatalOther
MZQFAMUMkuzeMkuzeKwaZulu-NatalOther
MBDFAMMGeorge Dick MontshioaMahikengNorth WestOther
SISFASSSishenSishenNorthern CapeOther
All 22 South African airports with an IATA code and scheduled passenger service. ICAO codes, locations and operator status verified against the OurAirports open dataset and the operators’ own sites.

Where the numbers come from

Airports Company South Africa publishes a passenger-movement statement for each of its nine airports, monthly, back to the 2012/13 financial year, split by international, regional, domestic and unscheduled traffic. We read those statements directly and check that the four categories add up to the printed total before publishing anything. For all nine airports in 2025/26 they reconcile to the passenger.

Lanseria and Kruger Mpumalanga are privately run and file nothing comparable, so their cells stay empty. Estimates for both circulate widely and we do not repeat them. The full sourcing note.