- Must visit
Pinacoteca di Brera
One of Italy’s top art museums, featuring masterpieces by Mantegna, Bellini, Raphael, Caravaggio, and Piero della Francesca.
Flights from Ostuni to Milan depart on average 34 times per day, taking around 2h 26m. Cheap flight tickets for this journey start at CHF18 but you can travel from only CHF12 by bus.
There are 17 flights per day. The earliest flight runs at 00:20, the last at 23:55. The fastest flight covers the 534 miles (860 km) distance in 1h 24m. April is the cheapest month to fly.
Distance 534 miles (860 km) |
Average flight duration 2h 26m |
Cheapest ticket price CHF18 |
Flights per day 34 |
Direct flights 17 |
Fastest flight 1h 24m |
First flight 12:20 AM |
Last flight 11:55 PM |
Cheapest Month Apr |
Cheapest Day Wed |
High Season Jul - Sep |
Low Season Apr - Jun |
Busiest Day Tue |
Least Busy Day Sat |
Best time to book 1 day |
Cheapest price on Sep 01
CHF155
Average ticket price on Sep 01
CHF225
Fastest journey on Sep 01
1 h 24 m
Average journey duration on Sep 01
1 h 26 m
Flights on Sep 01
82
Distance
860 km
The best way to find a cheap flight ticket from Ostuni to Milan is to book your journey as far in advance as possible and to avoid traveling at rush hour.
The average ticket from Ostuni to Milan will cost around CHF225 if you buy it on the day, but the cheapest tickets can be found for only CHF155.
On Tue, Sep 01, we found 82 flights from Ostuni to Milan, including 20 direct services.
On Tue, Sep 01 the direct flights cover the 860 km distance in an average of 1 h 26 m but if you time it right, some flights will get you there in just 1 h 24 m .
On Tue, Sep 01 the longest flights will take 1 h 30 m and usually involve a change or two along the way, but you might be able to save a few pennies if you’re on a budget.
FR 978
U23516
AZ1606 · AZ2130
AZ1616 · AZ2056
AZ1612 · AZ2044
AZ1650
AZ1648
AZ1654
AZ1672
FR 3654Omio recommends booking the train as it is the most popular option from Ostuni to Milan among Omio's users. If you are prioritising price, take the bus, with an average ticket price of CHF90 For those with little time, consider booking a flight, which has an average total journey time of 4h 26m. If you are seeking to minimise your carbon footprint, the train is your best option, with estimated CO2 emissions of 0.3 - 0.8kg. Average ticket prices depend on the travel mode: a bus costs an average of CHF90, while a flight costs an average of CHF216.
Distance: 534 miles (860 km)
| Flight | Most popular Train | Bus |
|---|---|---|
CHF216 Average price | CHF107 Average price | CHF90 Average price Cheapest |
4h 26m Average total duration Fastest 2h 26m Onboard + 2h 0m Additional time* | 9h 45m Average total duration 9h 15m Onboard + 30m Additional time* | 15h 35m Average total duration 15h 5m Onboard + 30m Additional time* |
2.6 - 5.2kg CO2 emissions | 0.3 - 0.8kg CO2 emissions Lowest | 0.9 - 2.1kg CO2 emissions |
![]() Most popular airline | ![]() Most popular train company | ![]() Most popular bus company |
Direct Options | Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
This is compared to other travel options from Ostuni to Milan:
A bus is CHF17 less than a train for this route with tickets for a train from Ostuni to Milan costing on average CHF107.
A bus is CHF127 less than a flight for this route with tickets for a flight from Ostuni to Milan costing on average CHF216.
Other travel options to Milan take longer:
Train takes on average 9h 15m.
Bus takes on average 15h 5m.
The table below shows live departures for Ostuni to Milan flights for today, Monday, August 31. You can also manually refresh the results below to see updated flight journeys.
| Provider | Departs | Duration | Arrives | Transfers | Tickets |
|---|---|---|---|---|---|
U23532 | 9:50 PM Bari Palese Airport | 1h35 | 11:25 PM Milan Malpensa Airport | 0 transfersDirect | |
FR 2865 | 10:45 PM Brindisi Airport | 1h40 | 12:25 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 4659 | 10:50 PM Bari Palese Airport | 1h30 | 12:20 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
| Tuesday, September 1 | |||||
FR 4668 | 5:45 AM Bari Palese Airport | 1h30 | 7:15 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ U23516 | 5:59 AM Ostuni station | 10h06 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ AZ1628 · AZ2092 | 5:59 AM Ostuni station | 12h11 | 6:10 PM Milan Linate Airport | 3 transfers | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ AZ1622 · AZ2056 | 5:59 AM Ostuni station | 14h11 | 8:10 PM Milan Linate Airport | 3 transfers | |
AZ1620 · AZ2028 | 6:20 AM Brindisi Airport | 3h50 | 10:10 AM Milan Linate Airport | 1 transfer | |
AZ1620 · AZ2036 | 6:20 AM Brindisi Airport | 4h50 | 11:10 AM Milan Linate Airport | 1 transfer | |
AZ1602 · AZ2028 | 6:30 AM Bari Palese Airport | 3h40 | 10:10 AM Milan Linate Airport | 1 transfer | |
AZ1602 · AZ2036 | 6:30 AM Bari Palese Airport | 4h40 | 11:10 AM Milan Linate Airport | 1 transfer | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ AZ1628 · AZ2092 | 7:18 AM Ostuni station | 10h52 | 6:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ U23516 | 7:18 AM Ostuni station | 8h47 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ AZ1622 · AZ2056 | 7:18 AM Ostuni station | 12h52 | 8:10 PM Milan Linate Airport | 3 transfers | |
FR 3449 | 7:30 AM Brindisi Airport | 1h40 | 9:10 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 277 | 7:50 AM Bari Palese Airport | 1h40 | 9:30 AM Milan Malpensa Airport | 0 transfersDirect | |
AZ1638 | 8:25 AM Bari Palese Airport | 1h30 | 9:55 AM Milan Linate Airport | 0 transfersDirect | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ AZ1628 · AZ2092 | 8:25 AM Ostuni station | 9h45 | 6:10 PM Milan Linate Airport | 3 transfers | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ U23516 | 8:25 AM Ostuni station | 7h40 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ AZ1622 · AZ2056 | 8:25 AM Ostuni station | 11h45 | 8:10 PM Milan Linate Airport | 3 transfers | |
AZ1642 | 8:50 AM Brindisi Airport | 1h35 | 10:25 AM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ AZ1644 | 8:52 AM Ostuni station | 11h33 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ U23516 | 8:52 AM Ostuni station | 7h13 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ AZ1622 · AZ2056 | 8:52 AM Ostuni station | 11h18 | 8:10 PM Milan Linate Airport | 3 transfers | |
InterCityNotte 757+ BRINDISI AIRPORT LINK AP16+ AZ1644 | 9:19 AM Ostuni station | 11h06 | 8:25 PM Milan Linate Airport | 2 transfers | |
InterCityNotte 757+ BRINDISI AIRPORT LINK AP16+ AZ1622 · AZ2056 | 9:19 AM Ostuni station | 10h51 | 8:10 PM Milan Linate Airport | 3 transfers | |
InterCityNotte 757+ BRINDISI AIRPORT LINK AP16+ U23516 | 9:19 AM Ostuni station | 6h46 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ AZ1644 | 9:52 AM Ostuni station | 10h33 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ U23516 | 9:52 AM Ostuni station | 6h13 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ AZ1622 · AZ2056 | 9:52 AM Ostuni station | 10h18 | 8:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ U23516 | 10:48 AM Ostuni station | 5h17 | 4:05 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ AZ1644 | 10:48 AM Ostuni station | 9h37 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ AZ1622 · AZ2056 | 10:48 AM Ostuni station | 9h22 | 8:10 PM Milan Linate Airport | 3 transfers | |
AZ1624 · AZ2044 | 11:15 AM Brindisi Airport | 4h10 | 3:25 PM Milan Linate Airport | 1 transfer | |
AZ1612 · AZ2044 | 11:20 AM Bari Palese Airport | 4h05 | 3:25 PM Milan Linate Airport | 1 transfer | |
FR 978 | 11:25 AM Brindisi Airport | 1h45 | 1:10 PM Milan Malpensa Airport | 0 transfersDirect | |
AZ1648 | 11:55 AM Bari Palese Airport | 1h25 | 1:20 PM Milan Linate Airport | 0 transfersDirect | |
U23524 | 1:15 PM Bari Palese Airport | 1h35 | 2:50 PM Milan Malpensa Airport | 0 transfersDirect | |
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+ AZ1634 · AZ2130 | 1:18 PM Ostuni station | 9h52 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+ AZ1644 | 1:18 PM Ostuni station | 7h07 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+ U23518 | 1:18 PM Ostuni station | 10h47 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
AZ1654 | 1:50 PM Bari Palese Airport | 1h25 | 3:15 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4405 · BRINDISI AIRPORT LINK AP34+ U23518 | 1:51 PM Ostuni station | 10h14 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4405 · BRINDISI AIRPORT LINK AP34+ AZ1644 | 1:51 PM Ostuni station | 6h34 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4405 · BRINDISI AIRPORT LINK AP34+ AZ1634 · AZ2130 | 1:51 PM Ostuni station | 9h19 | 11:10 PM Milan Linate Airport | 3 transfers | |
FR 858 | 2:00 PM Brindisi Airport | 1h40 | 3:40 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
Regionale Veloce 4407 · BRINDISI AIRPORT LINK AP36+ U23518 | 2:18 PM Ostuni station | 9h47 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4407 · BRINDISI AIRPORT LINK AP36+ AZ1634 · AZ2130 | 2:18 PM Ostuni station | 8h52 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4407 · BRINDISI AIRPORT LINK AP36+ AZ1644 | 2:18 PM Ostuni station | 6h07 | 8:25 PM Milan Linate Airport | 2 transfers | |
U23516 | 2:20 PM Brindisi Airport | 1h45 | 4:05 PM Milan Malpensa Airport | 0 transfersDirect | |
AZ1628 · AZ2056 | 2:40 PM Brindisi Airport | 5h30 | 8:10 PM Milan Linate Airport | 1 transfer | |
AZ1628 · AZ2092 | 2:40 PM Brindisi Airport | 3h30 | 6:10 PM Milan Linate Airport | 1 transfer | |
AZ1628 · AZ2050 | 2:40 PM Brindisi Airport | 4h00 | 6:40 PM Milan Linate Airport | 1 transfer | |
Regionale Veloce 4411 · BRINDISI AIRPORT LINK AP38+ AZ1644 | 2:51 PM Ostuni station | 5h34 | 8:25 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4411 · BRINDISI AIRPORT LINK AP38+ U23518 | 2:51 PM Ostuni station | 9h14 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4411 · BRINDISI AIRPORT LINK AP38+ AZ1634 · AZ2130 | 2:51 PM Ostuni station | 8h19 | 11:10 PM Milan Linate Airport | 3 transfers | |
AZ1616 · AZ2056 | 3:20 PM Bari Palese Airport | 4h50 | 8:10 PM Milan Linate Airport | 1 transfer | |
AZ1616 · AZ2050 | 3:20 PM Bari Palese Airport | 3h20 | 6:40 PM Milan Linate Airport | 1 transfer | |
FRECCIAROSSA 8801+ BRINDISI AIRPORT LINK AP40+ AZ1634 · AZ2130 | 3:24 PM Ostuni station | 7h46 | 11:10 PM Milan Linate Airport | 3 transfers | |
FRECCIAROSSA 8801+ BRINDISI AIRPORT LINK AP40+ AZ1644 | 3:24 PM Ostuni station | 5h01 | 8:25 PM Milan Linate Airport | 2 transfers | |
FRECCIAROSSA 8801+ BRINDISI AIRPORT LINK AP40+ U23518 | 3:24 PM Ostuni station | 8h41 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
AZ1622 · AZ2050 | 3:30 PM Brindisi Airport | 3h10 | 6:40 PM Milan Linate Airport | 1 transfer | |
AZ1622 · AZ2056 | 3:30 PM Brindisi Airport | 4h40 | 8:10 PM Milan Linate Airport | 1 transfer | |
AZ1672 | 3:55 PM Bari Palese Airport | 1h25 | 5:20 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4415 · BRINDISI AIRPORT LINK AP44+ AZ1634 · AZ2130 | 3:59 PM Ostuni station | 7h11 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4415 · BRINDISI AIRPORT LINK AP44+ U23518 | 3:59 PM Ostuni station | 8h06 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Intercity 603+ BRINDISI AIRPORT LINK AP44+ AZ1634 · AZ2130 | 4:15 PM Ostuni station | 6h55 | 11:10 PM Milan Linate Airport | 3 transfers | |
Intercity 603+ BRINDISI AIRPORT LINK AP44+ U23518 | 4:15 PM Ostuni station | 7h50 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
FR 2771 | 4:45 PM Bari Palese Airport | 1h40 | 6:25 PM Milan Malpensa Airport | 0 transfersDirect | |
Regionale Veloce 4419 · BRINDISI AIRPORT LINK AP46+ U23518 | 4:51 PM Ostuni station | 7h14 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4419 · BRINDISI AIRPORT LINK AP46+ AZ1634 · AZ2130 | 4:51 PM Ostuni station | 6h19 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4421 · BRINDISI AIRPORT LINK AP48+ U23518 | 5:20 PM Ostuni station | 6h45 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4449 · BRINDISI AIRPORT LINK AP50+ U23518 | 5:48 PM Ostuni station | 6h17 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
FR 3654 | 6:00 PM Bari Palese Airport | 1h30 | 7:30 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 2859 | 6:25 PM Brindisi Airport | 1h40 | 8:05 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
AZ1644 | 6:50 PM Brindisi Airport | 1h35 | 8:25 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4427 · BRINDISI AIRPORT LINK AP54+ U23518 | 6:51 PM Ostuni station | 5h14 | 12:05 AM Milan Malpensa Airport | 2 transfers | |
AZ1606 · AZ2130 | 7:25 PM Bari Palese Airport | 3h45 | 11:10 PM Milan Linate Airport | 1 transfer | |
AZ1634 · AZ2130 | 7:55 PM Brindisi Airport | 3h15 | 11:10 PM Milan Linate Airport | 1 transfer | |
LG538 · LG6995 | 8:30 PM Bari Palese Airport | 19h25 | 3:55 PM Milan Malpensa Airport | 1 transfer | |
LG538 · LG6991 | 8:30 PM Bari Palese Airport | 11h10 | 7:40 AM Milan Malpensa Airport | 1 transfer | |
This is the last flight of the day. | |||||
Find all the dates and times for this journey
Compare bus, train, and flight prices over the next three weeks. See the best deals at a glance, find the lowest fares, and choose the option that fits your budget.
Discover the best of Milan — top attractions, local food, transport tips, budget advice, and currency essentials. Plan your perfect Milan trip today.
One of Italy’s top art museums, featuring masterpieces by Mantegna, Bellini, Raphael, Caravaggio, and Piero della Francesca.
This contemporary art museum near Porta Romana presents rotating exhibitions in a striking former industrial distillery complex.
Italy’s leading science museum is set in a former monastery and features Leonardo galleries, trains, aircraft, and a submarine.
Milan’s central square frames the cathedral and major civic buildings, making it the city’s essential meeting point and photo stop.
This artistic district offers charming lanes, Brera atmosphere, boutiques, and easy access to galleries and evening strolls.
A large landscaped park behind the castle, perfect for walks, skyline views, and reaching landmarks like the Arch of Peace.
Saffron risotto cooked with butter, stock and cheese. It is Milan's signature dish, linked to the city's love of rich northern Italian rice cookery.
Breaded veal cutlet fried in butter until golden. A classic Milanese main, prized for its simple preparation and long-standing local tradition.
Slow-braised veal shanks with vegetables, wine and broth, often finished with gremolata. A hearty Lombard specialty commonly paired with risotto.
Three-Michelin-star fine dining by Enrico Bartolini in MUDEC. Expect refined Italian tasting menus in a polished contemporary setting.
Historic Milanese restaurant near the Duomo, famous for risotto and cotoletta. Traditional, elegant rooms and a strong local culinary identity.
Long-running local favorite for classic Milanese cuisine, especially risotto and ossobuco. Warm, old-school atmosphere in the Brera area.
Moderate for Western Europe. Hotels and central dining can be pricey, but transit is affordable and budget meals, aperitivo deals, and local cafes help keep daily costs reasonable.
Tipping is modest. Service may be included. Round up or leave €1-2 at cafes, 5-10% for good restaurant service, and round up taxi fares.
Official public transport app
Milan Malpensa Airport -> Milano Centrale
Find answers to the most common questions about traveling from Ostuni to Milan by flight. From journey times and ticket prices to direct connections, first and last departures, and even whether the route is scenic, our FAQs cover everything you need to plan your trip. Whether you’re looking for the fastest flight, the cheapest option, or tips for making the most of your visit at Milan, this guide helps you travel smarter and with confidence.

Most Ostuni to Milan flights use the Bari Palese Airport to Milan Linate Airport airport pair, with some services landing at Milan Malpensa Airport. Use this guide to compare Ostuni and Milan airports on this route, check city-centre transport, alongside checking practicalities like airport facilities and services.
Milan Linate Airport is 6 km from Milan city centre. Public transport options include:
Milan Linate Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge, and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in the arrivals and departures areas.
Lost and found is available at the station.
Available at Milan Linate Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Linate Airport: Ramps, assistance.
Milan Malpensa Airport is 2 km from Milan city centre. Public transport options include:
Milan Malpensa Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge, and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in both terminals, near check-inas and gates.
Lost and found is available at the station.
Available at Milan Malpensa Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Malpensa Airport: Elevators, ramps.
Milan Bergamo Orio al Serio Airport is 1 km from Milan city centre. Public transport options include:
Milan Bergamo Orio al Serio Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge, and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in the arrivals and departures areas.
Lost and found is available at the station.
Available at Milan Bergamo Orio al Serio Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Bergamo Orio al Serio Airport: Elevators, ramps.
Here are some other resources that might have the information you need