Most travel guides will tell you that you need to hire a car to explore Puglia — that public transport is too limited. And while there’s no denying that having your own wheels gives you maximum flexibility (especially for beaches, countryside stays and smaller villages), it’s not the only way.
If you’re comfortable driving, Puglia is easier to navigate than many expect — but hiring a car isn’t essential. With a little planning and some local know-how, it’s absolutely possible to get around using trains and buses.
The main Trenitalia line from Bari to Lecce (via Polignano a Mare, Monopoli, Fasano, Ostuni and Brindisi) is modern, reliable, fast and cheap. Think of it as your backbone. From there, a web of regional trains and interurban buses opens up much of the rest of the region — especially if you’re happy to travel at a slower pace.
The challenge is that public transport in Puglia isn’t fully integrated. Multiple operators run separate train and bus networks, and they don’t always coordinate with each other. That can make planning a journey — or even knowing where to start — unnecessarily complicated.
That’s where this guide comes in. We’ve done the groundwork, bringing together all the key information to help you travel confidently by public transport, whether you’re hopping between major towns or venturing further off the beaten path.
Public Transport in Puglia | The Challenges
- Multiple Operators, No Integration
Unlike many other parts of Italy, Puglia’s public transport is operated by a patchwork of companies. Their services are not fully integrated. That means one website or app might not show all available options — and journeys that combine different services can be hard to plan online. - Incomplete Search Results
Major platforms like Trenitalia and Google Maps won’t always show the full range of bus services, especially those run by rail companies like FSE or FdG. Similarly, the COTRAP system — Puglia’s regional bus journey planner — doesn’t include these essential services either. - Confusing Stop Names and Duplicates
Many towns have more than one station or stop — and they’re not always where you’d expect. For example, Cisternino has a Trenitalia station (nowhere near town) and an FSE stop (on the outskirts but walkable). Nardò has a “Centrale” station that’s neither central nor convenient. A poorly chosen stop on your search can turn a 30-minute trip into a 3-hour journey via multiple transfers. - Disconnected Services
Even when buses and trains are operated by the same company, they don’t always connect. It’s common for a train to arrive at one end of town while the connecting bus leaves from the other. Sunday services may be run entirely by rail-replacement buses, which follow train timetables. - Timings and Use Case
Many rural services are built around school hours or commuter needs, meaning long gaps in the middle of the day and few services on Sundays or holidays. You’ll also need to be mindful of terms like feriali (weekdays), festivi(Sundays and holidays), and scolastici (school days).
For most travellers staying in Puglia’s better-known destinations — and not venturing far off the beaten path — Trenitalia and FSE’s rail and bus services will more than suffice. If you’re exploring the likes of Bari, Polignano a Mare, Monopoli, Ostuni, Brindisi, Lecce, Taranto, or even Alberobello and Martina Franca, you’ll find the main train and bus networks easy to use and well connected, without needing to worry about more complex local services or rural routes.
Using Public Transport in Puglia | Overview
The Rail Network: Trenitalia + Four Regional Operators
- Trenitalia is the national rail provider, running modern, efficient services along the Adriatic spine between Foggia and Lecce, and inland to Taranto.
- Ferrovie del Sud Est (FSE) covers the Valle d’Itria and Salento, from Martina Franca to Lecce, Gallipoli, Otranto and Gagliano del Capo. Owned by Trenitalia but on separate lines with separate timetables.
- Ferrovie del Gargano (FdG) connects Foggia to the Gargano peninsula — including Peschici and Lucera — and operates coastal bus links to Vieste.
- Ferrovie Appulo Lucane (FAL) runs inland between Bari, Matera, Altamura, Gravina and Potenza. Matera Centrale is its most useful station.
- Ferrotramviaria / Ferrovie del Nord Barese (FNB) runs north of Bari, including direct links to the airport and towns like Bitonto, Andria and Barletta.
Each of these operators uses its own trains, timetables, and in some cases, separate stations — even in the same town.

The Bus Network
All four regional rail companies also operate extensive bus services, which means even if you’re headed somewhere with no train station, there’s often a connecting bus to get you the rest of the way. However, they are run by different companies, timetables are not always integrated, and some key stations are located outside town centres – so a bit of advance planning goes a long way.
- Numerous intercity and regional bus operators, including:
- STP Brindisi, STP Terra d’Otranto
- Sita Sud, ACAPT, and the Salento in Bus summer service
- COTRAP (a regional bus consortium)
- Pugliairbus is a long-distance shuttle coach service that connects Puglia’s main airports — Bari and Brindisi — to regional hubs not always well served by train. Coordinated by Aeroporti di Puglia, it’s especially useful for visitors arriving or departing by air who need to get to towns like Matera, Taranto, or Foggia (and along the Gargano peninsula) without hiring a car.
When planning your journey, remember that not all services appear on the Trenitalia website — and even when they do, some can’t be booked online. If a route seems to be missing, check the individual operator websites, Google Maps, or an aggregator like Rome2Rio.
For most travellers, the Trenitalia and FSE networks cover the main transport hubs and much of the Valle d’Itria and Salento. But if a journey looks unusually long, involves multiple changes, or doesn’t show up at all, don’t assume it’s impossible — try a second search using different tools.
Also think about where you’re going. For example, if you’re heading to Peschici in the Gargano, you’ll need to look beyond Trenitalia. That route is run by Ferrovie del Gargano (FdG), which isn’t integrated into the national system.
Using Public Transport in Puglia | Finding the journey you want to make
1. Start with the Trenitalia website or app.
Trenitalia and FSE now share a single booking system — so whether you’re travelling on the national network or a local FSE train, you can check times and buy tickets on the Trenitalia website or app. It’s reliable, user-friendly, and available in English.
When using the Trenitalia website or app to plan a journey, you’ll often see multiple station options for the same town. That’s because the system lists every FS and FSE station, as well as FSE bus stops — and it’s not always obvious which one you want.
If you search for a journey from Martina Franca to Cisternino for example, and select Cisternino, you’ll be routed via Fasano and Monopoli, and arrive at the Trenitalia station nowhere near the town — you’ll still need a bus or taxi to get into Cisternino itself. That roundabout journey can take anywhere from 2 to 5 hours.
But search instead for Martina Franca to Cisternino Città, and you’ve chosen the urban FSE station, just outside town. It’s a direct FSE train or bus, and the whole trip takes as little as 13 to 30 minutes.
A small change in the station name can save you hours — so it pays to know what you’re looking for.
2. COTRAP for bus journeys
The COTRAP website is one of the main tools for checking bus journeys across Puglia, and is often the only place to find information about regional bus services, between towns not served by train.
It only covers bus options, not trains, so you won’t see journeys that might be faster or easier by rail. Unfortunately it doesn’t include the extensive bus services run by some of the railway companies — most notably FSE, which operates many important routes across the Valle d’Itria and Salento. That means you could miss entire travel options just by using COTRAP.
3. Try Google Maps
Google Maps can be a useful tool when using public transport in Puglia, but with limitations. Here’s a breakdown of how it performs and when to rely on it — or not.
When Google Maps Works Well in Puglia
- Major cities and FS/Trenitalia routes (e.g. Bari ↔ Polignano ↔ Monopoli ↔ Brindisi ↔ Lecce):
Google Maps integrates national rail (Trenitalia) schedules effectively. You’ll get reliable route suggestions, platform info, and live updates. - Ferrotramviaria (Bari–airport link):
This commuter line is also integrated and reliable via Google Maps. - Some interurban and suburban buses in bigger towns (like Bari or Lecce):
You’ll often find correct timings for city bus services.
Limitations of Google Maps in Puglia
- Ferrovie del Sud Est (FSE):
Despite being a Trenitalia subsidiary, FSE routes and buses are not consistently shown or are incomplete in Google Maps. This affects inland destinations like Alberobello, Martina Franca, and Gagliano del Capo. - Other regional lines (FdG, FAL, FNB):
These are mostly not integrated into Google Maps. You won’t find train times or station data for many secondary rail lines (e.g. to Matera or into Gargano). - Interurban buses (e.g. STP, COTRAP, Salento in Bus):
Google Maps has patchy coverage of regional bus services, especially seasonal ones (although it is getting better). You’ll need to consult the operator websites or use the COTRAP portal (https://www.cotrap.it/).
Tips for Using Google Maps in Puglia
- Use it as a base layer: Great for visualising routes, understanding geography, and navigating walking legs of your journey.
- Find bus stops: It’s a really good tool for clicking on bus stops to find services, then click on the services you want and it locate the route stop by stop, and use that information to locate the location of other stops on Google Maps.
- Cross-check times: For any regional rail or bus services, confirm timings with the official operator sites or the COTRAP and FSE portals.
- Double-check station names: Google Maps sometimes lists smaller stations under vague or misleading names—use official names from Trenitalia/FSE timetables.
Best Combined Approach
Tool | What It’s Good For |
Google Maps | Walking directions, national rail, FS stations, city navigation |
Trenitalia/FSE apps | Accurate train times (regional + national), e-tickets |
COTRAP.it | Regional buses (but not FSE), Salento routes |
Operator websites (FSE, FAL, FdG) | PDF timetables and service alerts |
4. Rome2Rio website
If you have a specific trip in mind, one very useful starting point for using public transport in Puglia is the Rome2Rio website. This is straightforward to use, simply enter your departure and destination locations (which can be very precise). The website generates various options for travel including train and bus options with details, including times and operators.
Limitations of Rome2Rio in Puglia
- Timetables often outdated or missing:
Rome2Rio rarely pulls live or current schedules for FSE, FAL, or Ferrovie del Gargano. You might see suggested services that no longer run, or miss routes that do. - Generic or placeholder bus info:
Many intercity bus listings are not tied to real operators or accurate stops. It might say “a bus runs every 4 hours” with no operator or ticket link provided. - Transfers can be misleading:
Rome2Rio sometimes suggests walking between distant train stations, like Bari Centrale and Bari Sud Est, without flagging that they’re 15+ minutes apart and not the same system. - Lack of detail for rural connections:
Especially in Salento or Valle d’Itria, the site won’t reflect how limited or seasonal public transport actually is.
Best Way to Use Rome2Rio in Puglia
Task | Rome2Rio Usefulness |
High-level overview (e.g. Lecce to Matera) | Good for seeing transport modes |
Planning exact times/routes | Not reliable |
Booking or buying tickets | Redirects to third-party sites, not always the correct operator |
Coastal rail travel (e.g. Bari–Polignano–Monopoli) | Generally accurate |
Inland villages or small towns | Often wrong or missing info |
5. Pugliairbus: Airport Coach Connections

Pugliairbus is a long-distance coach service connecting Bari and Brindisi airports to towns not easily reached by train. It’s run by Aeroporti di Puglia and operates year-round, with more routes in summer. These are comfortable, air-conditioned coaches with fixed schedules and direct or semi-direct routes.
From Bari Airport: Matera (75 minutes), Taranto (90 minutes), Foggia (2 hours).
From Brindisi Airport: Lecce (40–60 minutes, frequent), Taranto (90 minutes), Matera (2 hours, summer only).
No ticket sales on board. Tickets must be booked in advance via the Aeroporti di Puglia website. Schedules vary by season; reduced service on holidays.
You don’t usually need to book in advance for journeys within Puglia — especially if you’re using regional trains, which run regularly and are rarely full. You can simply buy your ticket at the station. These days most of the journeys we make can be found, bought and tickets managed on the Trenitalia app. Usually we can change our tickets on the app (“manage” section) right up until the train departs, at no extra cost.
Every station has an automatic ticket machine that accepts cards and is easy to use. In smaller towns, nearby newsagents, tobacconists, or bars are often licensed to sell tickets too. Only the bigger stations have full ticket offices — and they can get busy — so don’t hesitate to use the machines or pop into a local bar if you’re in a hurry.
Many of the FSE journeys are covered by bus and train. In some instances bus journeys may be more direct, and quicker.
Using Public Transport in Puglia | Travelling by Train
1. Trenitalia – National Rail Services
- Runs along the Adriatic spine from Foggia to Lecce.
- Offers both Regional trains (frequent and cheap) and Intercity/Freccia services (faster and more expensive).
- Tickets are available at all stations via machines (in English), at larger staffed stations, or online via the Trenitalia app or website.
- Regional tickets must be validated before boarding at yellow/green machines. Those bought on the Trenitalia app are automatically validated.
The main Trenitalia line runs down the Adriatic coast and inland to Taranto, connecting many of Puglia’s larger towns and cities (Foggia, Bari, Polignano a Mare, Monopoli, Fasano, Ostuni, Brindisi, Lecce). On its FSE network (see below) you can travel directly by regional train to San Severo, Foggia, Barletta, Trani, Bisceglie, Molfetta, Giovinazzo, Polignano a Mare, Monopoli, Fasano, Ostuni, Carovigno, Brindisi, Lecce, Mesagne, Oria, Francavilla Fontana, Grottaglie, Taranto and Massafra.
A couple of notes: Cisternino station on the Trenitalia main Adriatic line is a long way from the town. You’re better off getting off at Fasano and taking the STP Brindisi bus, which runs to both Fasano’s centre and to Cisternino. Alternatively, Cisternino is more conveniently reached via the FSE line (Cisternino Città). Ostuni — the FS station is a few kilometres out, but there’s a regular STP bus connecting it to the centre from early morning through to late evening. Carovigno’s FS station is a long way from town!
This makes Trenitalia a really handy backbone for your trip — and with onward connections from many of these towns by bus or regional rail, it can take you much further than you might expect.
Access the Trenitalia website here.
2. Ferrovie del Sud Est (FSE)
- Covers the Valle d’Itria and Salento: Martina Franca, Alberobello, Lecce, Gallipoli, Otranto, Gagliano del Capo.
- Owned by Trenitalia but operates on a separate network.
- Uses both trains and extensive bus routes, especially in rural areas and on Sundays.
- Buy tickets via Trenitalia/FSE apps, machines, bars, or on board (validation often required).
- Important: some FSE stations are far from town centres, so check distances in advance.

The FSE network stretches out like a spider’s web across central and southern Puglia. From Bari, it runs south through Putignano, Conversano, and the Valle d’Itria — including Martina Franca — before continuing to Taranto. Meanwhile, from Lecce, the lines fan out into the Salento, reaching Maglie, Gallipoli, Otranto, Tricase, Gagliano del Capo (handy for Santa Maria di Leuca, at the tip of the heel), and plenty of other towns and villages.
The Martina Franca station is the natural junction between the northern and southern halves of the network. While there are a few direct services between the Bari and Lecce branches, most journeys will involve a change here — and thankfully, the timetables are usually designed to make that easy.
Key connections to the national Trenitalia network are at Bari and Lecce, where FSE trains use side platforms within the main stations. There are also shared stations at Taranto and Francavilla Fontana — but beyond those, the FSE lines operate on a completely separate system.
Expect journeys to be slow but scenic. Trains often chug through stark, semi-abandoned landscapes dotted with olive groves and half-forgotten stations. Many of the stops are little more than concrete shelters in the middle of nowhere, and it’s not unusual for stations to be some distance from the towns they’re meant to serve. Because much of Puglia’s coast was once marshland, the whole network keeps inland — which is part of its rustic charm, if you’re not in a hurry.
3. Ferrovie del Gargano (FdG)
- Connects Foggia and Lucera, and Foggia to Peschici-Calenella via San Severo.
- Reaches the Gargano peninsula, including bus links to Vieste and coastal towns.
- Offers scenic rail journeys along the northern coast.
The FdG offers two main train routes out of Foggia, and both are well worth knowing about — especially if you’re heading into the northern stretch of Puglia.
Foggia–Lucera is a short, fast shuttle line with trains running roughly every hour from early morning to late evening. The journey takes about 20 minutes, making it an easy hop to Lucera.
Foggia to Peschici, via San Severo, Apricena, and Rodi, is the only railway that enters the Gargano peninsula, running along the north coast, past salt flats, marine lakes and pine-backed beaches. The final stop is at Peschici Calenella, about 4 km outside the town — but don’t worry, buses run from the station into the centre. From there, you can also hop on a connecting bus to Vieste.
There are usually three or four trains a day running the full length to Peschici (more in summer), and more frequent services as far as Apricena.
If you get the chance to ride this line, take it — it’s one of the most scenic rail journeys in Puglia, and a great way to see the Gargano without a car.
4. Ferrovie Appulo Lucane (FAL)
- Runs from Bari to Matera, with connections to Altamura, Gravina, and Potenza.
- Not integrated with FS tickets.
- Matera Centrale is the stop closest to the old town.
- Use FAL’s website or local bars for ticket purchase.
FAL connects Bari with the inland hills of Puglia and into Basilicata, with routes from Bari to Matera, Altamura, Gravina, Potenza, and Avigliano.
The main FAL station in Bari is just next to Bari Centrale, in Piazza Aldo Moro. The trains are reliable, efficient, and run from early morning until late evening.
The most popular route is to Matera. The train usually splits at Altamura, with one half continuing to Matera Centrale (which is the stop you want) and the other heading toward Gravina. This means you may be asked to change at Altamura, but often it’s just a matter of being in the right carriage from the start.
FAL also connects with Gravina in Puglia, and Altamura.
5. Ferrotramviaria / Ferrovie del Nord Barese (FNB) for Bari Airport and Inland Towns
- Offers local commuter trains north of Bari, including direct service to Bari Airport (Karol Wojtyla).
- Also serves Bitonto, Andria and Barletta.
- Departures are from a separate station near Bari Centrale (Piazza Aldo Moro).
Trains run from Piazza Aldo Moro in central Bari (right next to the FAL station) and also connect to the main FS network at Barletta.

There are four lines on the FNB network, but visitors will mostly care about the airport line:
- Grey Line (FM2) – This is the airport line, and it’s excellent. It links Bari with Bitonto, Corato, Andria, and Barletta — all of which are worth visiting in their own right. If you’re heading to Castel del Monte, this is also your best bet, as Andria is the nearest station.
- Red Line – This line runs to Ospedale San Paolo.
- Yellow Line – Same as the grey line, but only goes as far as Bitonto.
- Blue Line – Follows a slightly different route out of Bari than the grey line, and doesn’t stop at the airport.
Beyond the airport, FNB is a handy way to explore the inland towns north of Bari. It’s also a smart way to avoid driving if you’re heading to Castel del Monte — from Andria, there’s a bus connection.
A note on Sundays and accessibility
If you’re travelling on a Sunday, don’t be surprised to find your train has been swapped out for a coach. It’s standard practice here — many regional lines run “rail replacement” buses between stations instead of trains. These usually follow the same timetable but are separate from the regular bus services, so it’s worth double-checking your journey in advance.
Accessibility on trains in Puglia is improving, especially on the national (Trenitalia) and most regional lines, where wheelchair users and cyclists are generally well accommodated. The exception is the FSE network, where older rolling stock can still make access tricky. If you have additional needs or are travelling with a bike, we recommend checking the type of train running on your route. You can find contact details for assistance on each operator’s website.
Travelling by Bus in Puglia
Buses are an essential part of Puglia’s public transport system — especially if you’re heading off the beaten track to places the trains don’t reach. But they’re not always straightforward to use. Services are run by a range of different companies, and in some cases they don’t even connect to the train stations operated by the same provider! Here’s what you need to know.
Key Bus Operators
- Ferrovie del Sud Est (FSE): Extensive bus routes complementing train services.
- Sita Sud: Covers large parts of Gargano and routes west of Bari and Taranto.
- STP Brindisi & STP Terra d’Otranto: Local networks around Brindisi, Ostuni, Lecce, Gallipoli.
- ACAPT: Services around Foggia and hill villages like Bovino.
- Salento in Bus (June–September): Summer-only routes linking Salento’s beach towns with Lecce, Otranto, Gallipoli and Santa Maria di Leuca.
COTRAP: The Bus Booking Platform
- COTRAP (www.cotrap.it) is a shared timetable and ticketing portal.
- However, it does not include FSE services, so always check both.
- Route searches require specifying the exact town and bus stop.
Public transport in Puglia.
Why Buses Matter — and What to Watch Out For
All four of Puglia’s regional rail companies — Ferrovie del Gargano (FdG), Ferrovie del Sud Est (FSE), Ferrovie Appulo Lucane (FAL), and Ferrovie del Nord Barese (FNB) — operate extensive bus networks alongside their trains. These routes form a vital part of the region’s overall transport network, particularly in rural and coastal areas.
But there are quirks. Bus and train services don’t always connect at the same locations, even when run by the same company. It’s not unusual to arrive at a train station, only to discover that your onward bus leaves from a stop on the other side of town. Always double-check the actual location of the bus stop before you set off.
One important exception is the rail replacement services run on Sundays and holidays — these follow the regular train timetable and run station-to-station. So if you’ve booked a train on a Sunday and a coach shows up, don’t panic — it’s just how the system works.
Practical Tips for Bus Travel in Puglia
- Check the timetable type: Services may only run on weekdays (feriali), Sundays and holidays (festivi), or school days (scolastici).
- Plan for transfers: Buses don’t always wait at train stations. Allow time and research your stops.
- Stops can be unmarked or spread out. Use maps and route descriptions to locate yours.
- Validate your ticket on board using the machines.
Who’s Who: Regional Bus Operators in Puglia
Ferrovie del Gargano (FdG)
Runs key services in the Gargano, including the San Severo–Vieste route via Peschici. Timetables and maps (PDF) are available via the Italian version of the FdG website. Tickets can be bought in shops, bars, or online via COTRAP.
ACAPT
Based in northern Puglia, ACAPT focuses on commuter and school routes, including Bovino and towns north of Foggia. Tickets must be bought in advance, and a full list of outlets is available online. Don’t forget to validate your ticket.
Access the ACAPT website here.
Sita Sud
Covers a wide area including Foggia, Bari, and parts of southern Puglia. Tickets can be purchased online, on board, or at authorised vendors (searchable on their site). The website has a Puglia-specific section for timetables and updates.
Ferrotramviaria / Ferrovie del Nord Barese (FNB)
FNB buses mostly mirror the rail routes between Bari, Bitonto, Andria, and Barletta. We recommend using the trains instead, as they’re faster and more comfortable.
Ferrovie Appulo Lucane (FAL)
Runs between Bari, Gravina, Matera, and Potenza. These buses follow the same routes as the trains, which we strongly prefer for the scenic ride through the Murge hills.
Freccialink (FS State Railways)
Limited high-speed coach services connecting Frecciarossa rail stations with towns beyond the main network. In Puglia, there’s a seasonal (summer weekends only) link from Foggia to Vieste via Peschici. Can only be booked with a Frecciarossa ticket via Trenitalia.
STP Bari
Operates around Bari, extending to Andria, Barletta, Cerignola, Matera, and Gravina. These are mostly commuter services, but a few useful links (e.g. Trani to Andria) can’t be done by train. Full timetables can be downloaded from the STP Bari website.
Ferrovie del Sud Est (FSE)
FSE runs one of the largest bus networks in Puglia, covering everything from Bari to Lecce and deep into the Salento. It’s a crucial option for southern Puglia, but be aware: FSE buses and trains often don’t connect directly, with stops in different parts of town.
Timetables and ticket outlets are listed on the FSE website, and while its rail and bus services are visible on the Trenitalia system, FSE bus routes are not shown on the COTRAP site — so always search both.
STP Brindisi
Covers a large area between Fasano, Brindisi, Ostuni, Lecce, Taranto, and beyond. Also runs interurban services in Brindisi, Ostuni, Francavilla Fontana, and Mesagne — and even two public ferries in Brindisi Harbour.
Most routes are designed for locals (school runs, commuters), so timetables can be tricky for tourists. There are some summer extras (including free services to coastal spots). Tickets are available in bars or on board. Contactless is being introduced.
Access the STP Brindisi website here.
STP di Terra d’Otranto & Salento in Bus
STP di Terra d’Otranto runs services in and around Lecce Province. Outside summer, they’re primarily commuter routes and timetables must be searched via COTRAP.
Access the STP di Terra d’Otranto website here.
From mid-June to mid-September, the Salento in Bus network takes over, linking coastal resorts and inland towns across southern Puglia. Timetables and maps are available on a separate site.
Access the Salento in Bus website for timetables, routes and ticket sellers.
Final Tips
- Always double-check the bus stop location – it may not be at the train station, even if run by the same company.
- Use the COTRAP website for most bus services — but remember it excludes FSE buses.
- Don’t rely on English versions of websites — Italian versions are often more complete.
Puglia’s bus network, an essential part of using public transport in Puglia, is far from seamless, but with a bit of patience and planning, it will take you deep into corners the trains don’t reach — and reveal plenty of hidden gems along the way.
Key Public Transport Hubs in Puglia
These are Puglia’s major hubs are where it all connects — and where it’s easiest to transfer between Trenitalia, regional trains, and bus services.
Gargano Peninsula (Vieste, Peschici)
San Severo
The FS (Trenitalia) station in San Severo is shared with Ferrovie del Gargano (FdG) trains, which run onward into the Gargano peninsula. FdG, Sita Sud, and ACPT bus services stop just across the road from the main station entrance at Viale Matteotti/Piazza della Costituzione (Viale Matteotti on the COTRAP journey planner).
Foggia
Foggia FS is the primary station for the northern part of Puglia and also the base for FdG train services. Bus services run by FdG, ACPT, and Sita Sud stop just outside the station at Piazza Vittorio Veneto and Nodo Intermodale.
Public Transport in Puglia | Central Puglia
Includes: Terra di Bari (Bari, Trani, Andria, Polignano a Mare, Monopoli) and the Valle d’Itria (Alberobello, Locorotondo, Martina Franca, Cisternino, Ostuni).
Bari Centrale
Bari Centrale is Puglia’s largest and busiest station — and a crucial hub for switching between national and regional services. The main entrance is on Piazza Aldo Moro, with a secondary entrance on Via Capruzzi.
- FSE trains use separate platforms at the rear of the FS station, accessible via the subway or directly from Via Capruzzi.
- Ferrotramviaria (FNB) trains, including the Bari Airport link, have a dedicated station on the north side of Piazza Moro (look left as you exit the FS station).
- FAL trains also operate from a dedicated terminal next to the FNB entrance.
- Bus services: FSE, Sita Sud, and Borman buses stop on Via Capruzzi, not Piazza Moro. You’ll need to use the underpass to access these stops from the FS platforms.
Public Transport in Puglia | the Salento Peninsula
For Brindisi, Lecce, Gallipoli, Otranto, Santa Maria di Leuca.
Brindisi
Brindisi FS station is compact and well-connected. The STP Brindisi airport shuttle stops right outside the main entrance. For interurban services, look slightly left as you exit — buses stop on Bastione Carlo V and Via Indipendenza, a few metres apart.
From Brindisi airport you can also take the Pugliairbus service to Bari, Lecce and Taranto.
Lecce
Lecce FS is the key southern rail hub. FSE trains depart from side platforms accessed via the subway. Tickets are sold at kiosks or bars in the main concourse.
Bus connections are more complex.
FSE buses for Otranto and Porto Cesareo depart nearby. Lecce’s main intercity bus terminal is a 25–30 minute walk from the train station, but you can take the M1 local bus instead (tickets from nearby outlets; the journey takes 10 minutes) to the Lecce City Terminal Bus Station. This terminal serves Salento in Bus, STP Terra d’Otranto, and several other regional services.
Closer options: If you’re staying central or near the station, the STP Terra d’Otranto stop on Viale Marche is about a 10-minute walk. Head straight along Viale Oronzo Quarta, turn right onto Viale Gallipoli, then continue to the Questura roundabout. Check the timetables for nearby stops for the relevant services.
Top tip: If you’re heading into the Salento, consider using FSE trains from Lecce and switching to bus connections in Maglie, where the interchange is easier.
Taranto
In Taranto, FSE trains use the FS main station. Bus services, including Sita Sud and STP Terra d’Otranto, depart from Porto Mercantile, a 5-minute walk away. Exit the station, go straight across two roundabouts, and follow signs to Massafra. Several bus stops are clustered there — check which one you need in advance.
Public Transport in Puglia | City by city
Our individual city guides include recommendations on what to see, great restaurants to eat at and detailed information on getting to and from them using public transport in Puglia.
You can find the Puglia Guys Puglia city guides here.
Driving in Puglia
If you want decide against using public transport in Puglia, for our views on driving in Puglia, check out our Puglia Guys Practical Guide to Driving in Puglia.