There are 7 ways to get from Batam to Surabaya by plane, train, ferry, bus, or shuttle
Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2Rio's travel planner.
Fly to Juanda International Airport, train
best- Fly from Hang Nadim International Airport (BTH) to Juanda International Airport (SUB)plane BTH - SUB
- Take the train from Waru to Surabaya Gubengtrain
5h 17mRp 1,709,054–2,687,654Ferry, bus
cheapest- Take the ferry from Batu Ampar to Port of Tanjung Priokferry KM Kelud
- Take the bus from DAMRI Bus Station Jakarta to Surabaya Kotabus Jakarta - Surabaya Kota
47h 57mRp 665,760–1,352,900Ferry, train via Jakarta
- Take the ferry from Batu Ampar to Port of Tanjung Priokferry KM Kelud
- Take the train from Jakarta Gambir to Surabaya Pasar Turitrain Argo Bromo Anggrek / ...
47h 13mRp 720,260–927,400Fly to Abdul Rachman Saleh Airport, train
- Fly from Hang Nadim International Airport (BTH) to Abdul Rachman Saleh Airport (MLG)plane BTH - MLG
- Take the train from Lawang to Gubengtrain
7h 34mRp 2,734,554–3,747,654Fly to Ahmad Yani, train
- Fly from Hang Nadim International Airport (BTH) to Ahmad Yani (SRG)plane BTH - SRG
- Take the train from Semarang Tawang to Surabaya Pasar Turitrain
6h 23mRp 1,896,554–2,791,654Ferry, train
- Take the ferry from Batu Ampar to Port of Tanjung Priokferry KM Kelud
- Take the train from Pasar Senen to Surabaya Pasar Turitrain Gumarang / ...
2d 2hRp 714,260–911,400Ferry, bus, shuttle
- Take the ferry from Batu Ampar to Port of Tanjung Priokferry
- Take the bus from Jakarta Kampung Rambutan Bus Station to Kudusbus
- Take a shuttle bus from Kudus to Surabaya
2d 6hRp 814,260–1,211,400
Hang Nadim International Airport (BTH) to Juanda International Airport (SUB) flights
Questions & Answers
The cheapest way to get from Batam to Surabaya is to ferry and train which costs Rp700000 - Rp950000 and takes 2 days 2h.
The fastest way to get from Batam to Surabaya is to fly and train which takes 5h 17m and costs Rp1700000 - Rp2700000.
The distance between Batam and Surabaya is 1389 km.
The best way to get from Batam to Surabaya without a car is to ferry and train via Jakarta which takes 47h 13m and costs Rp700000 - Rp950000.
It takes approximately 5h 17m to get from Batam to Surabaya, including transfers.
There are 1022+ hotels available in Surabaya.
What companies run services between Batam, Indonesia and Surabaya, Indonesia?
There is no direct connection from Batam to Surabaya. However, you can take the taxi to Hang Nadim International Airport (BTH) airport, fly to Juanda International Airport (SUB), walk to Juanda Surabaya Airport, take the bus to Surabaya Bungurasih Bus Station, walk to Waru, then take the train to Surabaya Gubeng. Alternatively, you can take a ferry from Batu Ampar to Surabaya Pasar Turi via Port of Tanjung Priok, Tanjung Priok, Jakarta Kota, Gondangdia, Selatan St. Gondangdia, Gambir 3, and Jakarta Gambir in around 47h 13m.
- Website
- citilink.co.id
Flights from Hang Nadim International Airport to Juanda International Airport
- Ave. Duration
- 2h 10m
- When
- Every day
- Estimated price
- Rp 1,600,000–1,900,000
Flights from Hang Nadim International Airport to Juanda International Airport via Soekarno–Hatta
- Ave. Duration
- 4h 45m
- When
- Every day
- Estimated price
- Rp 1,600,000–1,900,000
Flights from Hang Nadim International Airport to Ahmad Yani via Soekarno–Hatta
- Ave. Duration
- 4h 50m
- When
- Every day
- Estimated price
- Rp 1,700,000–2,400,000
- Website
- lionair.co.id
Flights from Hang Nadim International Airport to Juanda International Airport
- Ave. Duration
- 2h 15m
- When
- Every day
- Estimated price
- Rp 1,400,000–3,100,000
Flights from Hang Nadim International Airport to Juanda International Airport via Soekarno–Hatta
- Ave. Duration
- 4h 15m
- When
- Every day
- Estimated price
- Rp 1,600,000–3,300,000
- Website
- batikair.com
Flights from Hang Nadim International Airport to Abdul Rachman Saleh Airport via Soekarno–Hatta
- Ave. Duration
- 5h 57m
- When
- Every day
- Estimated price
- Rp 2,300,000–7,500,000
Flights from Hang Nadim International Airport to Ahmad Yani via Soekarno–Hatta
- Ave. Duration
- 4h
- When
- Every day
- Estimated price
- Rp 1,700,000–5,500,000
- Website
- garuda-indonesia.com
Flights from Hang Nadim International Airport to Abdul Rachman Saleh Airport via Soekarno–Hatta
- Ave. Duration
- 4h 25m
- When
- Tuesday, Friday, and Sunday
- Estimated price
- Rp 2,000,000–4,400,000
Flights from Hang Nadim International Airport to Ahmad Yani via Soekarno–Hatta
- Ave. Duration
- 4h 30m
- When
- Every day
- Estimated price
- Rp 2,000,000–6,500,000
- Website
- superairjet.com
Flights from Hang Nadim International Airport to Ahmad Yani
- Ave. Duration
- 2h
- When
- Every day
- Estimated price
- Rp 1,600,000–1,900,000
Train from Waru to Surabaya Gubeng
- Ave. Duration
- 21 min
- Frequency
- Every 4 hours
- Estimated price
- Rp 6,000–320,000
- Schedules at
- kai.id
- Book at
- en.tiket.com
- Economy
- Rp 6,000–320,000
- Business
- Rp 280,000–550,000
- Executive
- Rp 11,000–650,000
Train from Jakarta Gambir to Surabaya Pasar Turi
- Ave. Duration
- 7h 45m
- Frequency
- 4 times a day
- Estimated price
- Rp 320,000–440,000
- Schedules at
- kai.id
- Book at
- en.tiket.com
- Economy
- Rp 320,000–440,000
- Business
- Rp 490,000–550,000
- Executive
- Rp 700,000–1,100,000
Train from Lawang to Gubeng
- Ave. Duration
- 1h 26m
- Frequency
- Once daily
- Estimated price
- Rp 45,000–320,000
- Schedules at
- kai.id
- Book at
- en.tiket.com
- Economy
- Rp 45,000–320,000
- Business
- Rp 300,000–550,000
- Executive
- Rp 80,000–650,000
Train from Semarang Tawang to Surabaya Pasar Turi
- Ave. Duration
- 2h 53m
- Frequency
- Every 3 hours
- Estimated price
- Rp 160,000–330,000
- Schedules at
- kai.id
- Book at
- en.tiket.com
- Economy
- Rp 160,000–330,000
- Business
- Rp 370,000–550,000
- Executive
- Rp 310,000–700,000
Train from Pasar Senen to Surabaya Pasar Turi
- Ave. Duration
- 10h 28m
- Frequency
- 5 times a day
- Estimated price
- Rp 320,000–440,000
- Schedules at
- kai.id
- Book at
- en.tiket.com
- Economy
- Rp 320,000–440,000
- Business
- Rp 490,000–550,000
- Executive
- Rp 700,000–1,100,000
- Phone
- (021) 1500 825
- humas@damri.co.id
- Website
- damri.co.id
Bus from DAMRI Bus Station Jakarta to Surabaya Kota
- Ave. Duration
- 10h
- Frequency
- Once daily
- Estimated price
- Rp 210,000–800,000
- Book at
- https://12go.asia/en/operator/damri
- Phone
- +62291440019
- cs@nu3tara.com
- Website
- nu3tara.com
Bus from Jakarta Kampung Rambutan Bus Station to Kudus
- Ave. Duration
- 10h 18m
- Frequency
- Twice daily
- Estimated price
- Rp 200,000–440,000
- Book at
- https://12go.asia/en/operator/nusantara
- contact@indahjayatrans.com
- Website
- indahjayatrans.com
Shuttle from Kudus to Surabaya
- Ave. Duration
- 2h 27m
- Frequency
- Twice daily
- Estimated price
- Rp 220,000–300,000
- Schedules at
- indahjayatrans.com
- Phone
- +62 811-1621-162
- infopelni162@pelni.co.id
- Website
- facebook.com
Ferry from Batu Ampar to Port of Tanjung Priok
- Ave. Duration
- 36h 45m
- Frequency
- Once daily
- Estimated price
- Rp 390,000–470,000
- Schedules at
- pelni.co.id
- Economy Class
- Rp 390,000–470,000
Want to know more about travelling around the world?
Rome2Rio's Travel Guide series provide vital information for the global traveller. Read our range of informative guides on popular transport routes and companies - including Which London airport should I choose?, Travelling to the UK: What do I need to know?, and What are the different types of Renfe trains in Spain? - to help you get the most out of your next trip.














