There are 6 ways to get from Jakarta to Surabaya by plane, train, bus or car

Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2rio's travel planner.

Recommended option

Fly from Jakarta Halim Perdana Kusuma  •  2 h 59 min

  1. Fly from Jakarta Halim Perdana Kusuma (HLP) to Surabaya (SUB) HLP - SUB

$41 - $138

Cheapest option

Train  •  10 h 28 min

  1. Take the train from Gambir Central to Surabaya Pasar Turi Sembrani 48 / ...

$6 - $35

4 alternative options

Fly from Soekarno–Hatta  •  3 h 19 min

  1. Fly from Soekarno–Hatta (CGK) to Surabaya (SUB) CGK - SUB

$36 - $109

Train to Bandung, fly  •  6 h 7 min

  1. Take the train from Jakarta Gambir to Bandung
  2. Fly from Bandung (BDO) to Surabaya (SUB) BDO - SUB

$43 - $237

Bus  •  22 h

  1. Take the bus from Jakarta Rawamangun Bus Terminal to Surabaya

$13 - $19

Drive  •  9 h 51 min

  1. Drive from Jakarta to Surabaya 469.9 miles

$40 - $65

Questions & Answers

Yes, there is a direct bus departing from Jakarta Rawamangun Bus Terminal and arriving at Surabaya. Services depart once daily. The journey takes approximately 22 h.

More details

Yes, there is a direct train departing from Gambir Central and arriving at Surabaya Pasar Turi. Services depart three times a day, and operate every day. The journey takes approximately 10 h 28 min.

More details

The distance between Jakarta and Surabaya is 662 km. The road distance is 751.8 km.

Get driving directions

The best way to get from Jakarta to Surabaya without a car is to train which takes 10 h 28 min and costs .

More details

It takes approximately 2 h 59 min to get from Jakarta to Surabaya, including transfers.

More details

Jakarta to Surabaya bus services, operated by Kramat Djati, depart from Jakarta Rawamangun Bus Terminal station.

More details

Jakarta to Surabaya train services, operated by Kereta API, depart from Gambir Central station.

More details

The best way to get from Jakarta to Surabaya is to fly which takes 2 h 59 min and costs . Alternatively, you can train, which costs and takes 10 h 28 min, you could also bus, which costs and takes 22 h.

Mode details

The quickest flight from Jakarta Halim Perdana Kusuma Airport to Surabaya Airport is the direct flight which takes 1 h 10 min.

Search flights

Jakarta to Surabaya bus services, operated by Kramat Djati, arrive at Surabaya station.

More details

Map of how to get from Jakarta to Surabaya.
Launch map view
  • Distance: 413.9 miles
  • Duration: 2 h 59 min

What companies run services between Jakarta, Indonesia and Surabaya, Indonesia?

Batik Air and Citilink Indonesia fly from Jakarta to Surabaya hourly. Alternatively, Kereta API operates a train from Jakarta to Surabaya 3 times a day. Tickets cost $6 - $35 and the journey takes 10 h 28 min.

Airlines
Batik Air
Website
batikair.com
Flights from Jakarta Halim Perdana Kusuma to Surabaya
Ave. Duration
1 h 27 min
When
Every day
Estimated price
$50 - $130
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 30 min
When
Every day
Estimated price
$45 - $140
Garuda Indonesia
Website
garuda-indonesia.com
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 36 min
When
Every day
Estimated price
$55 - $160
Flights from Bandung to Surabaya
Ave. Duration
1 h 30 min
When
Every day
Estimated price
$75 - $460
Citilink Indonesia
Website
Flights from Jakarta Halim Perdana Kusuma to Surabaya
Ave. Duration
1 h 32 min
When
Every day
Estimated price
$40 - $150
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 32 min
When
Every day
Estimated price
$30 - $100
Flights from Bandung to Surabaya
Ave. Duration
1 h 30 min
When
Every day
Estimated price
$55 - $290
Lion Mentari Airlines
Website
lionair.co.id
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 29 min
When
Every day
Estimated price
$29 - $100
Flights from Bandung to Surabaya
Ave. Duration
1 h 11 min
When
Every day
Estimated price
$55 - $220
PT. Sriwijaya Air
Website
sriwijayaair.co.id
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 15 min
When
Every day
Estimated price
$30 - $110
Flights from Soekarno–Hatta to Surabaya via Bandar Lampung
Ave. Duration
3 h 12 min
When
Every day
Estimated price
$30 - $110
Indonesia AirAsia Extra, PT
Website
airasia.com
Flights from Soekarno–Hatta to Surabaya
Ave. Duration
1 h 35 min
When
Every day
Estimated price
$45 - $320
NAM Air
Website
sriwijayaair.co.id
Flights from Bandung to Surabaya
Ave. Duration
1 h 17 min
When
Every day
Estimated price
$55 - $370
Wings Air
Website
lionair.co.id
Flights from Bandung to Surabaya via Solo
Ave. Duration
2 h 35 min
When
Monday, Wednesday, Thursday and Friday
Estimated price
$60 - $440
Train operators
Kereta API
Phone
021-121
Website
tiket.kereta-api.co.id
Train from Jakarta Gambir to Bandung
Ave. Duration
3 h 39 min
Frequency
Hourly
Estimated price
$1 - $9
Website
kai.id
Book at
tiket.com
Economy
$1 - $9
Business
$4 - $8
Executive
$6 - $13
Train from Gambir Central to Surabaya Pasar Turi
Ave. Duration
10 h 28 min
Frequency
3 times a day
Estimated price
$6 - $35
Website
kai.id
Book at
tiket.com
Economy
$6 - $19
Business
$18 - $24
Executive
$24 - $35
Bus operators
Kramat Djati
Website
kramatdjati.co.id
Bus from Jakarta Rawamangun Bus Terminal to Surabaya
Ave. Duration
22 h
Frequency
Once daily
Estimated price
$13 - $19
Schedules at
kramatdjati.co.id
Book at
easybook.com

Want to know more about travelling around the world?

Rome2rio's Travel Guide series provide vital information for the global traveller. Read our range of informative guides on popular transport routes and companies - including Is ride-sharing platform BlaBlaCar right for you?, Thanksgiving 2018: How to travel stress-free and Travelling to and around Russia for the 2018 FIFA World Cup - to help you get the most out of your next trip.

More Questions & Answers

Jakarta to Surabaya train services, operated by Kereta API, arrive at Surabaya Pasar Turi station.

More details

Yes, the driving distance between Jakarta to Surabaya is 752 km. It takes approximately 9 h 51 min to drive from Jakarta to Surabaya.

Get driving directions

Citilink Indonesia and Batik Air offer flights from Jakarta Halim Perdana Kusuma Airport to Surabaya Airport.

Search flights

There are 436+ hotels available in Surabaya. Prices start at $13 USD per night.

More details

The best way to get from Jakarta to Jakarta Halim Perdana Kusuma Airport is to bus which takes 30 min and costs .

More details