Skip to content
Indonesia Knowledge
practical

Trains in Java — KAI for tourists

How to book Jakarta-Yogyakarta-Surabaya trains. Eksekutif vs Bisnis vs Ekonomi. Comfort, food and scenery.

3 min read

Java's train network (PT KAI — Kereta Api Indonesia) is one of Asia's underrated travel pleasures. The Jakarta-Yogyakarta-Surabaya corridor runs reliable, comfortable trains through rice paddies, volcano slopes and old colonial towns. It's the best way to get around Java that isn't flying.

The classes

| Class | Comfort | Use for | |---|---|---| | Eksekutif | Reclining seats, AC, food car, blanket, pillow | Default for tourists; best value-comfort | | Bisnis | Padded seats 2-2, AC, food car | Good budget option | | Ekonomi (AC) | Forward-facing AC seats | Cheaper, can be crowded but OK | | Ekonomi (basic) | Bench seats, fan | Local travel; tight for tourists |

For most tourists, Eksekutif is the right choice. The premium over Bisnis is small (USD 5–15) and the comfort difference is large on long routes.

Most useful routes

| Route | Duration | Best class | Price (Eksekutif) | |---|---|---|---| | Jakarta (Gambir) – Yogyakarta (Tugu) | 7–8h | Eksekutif (overnight or day) | IDR 350,000–550,000 | | Yogyakarta – Surabaya (Gubeng) | 4–5h | Eksekutif | IDR 250,000–400,000 | | Jakarta – Surabaya | 9–11h | Eksekutif overnight | IDR 450,000–650,000 | | Jakarta – Bandung | 3h | Argo Parahyangan | IDR 150,000–250,000 | | Jakarta – Cirebon | 3h | Eksekutif | IDR 200,000–350,000 | | Surabaya – Banyuwangi (for Ijen + Bali) | 6–7h | Eksekutif | IDR 300,000–450,000 |

High-speed Whoosh

  • Whoosh (Kereta Cepat Indonesia-China) — Jakarta-Bandung in 45 minutes
  • Premium pricing — IDR 250,000–600,000 one-way
  • Useful for Jakarta-Bandung business or weekend trips
  • Not yet expanded to other corridors

Booking

Best apps:

  • KAI Access — official PT KAI app. Sometimes finicky for international cards but the most reliable.
  • Traveloka — works, adds small fee
  • tiket.com — works
  • Bookaway — international-friendly
  • 12Go — international-friendly

Tips:

  • Book 1–3 days ahead for popular routes (Jakarta-Yogyakarta especially)
  • Friday and Sunday evening trains often sell out
  • Eid (Lebaran) period bookings should open 90 days ahead
  • Print tickets are OK, e-tickets work too — show ID at boarding

Stations

Jakarta

  • Gambir — long-distance Eksekutif and major routes
  • Pasar Senen — Ekonomi and Bisnis to most destinations
  • BNI City — airport rail terminal (different network, connected via metro)

Yogyakarta

  • Tugu — central, walking distance to Malioboro
  • Lempuyangan — east, less central

Surabaya

  • Gubeng — Eksekutif main station
  • Pasar Turi — Bisnis and some lines

Bandung

  • Bandung Hall — central, walkable to most central hotels

On the train

  • Seats are reserved — show ticket + ID
  • Air-conditioned cabin (can be very cold — bring layers)
  • Food cart passes through every 30–45 min — meals USD 3–6
  • Or buy at station before boarding
  • Toilets reasonable in Eksekutif
  • Phone signal patchy in some sections — download offline maps and Spotify

What it costs

Jakarta-Yogyakarta Eksekutif day train: USD 23–37 — for a 7-8 hour journey in a reclining seat with food car. Compares well to flying (USD 30–80 + airport time) when you value comfort, scenery and zero hassle.

Where the train isn't

  • Bali has no trains
  • Sumatra has limited train network; mostly local
  • Kalimantan / Sulawesi / Papua have no passenger trains
  • Cross-strait trips (Java-Bali, Java-Sumatra) require ferry or flight on top

Common mistakes

  • Booking the wrong Jakarta station (Gambir vs Pasar Senen)
  • Underestimating overnight train sleep difficulty (it's a seat, not a bed)
  • Booking Friday evening for a Saturday morning arrival (often sold out)
  • Showing a credit card without ID at the station (need passport)
  • Missing the train — they leave on time

Verify before acting

KAI schedules and fares change. Confirm at the KAI Access app or station counter. See disclaimer.

Related reading