Getting there & away
Most of Surabaya’s buses operate from the main Purabaya bus terminal, 10km south of the city centre at Bungurasih. Crowded Damri buses run between the bus terminal and the city centre – the P1 service (2000Rp) from the bus terminal is best and can drop you at the Jl Tunjungan/Jl Pemuda intersection. A metered taxi costs around 30, 000Rp. Buses along the north coast to Kudus (normal/patas 25, 000/45, 000Rp, eight hours) and Semarang (35, 000/50, 000Rp, nine hours) depart from Terminal Oso Wilangun, 10km west of the city.
Buses from Purabaya head to Malang (9500/15, 000Rp, two hours), Probolinggo (12, 000/20, 000Rp, three hours), Banyuwangi (33, 000/50, 000Rp, six hours), Solo (28, 000/50, 000Rp, 6½ hours) and to Yogyakarta (35, 000/60, 000Rp, eight hours). Buses also operate from Purabaya bus terminal to Madura.
Luxury buses from Purabaya also do the long hauls to Solo, Yogyakarta, Bandung and Denpasar. Most are night buses leaving in the late afternoon/evening. Bookings can be made at Purabaya bus terminal, or travel agencies in the city centre sell tickets with a mark-up. The most convenient bus agents are those on Jl Basuki Rahmat. Intercity buses are not allowed to enter the city, so you will have to go to Purabaya to catch your bus.
From Jakarta, trains taking the fast northern route via Semarang arrive at the Pasar Turi train station southwest of Kota train station. Trains taking the southern route via Yogyakarta, and trains from Banyuwangi and Malang, arrive at Gubeng and most carry on through to Kota. Gubeng train station (5033115) is much more central and sells tickets for all trains.
Most Jakarta-bound trains leave from Pasar Turi (5345014), including the luxury Argo Anggrek (from 200, 000Rp, nine hours), which leaves at 8.15am and 8.15pm, and the Gumarang (business/executive 130, 000/180, 000Rp, 11 hours), departing at 5.05pm.
The Sancaka is the best day train for Yogyakarta, leaving Gubeng at 7.30am and 3pm for Solo (four hours) and Yogyakarta (five hours). It costs 60, 000/85, 000Rp in business/executive class to either destination. The faster 1.15pm Sri Tanjung (21, 000Rp, six hours) is a reasonable economy-class service to Yogyakarta’s Lempungan train station via Solo, but schedules change regularly.
Apart from services to the main cities, trains leave Gubeng for Malang (6000Rp, two hours) at 4.40am, 8am, 10.45am and 4.20pm and most continue on to Blitar. The Mutiara Timur goes to Banyuwangi (business/executive 40, 000/55, 000Rp, six hours) via Probolinggo at 9.10am and 10.45pm.
Surabaya is an important port and a major transport hub for ships to the other islands. Boats depart from Tanjung Perak harbour; bus P1 from outside Tunjungan Plaza heads here.
Popular Pelni connections run to Sulawesi, with several ships running direct to Makassar (economy/1st class 161, 500/507, 000Rp), and Pontianak (195, 000Rp to 617, 000Rp) in Kalimantan. See the Transport chapter or head to the Pelni ticket office (3521044; www.pelni.co.id; Jl Pahlawan 112; 8am-6pm Mon-Fri, 9am-3pm Sat & Sun) for more information.
Ferries to Kamal on Madura (4000Rp, 30 minutes) leave every half-hour from Tanjung Perak, at the end of Jl Kalimas Baru.
Surabaya has a number of international connections, though services are rapidly diminishing. The most-popular flights head to Singapore (US$220).
Mandala (535 1111, www.mandalaair.com; Jl Raya Diponegoro 91D)
Air Asia www.airasia.com
Travel agencies sell domestic tickets at a small discount and international tickets with a bigger cut. See the Java Airfares map for prices.
Agencies include Haryono Tours & Travel (5325800; Jl Panglima Sudirman 93; 8am-4pm Mon-Fri, 8am-1pm Sat).