Cape Town to Johannesburg Trip Overview
Distance 1260 km (787.5 miles) | |
Price range US$ 55-US$ 756 | |
Ride Duration Range 2h-1d 2h 45m | |
Earliest Departure 04:05 | |
Latest Departure 18:25 | |
Most Popular Operator |
Find up-to-date information on departure times, schedules, and prices so you can easily compare and book your tickets.
Taking a bus from Cape Town to Johannesburg
Fastest bus: 15h 5m
Cheapest bus: US$ 55

About the ride from Cape Town to Johannesburg
Cape Town to Johannesburg Route Information
The distance between Cape Town and Johannesburg is 788 miles, or approximately 1260 kilometers.
There are 2 ways to get from Cape Town to Johannesburg, including bus,flight.
The earliest departure leaves at 04:05 and has a duration of 2 hours 5 minutes.
The fastest way to travel is by flight, which takes approximately 2 hours.
Cape Town to Johannesburg by bus
- Starting Price: US$ 55
- 46 departures a day, or 322 departures a week
There are 7 travel classes for this journey, including: Mainliner, Luxury, Luxurious Coach, Sleepliner, Express, Luxury Coach and Standard.
Each bus ticket offers an individual seat with basic passenger necessities. Conditions and amenities vary by provider. For more detailed information and availability see all bus options.
Cape Town to Johannesburg by flight
- Starting Price: US$ 217
- 33 departures a day, or 231 departures a week
The only travel class available is Economy.
Each flight ticket offers an individual seat with basic passenger necessities. Conditions and amenities vary by provider. For more detailed information and availability see all flight options.
Companies Operating from Cape Town to Johannesburg
Why travel with Bookaway?
Bookaway.com makes it simple and easy to find, compare, and buy city-to-city tickets via bus, train, ferry, and more. We support over 13 languages and 23 currencies worldwide, and we believe that everyone should easily be able to find and purchase what they are looking for. We don’t just want to help you get where you want to go - we want you to enjoy the ride.







