The distance between Surabaya and Semarang is around 279km (173 miles) and the quickest way to get there is to take the train which takes around 3h 5m.
We've found 3 different ways to get from Surabaya to Semarang by train, taxi and car. The recommended routes, which include information on duration, ticket price, and level of difficulty, can be found below.
👋 Also check out Semarang → Surabaya if you're planning a return trip.
Take the train to Semarang Tawang.
Kereta API
Take a taxi to Semarang.
Grab Taxi
+ 1 othersThere are several options for getting from Surabaya to Semarang by train, taxi and car. The cheapest option is to take the train which costs around IDR 179,735 ($12) and will take around 3h 5m.
The distance between Surabaya and Semarang is around 279km (173 miles). In a direct line (as the crow flies), the distance is 257km (160 miles)
It takes around 3h 5m to get from Surabaya and Semarang by train. If you are travelling by car it will take around 4hrs to drive there.
The quickest way to get from Surabaya to Semarang is to take the train which takes around 3h 5m and will set you back approx IDR 179,735 ($12).
The cheapest way to travel between Surabaya and Semarang, if you exclude driving, is to take the train which will typically cost around IDR 179,735 ($12) for a standard one-way ticket.
Yes there is a train service that runs between Surabaya and Semarang. It typically takes around 3h 5m and departs every 4 hours.
Yes there is a direct train service that runs between Surabaya and Semarang with no changeovers required. The train runs every 4 hours and takes 3h 5m.
Kereta API run train services between Surabaya and Semarang. Trains depart every 4 hours and will take around 3h 5m, however, this may vary depending on the particular service and whether it runs express or stops all stations.
Sorry, looks like there is no bus service that runs between Surabaya and Semarang. We recommend that you take the train to Semarang Tawang. instead which will take 3h 5m.
It doesn't look like you can fly directly from Surabaya to Semarang. We recommend that you take the train to Semarang Tawang. instead which will take 3h 5m.
The closest major airport to Semarang is Achmad Yani International Airport (SRG) (SRG) which is approximately 5km (3 miles) from Semarang. Adisumarmo International Airport (SOC) (SOC) and Adisucipto Airport (JOG) (JOG) are also nearby and might be a better alternative airport depending on where you are flying from.
Yes it is possible to drive from Surabaya and Semarang. The distance is around 350km (218 miles) by road and it will take around 4hrs in normal traffic conditons.
If you don't have a car, the easiest way to get from Surabaya to Semarang is to take the train which takes, on average, 3h 5m and will usually cost around IDR 179,735 ($12).
Transport option | Duration | Cost | Frequency | Distance |
---|---|---|---|---|
Train | 3h 5m | IDR 179,735($12) | hourly | 279km (173 miles) |
Taxi | 4hrs | IDR 1,797,355($120) | on demand | 350km (218 miles) |
Drive | 4hrs | IDR 584,140($39) | on demand | 350km (218 miles) |
Lion Mentari Airlines
Garuda Indonesia
Batik Air
Wings Air
Citilink Indonesia
Kereta API
Pahala Kencana
The following major airports near Semarang offer regular flights to various popular destinations within Indonesia and internationally.