How to Get from Bali to Surabaya

How to Get from Bali to Surabaya

Last updated: March 8, 2026

Leaving behind the emerald rice terraces and salty surf of Bali for the industrious energy of Surabaya marks a transition from Indonesia's spiritual heart to its commercial engine. While Bali is defined by its slow pace and coastal charm, Surabaya offers a gritty, authentic look at Javanese urban life, serving as the primary gateway for those looking to conquer the volcanic peaks of Mount Bromo or Ijen. The journey between these two islands involves crossing the narrow Bali Strait, a transition that can be done in the blink of an eye from the air or as a slow, rhythmic crawl across land and sea.

Whether you are heading to Surabaya for business or using it as a base for East Javanese adventures, the route is well-traveled and offers options for every budget. You can easily book your preferred tickets on GoAsia.cc to ensure your transition from the Island of the Gods to the City of Heroes is as smooth as possible. The choice generally comes down to a trade-off between the blistering speed of a short hop flight and the rugged, overnight experience of a long-distance bus.

Bali to Surabaya by Flight

Flying is the most efficient way to bridge the gap between Denpasar and Surabaya. For travelers who value their time, the flight takes just over an hour, effectively turning a full day of travel into a quick morning or afternoon hop. Flights depart from Ngurah Rai International Airport (DPS) and arrive at Juanda International Airport (SUB) in Surabaya. This route is serviced by several domestic carriers, offering a range of departure times throughout the day from early morning until late evening.

Prices for economy class tickets typically range from $41 to $58. Given the short distance, the experience is straightforward with minimal inflight service, but the views upon takeoff and landing can be spectacular, often providing a bird's-eye view of the volcanic spine that runs through East Java. Juanda International Airport is located about 20 kilometers south of Surabaya city center, and it is well-connected by taxis and ride-sharing services, making the total travel time from hotel to hotel significantly shorter than any land-based alternative.

Bali to Surabaya by Bus

For the budget-conscious or those who enjoy the slow rhythm of the road, the bus is a classic Indonesian experience. The journey from Denpasar to Surabaya is an exercise in patience and endurance, typically taking between 10 and 14 hours depending on the traffic conditions and the efficiency of the ferry crossing at Gilimanuk. All buses include the ferry ticket in the price, so you won't need to worry about separate bookings for the water crossing.

Executive and VIP Classes

The majority of buses on this route are Executive or VIP class. These coaches are equipped with reclining seats, air conditioning, and often a footrest. Prices for these tickets range from $15 to $25. The Executive class is the workhorse of the route, with frequent departures throughout the morning and evening. VIP options usually offer slightly more legroom or a small snack. Traveling overnight is a popular choice as it saves on a night's accommodation and allows you to wake up in Surabaya ready to start your day.

Luxury Class

For a more premium experience on the road, Luxury buses are available for around $25. These buses feature more spacious seating configurations, often in a 2-1 layout rather than the standard 2-2, providing significantly more personal space. While the duration remains the same (roughly 10 to 14 hours), the added comfort makes a noticeable difference when trying to sleep during the long transit across the Bali Strait and through the winding roads of East Java.

Regional Routes to Bangkalan

There is also a specific long-distance service heading toward Bangkalan (on Madura island, just across the bridge from Surabaya) which takes approximately 15 hours and 45 minutes. Priced at $24 for an Executive class seat, this is a niche option for travelers whose final destination lies specifically in that region rather than central Surabaya.

Comparing Your Options

ModePrice (USD)DurationComfort
Flight$41 - $581h - 1h 15minHigh
Bus (Executive)$15 - $2510h - 14hModerate
Bus (Luxury)$2510h - 14hHigh
Bus (Bangkalan)$2415h 45minModerate

Tips for Traveling from Bali to Surabaya

  • Book Flights Early: While there are many daily flights, prices tend to rise as the departure date approaches, especially during Indonesian public holidays or long weekends.
  • Prepare for the Ferry: If taking the bus, you will have to disembark at the Gilimanuk ferry terminal and walk onto the boat. Keep your valuables with you in a small daypack; your heavy luggage will stay in the bus hold.
  • Bring Warm Layers: Indonesian buses are notorious for their powerful air conditioning. Even if it is 30 degrees Celsius outside, the interior of a VIP or Luxury bus can feel like a refrigerator. A light jacket or a sarong is essential for a comfortable night.
  • Check Arrival Points: Surabaya has several bus terminals, with Bungurasih (Purabaya) being the main one. Ensure you know where your bus drops off so you can arrange onward transport to your hotel.
  • Snacks and Water: While some luxury buses provide a small meal box, it is always wise to carry your own snacks and plenty of water for the 10-plus hour journey.

Timetable

Flight Bali - East Java $ 40.12–56.07 1h – 1h 15m
  •   Economy 07:00, 07:05, 10:35, 12:20, 13:55, 15:35, 16:10, 16:40, 16:55, 18:45, 19:30, 20:30
Bus Denpasar - Surabaya $ 14.18–24.29 10h 30m – 14h
  •   VIP 17:30, 19:00, 19:20
  •   Executive 08:30, 08:32, 08:45, 08:55, 09:00, 14:15, 15:00, 16:00, 16:30, 18:00, 18:02, 18:15, 18:25, 20:00
  •   Luxury 16:30, 17:15
Bus Denpasar - Bangkalan $ 23.06 15h 45m
  •   Executive 14:15

Frequently Asked Questions

How can I book tickets from Bali to Surabaya?

You can book train, bus, flight, taxi, van, and ferry tickets from Bali to Surabaya directly on GoAsia.cc. Use the booking tool on this page to compare all available options and prices in real time.

What is the cheapest way to get from Bali to Surabaya?

The cheapest way to travel is by Executive class bus, with tickets starting as low as $15. This includes the ferry crossing from Bali to East Java.

What is the fastest way to get from Bali to Surabaya?

The fastest way is to fly from Ngurah Rai International Airport to Juanda International Airport, which takes between 1 hour and 1 hour 15 minutes.

How long does it take to get from Bali to Surabaya?

A flight takes about 1 hour, while a bus journey typically takes between 10 and 14 hours depending on traffic and the ferry crossing.

Are meals included on the bus from Bali to Surabaya?

Most Executive and Luxury bus operators include a stop at a 'Rumah Makan' (rest area) where a basic meal is often provided as part of your ticket price. It is recommended to verify this with the specific operator upon booking.

Do I need to book the ferry separately if I take the bus?

No, if you book a bus ticket from Denpasar to Surabaya, the ferry crossing from Gilimanuk to Ketapang is included in your fare. The bus drives onto the ferry, and passengers usually head to the passenger deck for the 30-45 minute crossing.

Is it safe to travel by bus overnight in Indonesia?

Yes, overnight bus travel is a very common and generally safe way for locals and tourists to travel between Bali and Java. Just ensure you keep your passport and electronics in a bag on your person at all times.