Travel Jakarta to Surabaya

Jakarta to Surabaya

Arrive in Surabaya, where historic architecture meets coastal life, a stark contrast with Jakarta’s dense urban skyline. You’ll find practical information on schedules and prices for several transport options between Jakarta and Surabaya, including flight, combined, bus or train.

Travel options for Jakarta to Surabaya

From Jakarta to Surabaya, travel affordably by a bus for 220000 IDR, or get to Surabaya faster by flight in 1h y 25 minutes.

Bus from Jakarta to Surabaya

Hop on a bus departing from multiple stations, including Terminal Kampung Rambutan Jakarta, Jakarta, Jatiwarna, Bekasi and others and travel from Jakarta toward Surabaya. Services run frequently throughout the day, giving you the flexibility to choose a departure time that fits your plans. The journey usually takes around 8 hours 40 minutes, with bus ticket prices starting from 220,000 IDR, and the route ends at multiple stations, including Terminal Purabaya Bungurasih, Surabaya, Surabaya, Ruko Pengampon Square F3, Surabaya and others. Plan ahead and book your ticket in advance.

Prices: 220,000 IDR

Duration: 8h 40m – 22h ⏱

Ride with bus from Jakarta to Surabaya for 220000 IDR Ride with bus from Jakarta to Surabaya in 8h 40m Journey with bus from Jakarta to Surabaya for 220000 IDR Hop on bus from Jakarta to Surabaya for 220000 IDR Explore with bus from Jakarta to Surabaya for 220000 IDR Ride with bus from Jakarta to Surabaya for 220000 IDR

View all Bus tickets →

Train from Jakarta to Surabaya

Start your journey at Gambir, Pasar Baru, Pasar Senen, Pasar Baru or Jatinegara, Jakarta and take a scenic train ride connecting Jakarta with Surabaya, arriving at multiple stations, including Surabaya Pasar Turi, Surabaya Gubeng, Waru, Sidoarjo and others. The trip lasts roughly 7 hours 45 minutes, with tickets starting from 412,142 IDR. Plan ahead and reserve your seat for an enjoyable travel experience.

Prices: 412,142 IDR

Duration: 7h 45m – 12h 25m ⏱

Explore with train from Jakarta to Surabaya for 412142 IDR Book train from Jakarta to Surabaya in 7h 45m Book train from Jakarta to Surabaya for 412142 IDR Take train from Jakarta to Surabaya in 7h 45m

View all Train tickets →

Flight from Jakarta to Surabaya

Reaching Surabaya from Jakarta by air involves departing from CGK Soekarno Hatta Airport, Tangerang or HLP Halim Perdanakusuma Airport, Jakarta and covering the distance in approximately 1 hour 25 minutes, before landing at SUB Surabaya Airport, East Java. Flying is the most time-efficient way to travel this route, and fares are often available from 850,955 IDR. Full schedules and booking options are available via the available flight options.

Prices: 850,955 IDR

Duration: 1h 25m – 1h 40m ⏱

Choose avia from Jakarta to Surabaya in 1h 25m Ride with avia from Jakarta to Surabaya for 850955 IDR Journey with avia from Jakarta to Surabaya in 1h 25m Journey with avia from Jakarta to Surabaya for 850955 IDR Book avia from Jakarta to Surabaya for 850955 IDR Travel with avia from Jakarta to Surabaya for 850955 IDR

View all Flight tickets →

Combined from Jakarta to Surabaya

To reach Surabaya from Jakarta via combined transport, you can board at HLP Halim Perdanakusuma Airport, Jakarta and expect to arrive at SUB Surabaya Airport, East Java. The total journey lasts about 3 hours 55 minutes, offering a practical solution for multi-leg trips. Tickets are available from 2,186,640 IDR, explore schedules and book your trip here.

Prices: 2,186,640 IDR

Duration: 3h 55m – 7h 55m ⏱

Book combined from Jakarta to Surabaya in 3h 55m

View all Combined tickets →

Distance Jakarta to Surabaya

The distance between Jakarta and Surabaya is 663.5 kilometers.

Jakarta to Surabaya Transportation Comparison

Compare transport options side by side using key travel metrics to find the best way to get from Jakarta to Surabaya

Bus
Train
Flight
Combined
Average price
516,494 IDR
847,712 IDR
1,180,548 IDR
5,260,356 IDR
Cheapest price
220,000 IDR
412,142 IDR
850,955 IDR
2,186,640 IDR
Average duration
12h 31m
10h 04m
1h 32m
5h 55m
Minimum duration
8h 40m
7h 45m
1h 25m
3h 55m
Number of departures
172
25
37
2
Tickets

Bus Routes & Schedules from Jakarta to Surabaya

If you’re planning to reach Surabaya by bus from Jakarta, it’s useful to know that the route is served by multiple departure and arrival stations rather than a single bus terminal. This means you can choose the combination of stops that best suits where you’re staying or heading next. Travel times vary depending on the selected stops, but most services take around 8h 40m to 22h. Buses run throughout the day, with departures starting from 04:45 and continuing until 22:00. Prices usually begin at 220,000 to 999,992 IDR, with minor differences depending on the specific service or boarding point. Taking a moment to review the complete bus timetable for Jakarta to Surabaya allows you to compare station options and select the best bus for your journey.

Departure stations
Terminal Kampung Rambutan Jakarta
Jakarta
Jatiwarna, Bekasi
Pasar Rebo, Jakarta
Kampung Rambutan, Jakarta
Terminal Poris Plawad, Tangerang
KFC Box Pasar Jumat, Jakarta
Indomaret H Saikin Jakarta Selatan
Grogol Jakarta Barat
Pluit, Jakarta
West Jakarta
Jelambar, Jakarta
Kota Bekasi
Pulo Gebang, Jakarta
Terminal Kali Deres, Jakarta
Pondok Pinang, Jakarta
Terminal Tanjung Priok, Jakarta
Tanjung Priok, Jakarta
Terminal Lebak Bulus, Jakarta
Penjaringan, Jakarta
Jembatan Gantung, Jakarta
Terminal Grogol, Jakarta
Cilandak, Jakarta
Arrival stations
Terminal Purabaya Bungurasih, Surabaya
Surabaya
Ruko Pengampon Square F3, Surabaya
Semeru Medeang Surabaya, Bungurasih
Bungurasih

Bus Timetable: Cilandak, Jakarta → Surabaya

  • 13:35 01:30 11h 55m 599999 IDR

Bus Timetable: Grogol Jakarta Barat → Semeru Medeang Surabaya, Bungurasih

  • 18:25 06:00 11h 35m 999992 IDR

Bus Timetable: Indomaret H Saikin Jakarta Selatan → Semeru Medeang Surabaya, Bungurasih

  • 18:50 06:00 11h 10m 999992 IDR

Bus Timetable: Jakarta → Surabaya

  • 04:45 17:30 12h 45m 441753 IDR
  • 06:00 18:30 12h 30m 441753 IDR
  • 06:30 18:00 11h 30m 679620 IDR
  • 06:40 18:00 11h 20m 679620 IDR
  • 07:00 18:30 11h 30m 481397 IDR
  • 07:45 20:00 12h 15m 647904 IDR
  • 07:55 20:10 12h 15m 718584 IDR
  • 08:00 18:30 10h 30m 481397 IDR
  • 08:15 20:00 11h 45m 624344 IDR
  • 08:25 20:10 11h 45m 695024 IDR
  • 08:30 22:45 14h 15m 447643 IDR
  • 09:00 19:00 10h 317156 IDR
  • 10:00 01:30 15h 30m 447643 IDR
  • 10:30 00:45 14h 15m 447643 IDR
  • 11:00 01:30 14h 30m 435862 IDR
  • 11:20 04:00 16h 40m 494763 IDR
  • 11:30 01:00 13h 30m 435862 IDR
  • 12:00 05:30 17h 30m 435862 IDR
  • 12:25 06:20 17h 55m 376962 IDR
  • 12:30 03:00 14h 30m 435862 IDR
  • 12:45 03:15 14h 30m 435862 IDR
  • 12:55 02:55 14h 435862 IDR
  • 13:00 00:00 11h 647904 IDR
  • 13:10 00:10 11h 742145 IDR
  • 13:25 06:20 16h 55m 376962 IDR
  • 13:30 00:10 10h 40m 742145 IDR
  • 14:00 00:00 10h 423629 IDR
  • 14:01 03:30 13h 29m 565443 IDR
  • 14:10 05:45 15h 35m 435862 IDR
  • 14:15 01:45 11h 30m 494763 IDR
  • 14:30 05:30 15h 706804 IDR
  • 14:55 03:20 12h 25m 481397 IDR
  • 15:00 04:45 13h 45m 435862 IDR
  • 15:15 03:00 11h 45m 865835 IDR
  • 15:30 04:45 13h 15m 435862 IDR
  • 15:50 03:20 11h 30m 481397 IDR
  • 16:00 05:30 13h 30m 647904 IDR
  • 16:10 03:30 11h 20m 718584 IDR
  • 16:15 06:45 14h 30m 435862 IDR
  • 16:30 09:00 16h 30m 412302 IDR
  • 16:40 05:35 12h 55m 447416 IDR
  • 16:45 06:15 13h 30m 435862 IDR
  • 16:50 04:35 11h 45m 441753 IDR
  • 17:00 04:00 11h 471203 IDR
  • 17:05 04:30 11h 25m 792890 IDR
  • 17:10 05:05 11h 55m 792890 IDR
  • 17:15 04:35 11h 20m 441753 IDR
  • 17:20 09:00 15h 40m 412302 IDR
  • 17:30 03:30 10h 523307 IDR
  • 17:40 05:35 11h 55m 447416 IDR
  • 17:41 05:16 11h 35m 481397 IDR
  • 17:45 04:35 10h 50m 441753 IDR
  • 18:00 05:00 11h 622985 IDR
  • 18:10 05:05 10h 55m 792890 IDR
  • 18:30 14:00 19h 30m 736255 IDR
  • 18:37 05:16 10h 39m 481397 IDR
  • 18:40 05:00 10h 20m 471203 IDR
  • 18:45 05:10 10h 25m 435862 IDR
  • 18:50 05:00 10h 10m 679620 IDR
  • 19:00 05:00 10h 423629 IDR
  • 19:05 07:00 11h 55m 481397 IDR
  • 19:30 09:00 13h 30m 412302 IDR
  • 19:33 05:16 9h 43m 481397 IDR
  • 20:00 06:00 10h 423629 IDR
  • 20:10 07:00 10h 50m 481397 IDR
  • 20:30 06:00 9h 30m 695024 IDR
  • 21:00 06:15 9h 15m 695024 IDR

Bus Timetable: Jatiwarna, Bekasi → Surabaya

  • 20:35 06:40 10h 5m 699998 IDR

Bus Timetable: Jelambar, Jakarta → Bungurasih

  • 12:45 00:15 11h 30m 570000 IDR

Bus Timetable: Jembatan Gantung, Jakarta → Surabaya

  • 17:10 06:10 13h 599999 IDR

Bus Timetable: Kampung Rambutan, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 19:00 07:10 12h 10m 359999 IDR

Bus Timetable: Kampung Rambutan, Jakarta → Surabaya

  • 07:35 17:45 10h 10m 699998 IDR
  • 20:15 06:30 10h 15m 699998 IDR

Bus Timetable: Kampung Rambutan, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 19:00 06:30 11h 30m 359999 IDR

Bus Timetable: KFC Box Pasar Jumat, Jakarta → Semeru Medeang Surabaya, Bungurasih

  • 18:55 06:00 11h 5m 999992 IDR

Bus Timetable: Kota Bekasi → Surabaya

  • 04:45 17:30 12h 45m 441753 IDR
  • 06:00 18:30 12h 30m 441753 IDR
  • 07:45 17:30 9h 45m 506543 IDR
  • 08:00 18:30 10h 30m 471203 IDR
  • 08:30 18:00 9h 30m 679620 IDR
  • 08:40 20:10 11h 30m 695024 IDR
  • 11:45 01:15 13h 30m 435862 IDR
  • 12:50 01:00 12h 10m 435862 IDR
  • 13:00 04:00 15h 435862 IDR
  • 13:15 02:45 13h 30m 647904 IDR
  • 13:30 05:30 16h 435862 IDR
  • 13:50 05:45 15h 55m 435862 IDR
  • 14:00 00:10 10h 10m 742145 IDR
  • 14:10 01:30 11h 20m 599999 IDR
  • 14:15 05:40 15h 25m 435862 IDR
  • 14:30 01:00 10h 30m 435862 IDR
  • 14:40 05:20 14h 40m 435862 IDR
  • 14:50 06:05 15h 15m 376962 IDR
  • 15:00 07:00 16h 706804 IDR
  • 15:40 02:30 10h 50m 494763 IDR
  • 15:45 07:00 15h 15m 435862 IDR
  • 15:50 02:30 10h 40m 494763 IDR
  • 16:00 03:00 11h 565443 IDR
  • 16:15 06:00 13h 45m 530103 IDR
  • 16:20 07:00 14h 40m 435862 IDR
  • 16:25 04:55 12h 30m 647904 IDR
  • 16:30 07:00 14h 30m 435862 IDR
  • 17:00 06:30 13h 30m 435862 IDR
  • 17:15 06:00 12h 45m 441753 IDR
  • 17:30 03:30 10h 695024 IDR
  • 17:50 04:30 10h 40m 565443 IDR
  • 18:00 05:04 11h 4m 481397 IDR
  • 18:10 04:35 10h 25m 441753 IDR
  • 18:15 05:35 11h 20m 447416 IDR
  • 18:30 04:30 10h 695024 IDR
  • 19:00 05:45 10h 45m 599999 IDR
  • 19:10 05:05 9h 55m 594667 IDR
  • 19:30 07:00 11h 30m 441753 IDR
  • 19:33 05:16 9h 43m 792890 IDR
  • 19:50 05:00 9h 10m 435862 IDR
  • 20:00 05:00 9h 679620 IDR
  • 20:20 05:00 8h 40m 471203 IDR
  • 20:30 09:00 12h 30m 412302 IDR
  • 21:30 07:05 9h 35m 699998 IDR

Bus Timetable: Pasar Rebo, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 18:25 07:10 12h 45m 359999 IDR

Bus Timetable: Pasar Rebo, Jakarta → Surabaya

  • 13:40 01:30 11h 50m 599999 IDR
  • 20:25 06:40 10h 15m 699998 IDR

Bus Timetable: Pasar Rebo, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 18:25 06:30 12h 5m 359999 IDR

Bus Timetable: Penjaringan, Jakarta → Surabaya

  • 17:20 06:20 13h 599999 IDR

Bus Timetable: Pluit, Jakarta → Surabaya

  • 17:40 06:40 13h 599999 IDR

Bus Timetable: Pondok Pinang, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 18:00 07:10 13h 10m 359999 IDR

Bus Timetable: Pondok Pinang, Jakarta → Surabaya

  • 07:30 18:10 10h 40m 699998 IDR
  • 13:27 01:30 12h 3m 599999 IDR
  • 20:00 06:45 10h 45m 699998 IDR

Bus Timetable: Pondok Pinang, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 18:00 06:30 12h 30m 359999 IDR

Bus Timetable: Pulo Gebang, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 19:30 06:40 11h 10m 359999 IDR
  • 20:00 07:10 11h 10m 349999 IDR

Bus Timetable: Pulo Gebang, Jakarta → Semeru Medeang Surabaya, Bungurasih

  • 19:30 06:00 10h 30m 999992 IDR

Bus Timetable: Pulo Gebang, Jakarta → Surabaya

  • 08:30 18:00 9h 30m 699998 IDR
  • 14:00 01:30 11h 30m 599999 IDR
  • 18:30 05:45 11h 15m 599999 IDR
  • 19:00 07:00 12h 599999 IDR
  • 21:00 06:35 9h 35m 699998 IDR

Bus Timetable: Pulo Gebang, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 19:30 06:00 10h 30m 349999 IDR
  • 20:00 06:30 10h 30m 349999 IDR
  • 22:00 12:00 14h 220000 IDR

Bus Timetable: Tanjung Priok, Jakarta → Surabaya

  • 18:00 06:15 12h 15m 599999 IDR
  • 18:15 06:15 12h 599999 IDR

Bus Timetable: Terminal Grogol, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 17:00 06:40 13h 40m 359999 IDR

Bus Timetable: Terminal Grogol, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 17:00 06:00 13h 359999 IDR
  • 21:00 16:00 19h 220000 IDR

Bus Timetable: Terminal Kali Deres, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 16:30 06:40 14h 10m 359999 IDR

Bus Timetable: Terminal Kali Deres, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 15:15 06:15 15h 370000 IDR
  • 16:30 06:00 13h 30m 359999 IDR
  • 19:00 16:00 21h 220000 IDR
  • 20:00 12:00 16h 255000 IDR

Bus Timetable: Terminal Kampung Rambutan Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 21:00 12:00 15h 255000 IDR
  • 21:30 16:00 18h 30m 220000 IDR

Bus Timetable: Terminal Lebak Bulus, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 18:10 07:10 13h 359999 IDR

Bus Timetable: Terminal Lebak Bulus, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 16:10 05:10 13h 370000 IDR
  • 18:10 06:30 12h 20m 359999 IDR

Bus Timetable: Terminal Poris Plawad, Tangerang → Ruko Pengampon Square F3, Surabaya

  • 16:00 06:40 14h 40m 359999 IDR
  • 16:30 07:10 14h 40m 359999 IDR

Bus Timetable: Terminal Poris Plawad, Tangerang → Surabaya

  • 12:30 00:00 11h 30m 599999 IDR
  • 16:30 05:30 13h 599999 IDR
  • 19:15 06:45 11h 30m 699998 IDR

Bus Timetable: Terminal Poris Plawad, Tangerang → Terminal Purabaya Bungurasih, Surabaya

  • 14:45 05:15 14h 30m 370000 IDR
  • 16:00 06:00 14h 359999 IDR
  • 16:30 06:30 14h 359999 IDR
  • 18:00 16:00 22h 220000 IDR
  • 19:00 12:00 17h 255000 IDR

Bus Timetable: Terminal Tanjung Priok, Jakarta → Ruko Pengampon Square F3, Surabaya

  • 18:30 06:40 12h 10m 359999 IDR

Bus Timetable: Terminal Tanjung Priok, Jakarta → Terminal Purabaya Bungurasih, Surabaya

  • 18:30 06:00 11h 30m 359999 IDR

Bus Timetable: West Jakarta → Surabaya

  • 17:00 06:00 13h 599999 IDR

Check all Combined tickets →

Train Routes & Schedules from Jakarta to Surabaya

For journeys between Jakarta and Surabaya, trains run via several departure and arrival stations. The travel time varies by station combination, usually taking about 7h 45m to 12h 25m. Rail services are available from 05:00 to 23:35 with fares beginning at 412,142 to 1,030,357 IDR. Checking the complete train timetable for Jakarta and Surabaya helps you see all station pairings, compare expected durations and select the departure that suits your itinerary.

Departure stations
Gambir, Pasar Baru
Pasar Senen, Pasar Baru
Jatinegara, Jakarta
Arrival stations
Surabaya Pasar Turi
Surabaya Gubeng
Waru, Sidoarjo
Wonokromo, Surabaya

Train Timetable: Gambir, Pasar Baru → Surabaya Gubeng

  • 06:20 16:38 10h 18m 1030357 IDR
  • 17:00 03:20 10h 20m 911052 IDR
  • 19:55 05:28 9h 33m 802593 IDR

Train Timetable: Gambir, Pasar Baru → Surabaya Pasar Turi

  • 08:20 16:05 7h 45m 1030357 IDR
  • 10:20 18:47 8h 27m 824285 IDR
  • 14:45 00:40 9h 55m 791748 IDR
  • 19:30 03:55 8h 25m 824285 IDR
  • 20:30 04:15 7h 45m 1030357 IDR
  • 23:35 08:40 9h 5m 997819 IDR

Train Timetable: Jatinegara, Jakarta → Surabaya Gubeng

  • 12:23 22:40 10h 17m 824285 IDR
  • 22:27 08:33 10h 6m 878514 IDR

Train Timetable: Jatinegara, Jakarta → Surabaya Pasar Turi

  • 08:21 19:38 11h 17m 759210 IDR
  • 12:23 22:15 9h 52m 824285 IDR
  • 22:27 08:09 9h 42m 878514 IDR

Train Timetable: Jatinegara, Jakarta → Waru, Sidoarjo

  • 22:27 08:52 10h 25m 878514 IDR

Train Timetable: Pasar Senen, Pasar Baru → Surabaya Gubeng

  • 11:10 23:35 12h 25m 845977 IDR
  • 12:10 22:40 10h 30m 824285 IDR
  • 22:15 08:33 10h 18m 878514 IDR

Train Timetable: Pasar Senen, Pasar Baru → Surabaya Pasar Turi

  • 05:00 15:33 10h 33m 759210 IDR
  • 08:10 19:38 11h 28m 759210 IDR
  • 12:10 22:15 10h 5m 824285 IDR
  • 21:30 07:58 10h 28m 412142 IDR
  • 22:15 08:09 9h 54m 878514 IDR

Train Timetable: Pasar Senen, Pasar Baru → Waru, Sidoarjo

  • 22:15 08:52 10h 37m 878514 IDR

Train Timetable: Pasar Senen, Pasar Baru → Wonokromo, Surabaya

  • 11:10 23:25 12h 15m 845977 IDR

Check all Train tickets →

Flight Routes & Schedules from Jakarta to Surabaya

- Travel by flight from CGK Soekarno Hatta Airport, Tangerang to SUB Surabaya Airport, East Java, with flights usually taking 1h 30m to 1h 40m. Services operate from 03:30 until 20:35, and tickets start at 850,955 to 1,395,856 IDR.
- Board a flight at HLP Halim Perdanakusuma Airport, Jakarta and spend approximately 1h 25m to 1h 30m in the air, arriving at SUB Surabaya Airport, East Java. The flight operates from 05:25 until 20:15 with fares from 1,138,071 to 1,484,521 IDR.

Departure stations
CGK Soekarno Hatta Airport, Tangerang
HLP Halim Perdanakusuma Airport, Jakarta
Arrival stations
SUB Surabaya Airport, East Java

Flight Timetable: CGK Soekarno Hatta Airport, Tangerang → SUB Surabaya Airport, East Java

  • 03:30 05:00 1h 30m 850955 IDR
  • 05:25 07:00 1h 35m 1012364 IDR
  • 06:00 07:30 1h 30m 1092817 IDR
  • 06:40 08:15 1h 35m 1336304 IDR
  • 06:50 08:25 1h 35m 1395856 IDR
  • 07:00 08:35 1h 35m 1067843 IDR
  • 08:00 09:30 1h 30m 1092817 IDR
  • 08:30 10:05 1h 35m 1247856 IDR
  • 08:45 10:25 1h 40m 1395856 IDR
  • 09:00 10:30 1h 30m 944147 IDR
  • 09:15 10:50 1h 35m 1067843 IDR
  • 10:25 12:00 1h 35m 1067843 IDR
  • 12:00 13:35 1h 35m 1067843 IDR
  • 12:05 13:45 1h 40m 1395856 IDR
  • 13:30 15:00 1h 30m 1175616 IDR
  • 14:00 15:35 1h 35m 1395856 IDR
  • 14:25 16:00 1h 35m 1258080 IDR
  • 14:40 16:10 1h 30m 944147 IDR
  • 15:20 16:50 1h 30m 1175616 IDR
  • 16:00 17:40 1h 40m 1395856 IDR
  • 17:00 18:30 1h 30m 1092817 IDR
  • 17:15 18:50 1h 35m 1247856 IDR
  • 17:30 19:10 1h 40m 1395856 IDR
  • 17:45 19:20 1h 35m 1067843 IDR
  • 18:30 20:10 1h 40m 1395856 IDR
  • 18:55 20:25 1h 30m 1092817 IDR
  • 19:00 20:40 1h 40m 1067843 IDR
  • 20:00 21:30 1h 30m 1092817 IDR
  • 20:35 22:10 1h 35m 1067843 IDR

Flight Timetable: HLP Halim Perdanakusuma Airport, Jakarta → SUB Surabaya Airport, East Java

  • 05:25 06:50 1h 25m 1484521 IDR
  • 08:50 10:15 1h 25m 1198243 IDR
  • 09:30 10:55 1h 25m 1152989 IDR
  • 13:00 14:30 1h 30m 1344567 IDR
  • 13:35 15:00 1h 25m 1152989 IDR
  • 16:35 18:00 1h 25m 1152989 IDR
  • 16:45 18:15 1h 30m 1138071 IDR
  • 20:15 21:40 1h 25m 1152989 IDR

Check all Flight tickets →

Combined Routes & Schedules from Jakarta to Surabaya

Board at HLP Halim Perdanakusuma Airport, Jakarta for a flexible route toward Surabaya, combining buses, ferries, or trains. Travel for roughly 3h 55m to 7h 55m before arriving at SUB Surabaya Airport, East Java. Departures run from 10:50 until 15:50, and ticket prices begin at 2,186,640 to 8,334,072 IDR. Reviewing the timetable for connections from Jakarta lets you plan your trip efficiently.

Check all Combined tickets →

Frequently Asked Questions Jakarta to Surabaya

Below you will find answers to the most common questions about traveling from Jakarta to Surabaya.

How long does the Jakarta to Surabaya route usually take?

Travel time on the Jakarta to Surabaya route depends on the transport and the exact departure and arrival points. Flights take about 1 hour 25 minutes to 1 hour 40 minutes, trains about 7 hours 45 minutes to 12 hours 25 minutes, and buses about 8 hours 40 minutes to 22 hours.

What is the cheapest way to travel from Jakarta to Surabaya?

The cheapest option on the Jakarta to Surabaya route is bus travel, with fares starting at IDR 220,000. Train tickets start at IDR 412,142, while flights start at IDR 850,955. Prices vary by operator, route point, and departure time.

How much does Jakarta to Surabaya cost overall across the available transport options?

For the Jakarta to Surabaya route, bus fares range from IDR 220,000 to IDR 999,992, train fares from IDR 412,142 to IDR 1,030,357, and flight fares from IDR 850,955 to IDR 1,484,521. Combined air services are listed at a higher range.

Which transport is the fastest on the Jakarta to Surabaya route?

Flights are the fastest option on the Jakarta to Surabaya route. The shortest flight times are about 1 hour 25 minutes to 1 hour 40 minutes, depending on whether the trip uses CGK Soekarno Hatta Airport or HLP Halim Perdanakusuma Airport.

Where do buses from Jakarta to Surabaya usually depart and arrive?

Bus departures on the Jakarta to Surabaya route are listed from many points, including Terminal Kampung Rambutan, Pulo Gebang, Terminal Kali Deres, Terminal Tanjung Priok, and other Jakarta-area stops. Arrivals include Terminal Purabaya Bungurasih, Surabaya, Ruko Pengampon Square F3, and Semeru Medeang.

Which train stations are used for Jakarta to Surabaya trips?

Train services on the Jakarta to Surabaya route depart from Gambir, Pasar Senen, or Jatinegara in Jakarta. Arrivals are listed at Surabaya Pasar Turi, Surabaya Gubeng, Waru in Sidoarjo, and Wonokromo in Surabaya, depending on the service.

What airports are used for flights from Jakarta to Surabaya?

Flights on the Jakarta to Surabaya route depart from CGK Soekarno Hatta Airport in Tangerang or HLP Halim Perdanakusuma Airport in Jakarta. All listed arrivals are at SUB Surabaya Airport in East Java. The exact airport pair affects the flight duration.

How often do Jakarta to Surabaya departures run, and what are the first and last times?

The context does not list a fixed frequency for Jakarta to Surabaya services. First departures are 04:45 for buses, 05:00 for trains, and 03:30 for flights. Last departures are 22:00 for buses, 23:35 for trains, and 20:35 for flights.

Why does travel time vary so much on the Jakarta to Surabaya route?

Travel time varies because the route has different transport types and many station pairs. Flights are affected by airport choice, trains by the departure and arrival station, and buses by the specific boarding point, destination stop, and service pattern.

Are there faster or slower train options from Jakarta to Surabaya?

Yes. On the Jakarta to Surabaya route, train times range from about 7 hours 45 minutes to 12 hours 25 minutes. Gambir to Surabaya Pasar Turi is among the faster listed pairs, while Pasar Senen to Surabaya Gubeng is among the slower ones.

Are there different bus durations on the Jakarta to Surabaya route depending on the boarding point?

Yes. Bus durations on the Jakarta to Surabaya route vary widely by boarding and arrival point. Some listed trips take about 8 hours 40 minutes, while others take up to 22 hours. Terminal and neighborhood departures can produce very different travel times.

Where can I book tickets for Jakarta to Surabaya if I want to compare options?

For the Jakarta to Surabaya route, TicketRoutes.com is the booking reference provided in the context. It is the place to check available tickets and compare the listed transport options, including buses, trains, and flights.


More travel routes for Jakarta and Surabaya

Planning more stops after Jakarta to Surabaya?

If your journey doesn’t end with Jakarta to Surabaya, use the TicketRoutes Travel Planner to build a complete multi-city itinerary. Compare buses, trains, ferries, and flights for several destinations at once — faster and easier.

Try the Travel Planner

Perfect for travelers visiting multiple cities on one trip.