Rome2Rio

How to get fromBatam to Surabayaby plane, train, ferry, bus or shuttle

Find Transport to Surabaya

See all options

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.

  1. Fly to Juanda International Airport, train

    best
    1. Fly from Hang Nadim International Airport (BTH) to Juanda International Airport (SUB)plane plane BTH - SUB
    2. Take the train from Waru to Surabaya Gubengtrain train
    5h 17m
    Rp 1,709,054–2,687,654
  2. Ferry, bus

    cheapest
    1. Take the ferry from Batu Ampar to Port of Tanjung Priokferry ferry KM Kelud
    2. Take the bus from DAMRI Bus Station Jakarta to Surabaya Kotabus bus Jakarta - Surabaya Kota
    47h 57m
    Rp 665,760–1,352,900
  3. Ferry, train via Jakarta

    1. Take the ferry from Batu Ampar to Port of Tanjung Priokferry ferry KM Kelud
    2. Take the train from Jakarta Gambir to Surabaya Pasar Turitrain train Argo Bromo Anggrek / ...
    47h 13m
    Rp 720,260–927,400
  4. Fly to Abdul Rachman Saleh Airport, train

    1. Fly from Hang Nadim International Airport (BTH) to Abdul Rachman Saleh Airport (MLG)plane plane BTH - MLG
    2. Take the train from Lawang to Gubengtrain train
    7h 34m
    Rp 2,734,554–3,747,654
  5. Fly to Ahmad Yani, train

    1. Fly from Hang Nadim International Airport (BTH) to Ahmad Yani (SRG)plane plane BTH - SRG
    2. Take the train from Semarang Tawang to Surabaya Pasar Turitrain train
    6h 23m
    Rp 1,896,554–2,791,654
  6. Ferry, train

    1. Take the ferry from Batu Ampar to Port of Tanjung Priokferry ferry KM Kelud
    2. Take the train from Pasar Senen to Surabaya Pasar Turitrain train Gumarang / ...
    2d 2h
    Rp 714,260–911,400
  7. Ferry, bus, shuttle

    1. Take the ferry from Batu Ampar to Port of Tanjung Priokferry ferry
    2. Take the bus from Jakarta Kampung Rambutan Bus Station to Kudusbus bus
    3. Take a shuttle bus from Kudus to Surabayashuttle bus
    2d 6h
    Rp 814,260–1,211,400

Hang Nadim International Airport (BTH) to Juanda International Airport (SUB) flights

Calendar42Weekly Planes
Duration3h 24mAverage Duration
TicketRp 1,454,559Cheapest Price
See schedules

Questions & Answers

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.

Airlines
Train operators
Bus operators
Ferry operators

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.