type: reference domain: flysafair auto_compiled: false source_migrated_from: CoWork/context/routes.md migrated_date: 2026-04-18
| Airport | IATA | ICAO | City |
|---|---|---|---|
| O.R. Tambo International | JNB / ORT | FAOR | Johannesburg (primary hub) |
| Cape Town International | CPT | FACT | Cape Town (secondary base) |
| King Shaka International | DUR / DBN | KSIA | Durban (secondary base) |
| Lanseria International | HLA | FALA | Johannesburg (secondary - LCC preferred) |
| Airport | IATA | City | Country |
|---|---|---|---|
| O.R. Tambo International | JNB | Johannesburg | South Africa |
| Cape Town International | CPT | Cape Town | South Africa |
| King Shaka International | DUR | Durban | South Africa |
| Lanseria International | HLA | Johannesburg (west) | South Africa |
| George Airport | GRJ | George (Garden Route) | South Africa |
| East London Airport | ELS | East London | South Africa |
| Chief Dawid Stuurman (Port Elizabeth) | PLZ | Gqeberha | South Africa |
| Bram Fischer (Bloemfontein) | BFN | Bloemfontein | South Africa |
| Kruger Mpumalanga International | MQP | Nelspruit/Mbombela | South Africa |
| Hoedspruit Airport | HDS | Hoedspruit | South Africa |
| Robert Gabriel Mugabe International | HRE | Harare | Zimbabwe |
| Victoria Falls Airport | VFA | Victoria Falls | Zimbabwe |
| Zanzibar Airport | ZNZ | Zanzibar | Tanzania |
| Sir Seewoosagur Ramgoolam International | MRU | Mauritius | Mauritius |
| Hosea Kutako (Windhoek) | WDH | Windhoek | Namibia |
| Kenneth Kaunda International | LVI | Livingstone | Zambia |
| Maputo International | MPM | Maputo | Mozambique |
| Route | 2026 Flights | Distance (km) | Type |
|---|---|---|---|
| CPT-JNB | 3,093 | 1,271 | Domestic trunk |
| DUR-JNB | 2,841 | 478 | Domestic trunk |
| CPT-DUR | 1,191 | 1,279 | Domestic trunk |
| CPT-HLA | 1,176 | 1,264 | Domestic trunk |
| GRJ-JNB | 699 | 1,039 | Domestic |
| JNB-PLZ | 694 | 906 | Domestic |
| DUR-HLA | 635 | 515 | Domestic |
| ELS-JNB | 597 | 766 | Domestic |
| CPT-PLZ | 508 | 648 | Domestic |
| CPT-ELS | 333 | 863 | Domestic |
| HLA-PLZ | 154 | 919 | Domestic |
| HRE-JNB | 154 | 955 | International |
| GRJ-HLA | 154 | 1,042 | Domestic |
| CPT-MQP | 153 | 1,537 | Domestic |
| BFN-JNB | 153 | 379 | Domestic |
| DUR-PLZ | 153 | 711 | Domestic |
| BFN-CPT | 152 | 909 | Domestic |
| ELS-HLA | 130 | 787 | Domestic |
| DUR-ELS | 110 | 492 | Domestic |
| JNB-MRU | 88 | 3,070 | International |
| CPT-GRJ | 66 | 349 | Domestic |
| JNB-VFA | 66 | 925 | International |
| JNB-ZNZ | 66 | 2,494 | International |
| JNB-MQP | 44 | 299 | Domestic |
| CPT-WDH | 44 | 1,278 | International |
| CPT-HDS | 35 | 1,609 | Domestic |
34 route pairs with great circle distances. Source: route_distances.json
| Route | km | Route | km | Route | km |
|---|---|---|---|---|---|
| BFN-CPT | 909 | CPT-HLA | 1,264 | DUR-HLA | 515 |
| BFN-GRJ | 660 | CPT-JNB | 1,271 | DUR-JNB | 478 |
| BFN-HLA | 385 | CPT-MQP | 1,537 | DUR-PLZ | 711 |
| BFN-JNB | 379 | CPT-PLZ | 648 | ELS-HLA | 787 |
| BFN-PLZ | 546 | CPT-WDH | 1,278 | ELS-JNB | 766 |
| CPT-DUR | 1,279 | DUR-ELS | 492 | ELS-PLZ | 231 |
| CPT-ELS | 863 | DUR-GRJ | 959 | GRJ-HLA | 1,042 |
| CPT-GRJ | 349 | GRJ-JNB | 1,039 | ||
| CPT-HDS | 1,609 | HLA-PLZ | 919 | ||
| HRE-JNB | 955 | ||||
| JNB-LVI | 954 | ||||
| JNB-MPM | 433 | ||||
| JNB-MQP | 299 | ||||
| JNB-MRU | 3,070 | ||||
| JNB-PLZ | 906 | ||||
| JNB-VFA | 925 | ||||
| JNB-ZNZ | 2,494 |
Routes normalised alphabetically: CPT-JNB and JNB-CPT both stored as CPT-JNB.
| Data | Source | Granularity |
|---|---|---|
| Pax, LF, Revenue, Yield per route | SummaryRoute.xlsx |
Daily / Weekly / Monthly |
| Market share vs competitors | ACSA Monthly Data.xlsx |
Monthly |
| Competitor capacity by route | Capacity\reports\*.xlsx or FlightAware DB |
Monthly |
| Stage lengths | route_distances.json |
Per route pair |
| Fuel burn per route | Fuel Burn\Fuel Burn YYYY.xlsx |
Per flight leg |
XXX-YYY or XXX - YYY - always normalise before groupingMission Control is the board for your delegated work: requests come in, Luci coordinates the next step, and evidence stays visible for review.
Luci is your always-on assistant for routing, status updates, and follow-through. Operators can still open deeper evidence when needed.