Yogyakarta to Surabaya: Every Way to Get There in 2026 (Train, Bus, Travel, Car)

Yogyakarta and Surabaya sit about 326 kilometers apart across the width of Central and East Java, and unlike the Bandung–Yogyakarta leg, this corridor is genuinely well served. A dedicated express train runs the route four times a day in about four hours, the Trans-Java toll road now connects the two cities end to end, and buses and shuttle vans run constantly along the same corridor. This is also the leg most travelers use to reach Mount Bromo and Ijen Crater, since Surabaya is the practical gateway to both.

This guide covers every way to make the Yogyakarta–Surabaya journey in 2026: the Sancaka express train and its alternatives, executive buses, shuttle vans, driving, and the limited flight option that exists but rarely makes sense.


Yogyakarta to Surabaya: The Quick Comparison

OptionDurationCost (One-Way, Adult)Best For
Train (Sancaka, economy)4–4.5 hoursRp 180,000–290,000 (~$11–18)Best all-around option, four daily departures
Train (Sancaka, executive)4–4.5 hoursRp 320,000–490,000 (~$20–31)More legroom, same speed
Executive bus7–9 hoursRp 90,000–300,000 (~$6–19)Cheapest option, overnight-friendly
Shuttle van (travel)7–9 hoursRp 125,000–300,000 (~$8–19)Door-to-door pickup, small groups
Driving, toll route4.5–5.5 hoursRp 550,000–700,000 (~$34–44)Speed comparable to the train, more flexibility
Driving, non-toll route7–8 hoursRp 150,000–200,000 (~$9–13)Budget driving, no toll cost
Flying (limited)~1 hour flightRp 600,000–1,200,000 (~$38–75)Rarely worth it — see below

The exchange rate at time of writing is approximately Rp 16,000 to USD 1.


Option 1: The Train — The Best All-Around Choice

The Yogyakarta–Surabaya corridor has its own dedicated express train, and it’s the clear standout option here in a way that wasn’t true on the Bandung leg.

KA Sancaka — The Workhorse

Sancaka runs the Yogyakarta (Tugu)–Surabaya Gubeng route up to four times daily — a morning, midday, afternoon, and a facultative evening service that runs based on demand. Average journey time is 4 to 4.5 hours, covering roughly 311–326 km through Klaten, Solo Balapan, Madiun, Nganjuk, Jombang, and Mojokerto before terminating at Surabaya Gubeng.

Two classes are available:

  • Ekonomi Premium — Rp 180,000–290,000 (~$11–18), higher on weekends and around holidays
  • Eksekutif — Rp 320,000–490,000 (~$20–31)

Both classes run in modern Stainless Steel New Generation carriages, and the price difference mainly buys extra legroom and a quieter cabin rather than a meaningfully different experience — economy premium is genuinely comfortable for a journey this length.

Other Trains on the Route

If Sancaka’s schedule doesn’t fit, several other services also stop at Yogyakarta en route to or from Surabaya, though they’re primarily long-haul trains running longer routes (Bandung–Surabaya, Cirebon–Jember, etc.) rather than dedicated point-to-point services:

  • Argo Wilis — Bandung–Surabaya executive/panoramic service, executive fares for the Yogyakarta–Surabaya segment run around Rp 385,000, panoramic around Rp 700,000
  • Argo Semeru — Jakarta–Surabaya premium service, executive around Rp 355,000–520,000, compartment class up to Rp 1,380,000
  • Ranggajati — Cirebon–Jember service, business class Rp 210,000–240,000, executive Rp 295,000–375,000
  • Sancaka Utara — an extended Sancaka service continuing to Cilacap, useful if you need a stop along the northern corridor rather than Yogyakarta itself

For most travelers, though, the standard Sancaka is the simplest and most frequent choice.

Where to Board and Arrive

Sancaka departs from Stasiun Tugu in central Yogyakarta and arrives at Surabaya Gubeng, both centrally located stations within easy reach of hotels and, on the Surabaya side, a short ride from Juanda Airport if you’re connecting onward. Sancaka Utara services instead arrive at Surabaya Pasarturi, so double-check your ticket if you’re booking that variant.

How to Book

  • KAI Access app — official booking, English-language support
  • tiket.com and Traveloka — reliable for foreign cards, often carry promo fares
  • Station counters at Stasiun Tugu for walk-up bookings

Tickets open up to 45 days ahead for some services, though Sancaka specifically opens closer to 30 days out. Weekday travel rarely requires more than a few days’ notice; weekends and anything near Lebaran, Christmas, or New Year sell out well in advance.

What the Experience Is Like

The route runs almost entirely flat across the agricultural plains of Central and East Java — rice paddies, small towns, and the occasional volcano silhouette in the distance around Klaten and Madiun. At roughly 90 km/h average operating speed with only a handful of stops, this is one of the more efficient conventional train routes in Java. Snacks and drinks are available via trolley service, and both classes have air conditioning and reclining seats.


Option 2: Executive Bus — Reliable and Cheap

Long-distance buses have run this corridor for decades, connecting Terminal Giwangan in Yogyakarta with Terminal Purabaya (Bungurasih) in Surabaya, and remain the cheapest way to make the trip.

Major Operators

  • Sugeng Rahayu — one of the most established names on this route, highly rated for punctuality
  • Rosalia Indah — executive class available, fares around Rp 300,000
  • Medali Mas — another well-rated operator on the corridor
  • Eka Cepat — runs frequent departures with a route continuing on toward Bandung

Bus Prices and Booking

Fares run roughly Rp 90,000–300,000 ($6–19) depending on class and operator, with executive-class coaches at the upper end and standard AC business class considerably cheaper. Buses typically follow the arterial route through Solo, Sragen, Ngawi, Madiun, Nganjuk, Kertosono, Jombang, and Mojokerto, though many operators now run a mix of toll and arterial road depending on the segment, which keeps journey times to roughly 7–9 hours.

Book via:

  • redBus and 12Go.asia — work well for foreign cards
  • Traveloka — often bundles bus and shuttle options together
  • Terminal counters or operator pools for walk-up bookings

What the Experience Is Like

Modern executive coaches run air conditioning, reclining seats, and usually a single rest stop partway through. Because the corridor is flat and well-traveled, this route sees less of the traffic unpredictability that plagues some of Java’s hillier bus routes — delays are more a function of how much toll road a given operator uses than road conditions.


Option 3: Shuttle Van (Travel) — Door-to-Door Convenience

Shuttle vans on this corridor work the same way they do elsewhere in Java: smaller shared vehicles, more flexible pickup points, and pricing that overlaps heavily with the bus options.

Fares run Rp 125,000–300,000 ($8–19) depending on operator and time of day, with journey times of 7–9 hours, similar to the bus. Operators including Cititrans, Handoyo, and Ekamira run this route with a mix of Hiace, Elf, and smaller minibus vehicles, offering AC, reclining seats, and sometimes charging ports. Pickup in Yogyakarta and drop-off in Surabaya are typically more central and flexible than the terminal-based buses, which is the main appeal if you’d rather avoid the trip to Giwangan or Purabaya.


Option 4: Driving or Private Car

This is the one corridor in the Java series where the toll road genuinely rivals the train on speed, because the entire route between Yogyakarta and Surabaya is now tolled.

The Toll Route (Recommended for Driving)

Since the Solo–Yogyakarta toll section opened in mid-2025, the whole corridor connects via the Trans-Java network: exit Yogyakarta via Gerbang Tol Prambanan, continue through Tol Solo–Ngawi, Tol Ngawi–Kertosono, Tol Kertosono–Mojokerto, and Tol Mojokerto–Surabaya into the city via Gerbang Tol Warugunung. Total distance is around 310 km, and total travel time runs 4.5 to 5.5 hours — genuinely competitive with the train once you account for getting to and from stations.

Toll costs for a Golongan I (standard car) vehicle run approximately:

SegmentToll Cost (IDR)
Yogyakarta–Solo (Prambanan gate)~Rp 57,000
Solo–Ngawi~Rp 108,000–163,500
Ngawi–Kertosono~Rp 98,000–102,000
Kertosono–Mojokerto~Rp 54,000–55,000
Mojokerto–Surabaya (Warugunung)~Rp 43,500
Total~Rp 420,000–460,000

Add fuel of roughly Rp 150,000–200,000, bringing the all-in cost to around Rp 570,000–660,000 ($36–41) one-way.

The Non-Toll Route

Driving the older arterial route through the same towns the buses use — Solo, Sragen, Ngawi, Madiun, Nganjuk, Jombang, Mojokerto — costs nothing in tolls but takes 7–8 hours, subject to traffic through each town center. This only makes sense if you’re specifically trying to avoid toll costs or plan to stop along the way.

A Note on the Long, Straight Stretches

The Ngawi–Kertosono section in particular cuts dead straight through forest and farmland for tens of kilometers — scenic in a stark way, but also flagged by local drivers as a common spot for microsleep-related incidents given the monotony. Plan a rest stop through this stretch regardless of how alert you feel.

An e-toll card topped up with at least Rp 500,000 is essential — cash isn’t accepted at any toll gate on this route.


Option 5: Flying — Rarely Worth It

Unlike the Bandung–Yogyakarta corridor, a limited direct flight option does technically exist here: Wings Air operates a turboprop service a few times a week between Yogyakarta’s older Adisutjipto Airport (JOG) and Surabaya’s Juanda (SUB), taking about an hour in the air. Most major booking engines default to showing connecting itineraries via Jakarta instead, which take considerably longer and cost more.

Even the direct option rarely makes sense for this specific route: by the time you account for getting to Adisutjipto rather than the newer YIA, checking in, and transferring out of Juanda on arrival, total door-to-door time lands close to what the train takes anyway — for a higher price and a fixed, infrequent schedule. Skip flying for this leg and take the train instead.


Which Option Is Right for You?

Take the Sancaka train if: you want the best combination of speed, reliability, and cost. Four departures a day, a genuinely comfortable ride, and journey times under 4.5 hours make this the right default for nearly everyone.

Take the bus if: you’re minimizing cost above all else, or you’d rather travel overnight and arrive ready for the day.

Take a shuttle van if: you want more flexible pickup and drop-off points than a terminal-based bus, particularly if your accommodation isn’t near Giwangan or Purabaya.

Drive the toll route if: you’re traveling with others to split the cost, want a vehicle in Surabaya for onward travel, or are combining this leg with a stop in Solo along the way — the toll route runs directly past it.

Skip flying unless your dates are fixed to one of the limited Wings Air departures and the modest time saving genuinely matters more than the cost.


Where to Go From Surabaya

Surabaya is less a destination in its own right for most travelers and more the launch point for what comes next. If Bromo and Ijen are on your list, this Java itinerary walks through how to sequence Yogyakarta, Bromo, and Ijen without turning the trip into a nonstop transit slog — worth reading before you lock in your Surabaya arrival time, since it affects which onward connections make sense.

If you’re continuing to Bali from here, the ferry crossing from Ketapang (near Banyuwangi, a stop en route to Ijen) to Gilimanuk is the standard overland route, and our Amed and Tulamben guide covers how to use Bali’s quieter east coast as an arrival point rather than routing straight into the south’s tourist corridor.

And if Sulawesi is on your radar instead, Surabaya also has ferry and flight connections that direction — our Makassar guide covers what that port city is like and where to head once you’ve moved on from there.


Essential Tips for the Yogyakarta–Surabaya Journey

1. Book Sancaka early for weekend and holiday travel. All four daily departures fill up fast around weekends, school holidays, and Lebaran — book a few days ahead even for weekday travel if your dates are fixed.

2. Double-check your Surabaya arrival station. Standard Sancaka arrives at Surabaya Gubeng, centrally located; Sancaka Utara arrives at Surabaya Pasarturi instead. These aren’t within easy walking distance of each other, so confirm before booking accommodation.

3. Economy premium is genuinely fine for this journey. At just over 4 hours, the jump to executive class buys comfort rather than necessity — reasonable either way, but don’t feel you need to upgrade.

4. The toll route is worth the cost if you’re driving. Unlike some of Java’s other inter-city routes, the full toll network here makes driving genuinely time-competitive with the train, which isn’t always the case elsewhere.

5. Load your e-toll card before departure. At least Rp 500,000 for a one-way toll trip; cash isn’t accepted at any gate on this corridor.

6. Watch for heat on arrival in Surabaya. Surabaya runs hotter and more humid than either Yogyakarta or the Bromo highlands you may be heading toward next — pack accordingly if you’re continuing on immediately.

7. If you’re heading to Bromo or Ijen next, plan your Surabaya stop as a transit point, not a destination. Most travelers pass straight through or overnight briefly before continuing toward Malang or Probolinggo.

8. Budget realistically for this leg within your wider trip. If you’re weighing Indonesia against other Southeast Asian bases for cost, this budget field guide is a useful reference point for how transport costs here compare regionally.

9. Keep both cash and a QR payment app on hand. Toll gates need an e-toll card specifically, but rest-stop vendors, bus terminal stalls, and some shuttle operators vary in what they accept.

10. Build in a buffer if connecting onward the same day. Whether you’re catching a flight from Juanda or continuing overland toward Bromo, don’t schedule your onward connection within an hour or two of your Yogyakarta departure — delays of 30–60 minutes are common enough to plan around.


Full Journey Overview

Yogyakarta (Tugu) → Surabaya (Gubeng) via Sancaka, economy premium: 4–4.5 hours door-to-station, plus onward transfer = ~4.5–5 hrs total

Yogyakarta (Giwangan) → Surabaya (Purabaya) via bus: 7–9 hours, plus terminal transfers on both ends = ~8–10 hrs total

Yogyakarta → central Surabaya via shuttle van: 7–9 hours, with more central drop-off reducing the final transfer = ~7.5–9.5 hrs total

Yogyakarta → Surabaya driving, toll route: ~5 hours on the road, plus loading/parking time = ~5–5.5 hrs total

Yogyakarta → Surabaya driving, non-toll route: 7–8 hours on the road = ~7–8.5 hrs total


Frequently Asked Questions

Is there a direct train from Yogyakarta to Surabaya? Yes. The Sancaka express runs directly between Yogyakarta (Tugu) and Surabaya Gubeng up to four times daily, taking approximately 4 to 4.5 hours with no transfers required.

How much does the train from Yogyakarta to Surabaya cost? Economy premium fares run from Rp 180,000 to Rp 290,000 (~$11–18) one-way. Executive class runs from around Rp 320,000 up to Rp 490,000 depending on the specific departure and day of travel.

What is the fastest way to get from Yogyakarta to Surabaya? The Sancaka train and driving the full toll route are roughly comparable, both landing in the 4–5.5 hour range. The train is more reliable since it isn’t subject to traffic, while driving offers more flexibility if you have a car.

What is the cheapest way to get from Yogyakarta to Surabaya? Executive buses, with fares starting around Rp 90,000 (~$6) one-way, are the cheapest option, though the journey takes 7–9 hours.

Is there a flight from Yogyakarta to Surabaya? A limited direct option exists via Wings Air a few times weekly between Adisutjipto (JOG) and Juanda (SUB), taking about an hour in the air. Most searches default to showing longer connecting itineraries via Jakarta instead. Given the short distance, the train is usually faster door-to-door and considerably cheaper.

Which Yogyakarta station should I use? Sancaka and most other Surabaya-bound trains depart from Stasiun Tugu in central Yogyakarta.

Which Surabaya station will I arrive at? Standard Sancaka services arrive at Surabaya Gubeng, centrally located. Sancaka Utara arrives at Surabaya Pasarturi instead — check your specific ticket.

Is driving from Yogyakarta to Surabaya worth it? If you’re taking the toll route, yes — it’s genuinely time-competitive with the train at around 5 hours, though it costs more once tolls and fuel are included. The non-toll route saves money but adds several hours.

How far in advance should I book the train? Sancaka tickets typically open around 30 days before departure. Booking a few days ahead is enough for weekday travel; book as early as possible for weekends or anything near a public holiday.


Fares, schedules, and toll rates are subject to change. Always check current availability and prices directly via KAI Access, tiket.com, redBus, or 12Go.asia before booking.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top