Contents
Leaving the industrial powerhouse of Surabaya for the colonial charm of Semarang marks a transition from East Java's bustling commercial hub to the more relaxed, historical atmosphere of Central Java. While both cities sit on the northern coast, the journey between them reveals a landscape of rice paddies and coastal horizons that many travelers miss when flying over the island. This route is a staple of Javanese travel, connecting two of Indonesia's most significant port cities through an efficient network of rails and highways.
Choosing between the train and the bus on this route often comes down to a preference for speed versus flexibility. The railway tracks hug the coastline in several sections, offering glimpses of the Java Sea, while the modern toll road has significantly cut down travel times for those opting for the bus. Regardless of your choice, this corridor is well-served, making it easy to hop between these two urban centers in a single morning or afternoon.
Surabaya to Semarang by Train
The train is widely considered the best way to travel between Surabaya and Semarang. Long-distance trains such as the Argo Bromo Anggrek and the Sembrani normally run between Surabaya Pasarturi and Gambir along the northern line; in October 2025 KAI rerouted them inland after flooding at Semarang Tawang, so check the current status of your train.[1] Surabaya has two main stations, Pasarturi and Gubeng, and Semarang has Tawang and Poncol.[1] Tickets are sold in KAI's Access by KAI app, where you can compare the departure times, travel times and fares of each train.[2] You can also book your preferred seat on GoAsia.cc.

Executive Class
For those seeking the highest level of comfort, Executive Class offers reclining seats with more legroom, and the air conditioning keeps the carriage cool and quiet. KAI also runs Luxury and Suite Class Compartment carriages on selected trains.[3]
Economy Class
Economy Class is a budget-friendly way to travel. It is more basic than Executive Class, but modern Indonesian economy trains are air-conditioned. Fares depend on the train, so compare them in the app.
Surabaya to Semarang by Bus
Buses offer many departures and a variety of comfort levels, making them a good alternative if train tickets are sold out. On booking platforms, tickets cost about $8 to $29 (October 2026), and the journey takes 4 hours 15 minutes to 11 hours 45 minutes depending on the number of stops and traffic. Departures are listed from about 06:30 until after 21:00.[4]
Booking platforms list several tiers:
- Executive and VIP: These are the most common options, with reclining seats and air conditioning.
- Luxury and Combi Family: These services offer more privacy and higher-quality seating.
Comparing Your Options
| Mode | Price (USD) | Duration | Comfort |
|---|---|---|---|
| Train | Set by KAI by train and class | Set by KAI by train | Medium to High |
| Bus (Executive/VIP/Luxury) | About $8 - $29[4] | 4h 15min - 11h 45min[4] | Medium to High |
Tips for Traveling from Surabaya to Semarang
- Book Early for Weekends: The Surabaya to Semarang route is popular with locals traveling for work or family. Train tickets for Friday afternoons and Sunday evenings can sell out in advance.
- Check the Station: Surabaya has two main stations, Pasarturi and Gubeng. Likewise, Semarang has Tawang and Poncol. Double-check your ticket to ensure you head to the correct station, as they are located in different parts of the city.
- Bring a Jacket: Indonesian trains and buses are known for strong air conditioning.
- Arrive Early: For trains and buses, aim to be at the station or terminal well before departure to find your platform or bus.
- Food Options: Bring your own water and snacks, and expect buses to make a stop at a rest area on longer journeys.
Timetable
| Bus Surabaya - Semarang $ 8.09–28.57 4h 15m – 11h 45m | |
|
|
| Train Surabaya - Semarang $ 3.56–43.32 2h 49m – 4h 37m | |
|
| Bus Tangerang - Semarang $ 25.39 9h 30m | |
|
| Bus Tangerang - Central Java $ 25.39 9h 25m | |
|
Frequently Asked Questions
Use the booking tool on this page to compare the transport options currently available from Surabaya to Semarang, including current prices and schedules.
The bus is the cheapest option listed on booking platforms, from about $8 (October 2026). KAI sets the train fares by train and class, so compare them in the Access by KAI app.
The train is usually the faster option, because buses take at least 4 hours 15 minutes. Compare the travel times of the trains in the Access by KAI app.
By bus, booking platforms list 4 hours 15 minutes up to nearly 12 hours depending on the service and traffic. Train times differ by train, so check your train in the Access by KAI app.
Booking platforms list Executive, VIP, Luxury and Combi Family buses on this route. Seat layouts differ by operator, so check the class description before you book.
The northern line runs close to the coastline in places, and you can see rice paddies and views of the Java Sea, particularly during daytime departures.
Surabaya has two main stations, Pasarturi and Gubeng. Which one you use depends on your train, so check your ticket carefully before heading out.
Sources and background
Numbers in the text such as [1] refer to these sources.
- [1] PT Kereta Api Indonesia (KAI): KAI Lakukan Penyesuaian Operasional di Wilayah Semarang, Jalur Semarang Tawang - Alastua Masih Belum Dapat Dilalui Akibat Genangan Air. Retrieved October 15, 2026.
- [2] PT Kereta Api Indonesia (KAI): PT KAI: Home (Access by KAI app, passenger services). Retrieved October 15, 2026.
- [3] PT Kereta Api Indonesia (KAI): Layanan Kereta Suite Class dan Luxury Terus di Minati. Retrieved October 15, 2026.
- [4] 12Go: 12Go Timetable: Surabaya to Semarang. Retrieved October 15, 2026.
Guide prices and journey times are indicative, not live quotes. A booked package may include transfers and waiting time as well as the main journey. Check the selected offer, pickup point and current conditions before booking.