The distance between Jakarta and Surabaya is around 702km (436 miles) and the quickest way to get there is to take the bus and then fly which takes around 2h 35m.
We've found 7 different ways to get from Jakarta to Surabaya by bus, plane, train and car. The recommended routes, which include information on duration, ticket price, and level of difficulty, can be found below.
👋 Also check out Surabaya → Jakarta if you're planning a return trip.
Fly from Jakarta Halim Perdana Kusuma (HLP) to Juanda International (SUB).
Batik Air
+ 1 others3 similiar routes
We’ve grouped similar routes together, click the arrows to see the other options.
Take the train to Surabaya Pasar Turi.
Kereta API
1 similiar route
We’ve grouped similar routes together, click the arrows to see the other options.
There are several options for getting from Jakarta to Surabaya by bus, plane, train and car. The cheapest option is to take the train which costs around IDR 269,605 ($18) and will take around 9h 30m. If you need to get there more quickly, you can take the bus and then fly and arrive in approximately 2h 35m, though it is a bit more costly at approximately IDR 823,790 ($55).
The distance between Jakarta and Surabaya is around 702km (436 miles). In a direct line (as the crow flies), the distance is 663km (412 miles)
It takes around 2h 35m to get from Jakarta and Surabaya by bus and plane. If you are travelling by car it will take around 8h 30m to drive there.
The quickest way to get from Jakarta to Surabaya is to take the bus and then fly which takes around 2h 35m and will set you back approx IDR 823,790 ($55).
The cheapest way to travel between Jakarta and Surabaya, if you exclude driving, is to take the train which will typically cost around IDR 269,605 ($18) for a standard one-way ticket.
Yes there is a train service that runs between Jakarta and Surabaya. It typically takes around 9h 30m and departs 4 times a day.
Yes there is a direct train service that runs between Jakarta and Surabaya with no changeovers required. The train runs 4 times a day and takes 9h 30m.
Kereta API run train services between Jakarta and Surabaya. Trains depart 4 times a day and will take around 9h 30m, 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 Jakarta and Surabaya. We recommend that you take the bus to Toll Sedyatmo then fly from Soekarno–Hatta (CGK) to Juanda International (SUB). instead which will take 2h 35m.
Yes you can fly from Jakarta and Surabaya. Flights depart from Jakarta Halim Perdana Kusuma (HLP) and arrive at Juanda International (SUB). The flight takes around 1h 25m.
Yes there is a direct flight between Jakarta and Surabaya with no stop-overs required. Flights typically take around 1h 25m.
Batik Air and Citilink Indonesia fly between Jakarta and Surabaya. Flights depart from Jakarta Halim Perdana Kusuma (HLP) and and arrive into Juanda International (SUB). These flights usually take around 1h 25m.
The flight from Jakarta to Surabaya typically takes around 1h 25m. Flights depart from Jakarta Halim Perdana Kusuma (HLP) and and arrive into Juanda International (SUB).
The closest major airport to Surabaya is Juanda International Airport (SUB) (SUB) which is approximately 16km (10 miles) from Surabaya. Abdul Rachman Saleh Airport (MLG) (MLG) and Blimbingsari Airport (BWX) (BWX) are also nearby and might be a better alternative airport depending on where you are flying from.
Yes it is possible to drive from Jakarta and Surabaya. The distance is around 779km (484 miles) by road and it will take around 8h 30m in normal traffic conditons.
If you don't have a car, the easiest way to get from Jakarta to Surabaya is to take the bus and then fly which takes, on average, 2h 35m and will usually cost around IDR 823,790 ($55).
Transport option | Duration | Cost | Frequency | Distance |
---|---|---|---|---|
Fly + 3 similar | 2h 45m | IDR 928,635($62) | hourly | 702km (436 miles) |
Bus and Plane | 2h 35m | IDR 823,790($55) | hourly | 752km (468 miles) |
Plane and Train | 4h 20m | IDR 1,437,885($95) | once daily | 832km (517 miles) |
Bus to Dipati Ukur, Fly | 4h 40m | IDR 1,407,930($95) | hourly | 770km (479 miles) |
Train + 1 similar | 9h 30m | IDR 269,605($18) | every 3 hours | 718km (446 miles) |
Train to Gubeng | 11h 45m | IDR 299,560($20) | once daily | 827km (514 miles) |
Drive | 8h 30m | IDR 659,030($44) | on demand | 779km (484 miles) |
Lion Mentari Airlines
Citilink Indonesia
Batik Air
Garuda Indonesia
Indonesia AirAsia
JA Connexion (by Perum PPD)
Citi Trans
Kereta API
The following major airports near Surabaya offer regular flights to various popular destinations within Indonesia and internationally.