Ferries run from Bari to Albania, Croatia, Greece and Montenegro. All boat companies have offices at the ferry terminal, accessible on bus 20 from the main train station. Fares vary considerably among companies and it's easier to book with a travel agent such as Morfimare.
The main companies and their routes:
Jadrolinija For Dubrovnik (Croatia).
Montenegro Lines For Bar (Montenegro) and Dubrovnik (Croatia).
Superfast For Corfu, Igoumenitsa and Patras (Greece).
Ventouris Ferries For Corfu, Cephalonia and Igoumenitsa (Greece) and Durrës (Albania).
Intercity buses leave from two main locations. From Via Capruzzi, south of the main train station, SITA covers local destinations. Ferrovie Appulo-Lucane buses serving Matera (€4.90, 1¾ hours, six daily) also depart from here, plus Marozzi buses for Rome (from €34.50, 4½ to 5½ hours, six daily – note that the overnight bus departs from Piazza Moro) and other long-distance destinations.
Buses operated by Ferrovie del Sud-Est leave from Largo Ciaia, south of Piazza Aldo Moro and service the following places:
Alberobello (€4.90, 1½ hours, hourly); continues to Locorotondo (€5.60, 1¾ hours) and Martina Franca (€5.60, two hours)
Grotte di Castellana (€2.80, one hour, frequent)
Taranto (€8.40, three hours with change, four per day)
A web of train lines spreads out from Bari. Note that there are fewer services on the weekend.
From the Bari Centrale Station, Trenitalia trains go to Puglia and beyond:
Brindisi (from €8.40, one hour, frequent)
Foggia (from €9.10, one hour, frequent)
Milan (from €59, 6¾ to eight hours, frequent)
Rome (from €40, four hours, four per day)
Ferrovie Appulo-Lucane serves two main destinations:
Matera (€4.90, 1¾ hours, 12 daily)
Potenza (€11, 3¾ hours, four daily)
Ferrovie del Sud-Est trains leave from the southern side of the station where they have their own separate ticket office:
Alberobello (€4.90, 1¾ hours, hourly)
Martina Franca (€5.60, 3¼ hours, five per day)
Taranto (from €8.40, 2½ hours, nine daily)