Trains in Java — KAI for tourists
How to book Jakarta-Yogyakarta-Surabaya trains. Eksekutif vs Bisnis vs Ekonomi. Comfort, food and scenery.
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.