- 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 42 times per day, taking around 1h 41m. Cheap flight tickets for this journey start at $21 (€17) if you book in advance.
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 1h 41m |
Cheapest ticket price $21 (€17) |
Flights per day 42 |
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 21 days |
Cheapest price
$80
Average price
$214
Fastest journey
1 h 24 m
Average duration
1 h 26 m
Flights per day
72
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 $214 if you buy it on the day, but the cheapest tickets can be found for only $80.
Of the 72 flights that leave Ostuni for Milan onFri, Jul 17, 22 travel direct so it’s quite easy to avoid journeys where you’ll have to change along the way.
On Fri, Jul 17 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 Fri, Jul 17 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.
U23514
U23520
Regionale Veloce 4411 · BRINDISI AIRPORT LINK AP38+
U23520
Regionale Veloce 4449 · BRINDISI AIRPORT LINK AP50+
U23520
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+
U23520
AZ1650
AZ1654
AZ1648
AZ1672
AZ1632Omio 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 prices starting from $23. For those with little time consider booking a flight which can get you there in 1h 41m. In case you are seeking to minimise your carbon footprint the train is your best bet as it emits only 0.3 - 0.8kg. The ticket price range depends on the travel mode: a bus costs an average of $23, and a flight costs an average of $21.
Distance: 534 miles (860 km)
| Flight | Most popular Train | Bus |
|---|---|---|
$83 Average price | $76 Average price | $54 Average price Cheapest |
4h 41m Average total duration Fastest 1h 41m Onboard + 3h 0m Additional time* | 10h 21m Average total duration 9h 51m Onboard + 30m Additional time* | 13h 56m Average total duration 13h 26m 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 $23 (€19) less than a train for this route with tickets for a train from Ostuni to Milan costing on average $76 (€63).
A bus is $30 (€24) less than a flight for this route with tickets for a flight from Ostuni to Milan costing on average $83 (€68).
Other travel options to Milan take longer:
Train takes on average 9h 51m.
Bus takes on average 13h 26m.
The table below shows live departures for Ostuni to Milan flights for today, Thursday, July 16. You can also manually refresh the results below to see updated flight journeys.
| Provider | Departs | Duration | Arrives | Transfers | Tickets |
|---|---|---|---|---|---|
![]() | 8:30 PM Ostuni | 1h40 | 10:10 PM Milan | 0 transfersDirect | |
![]() | 9:55 PM Ostuni | 1h35 | 11:30 PM Milan | 0 transfersDirect | |
| Friday, July 17 | |||||
U23514 | 12:40 AM Brindisi Airport | 1h40 | 2:20 AM Milan Malpensa Airport | 0 transfersDirect | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ AZ1624 · AZ2044 | 5:59 AM Ostuni station | 9h11 | 3:10 PM Milan Linate Airport | 3 transfers | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ U23516 | 5:59 AM Ostuni station | 11h41 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
Regionale 4433 · BRINDISI AIRPORT LINK AP5+ AZ1622 · AZ2050 | 5:59 AM Ostuni station | 13h11 | 7:10 PM Milan Linate Airport | 3 transfers | |
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 | 5h10 | 11:40 AM Milan Linate Airport | 1 transfer | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ AZ1622 · AZ2050 | 7:18 AM Ostuni station | 11h52 | 7:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ AZ1644 | 7:18 AM Ostuni station | 11h22 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4381 · BRINDISI AIRPORT LINK AP9+ U23516 | 7:18 AM Ostuni station | 10h22 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
FR 2865 | 7:30 AM Brindisi Airport | 1h40 | 9:10 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 978 | 8:10 AM Brindisi Airport | 1h45 | 9:55 AM Milan Malpensa Airport | 0 transfersDirect | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ U23516 | 8:25 AM Ostuni station | 9h15 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ AZ1644 | 8:25 AM Ostuni station | 10h15 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale 4385 · BRINDISI AIRPORT LINK AP12+ AZ1622 · AZ2050 | 8:25 AM Ostuni station | 10h45 | 7:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ AZ1622 · AZ2050 | 8:52 AM Ostuni station | 10h18 | 7:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ U23516 | 8:52 AM Ostuni station | 8h48 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4387 · BRINDISI AIRPORT LINK AP14+ AZ1644 | 8:52 AM Ostuni station | 9h48 | 6:40 PM Milan Linate Airport | 2 transfers | |
FR 3654 | 9:05 AM Bari Palese Airport | 1h30 | 10:35 AM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
InterCityNotte 35547+ BRINDISI AIRPORT LINK AP16+ U23516 | 9:19 AM Ostuni station | 8h21 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
InterCityNotte 35547+ BRINDISI AIRPORT LINK AP16+ AZ1644 | 9:19 AM Ostuni station | 9h21 | 6:40 PM Milan Linate Airport | 2 transfers | |
InterCityNotte 35547+ BRINDISI AIRPORT LINK AP16+ AZ1634 · AZ2130 | 9:19 AM Ostuni station | 13h51 | 11:10 PM Milan Linate Airport | 3 transfers | |
U23524 | 9:35 AM Bari Palese Airport | 1h40 | 11:15 AM Milan Malpensa Airport | 0 transfersDirect | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ AZ1644 | 9:52 AM Ostuni station | 8h48 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ AZ1634 · AZ2130 | 9:52 AM Ostuni station | 13h18 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4393 · BRINDISI AIRPORT LINK AP18+ U23516 | 9:52 AM Ostuni station | 7h48 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
AZ1648 | 10:05 AM Bari Palese Airport | 1h25 | 11:30 AM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ AZ1634 · AZ2130 | 10:48 AM Ostuni station | 12h22 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ AZ1644 | 10:48 AM Ostuni station | 7h52 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4397 · BRINDISI AIRPORT LINK AP22+ U23516 | 10:48 AM Ostuni station | 6h52 | 5:40 PM Milan Malpensa Airport | 2 transfers | |
AZ1624 · AZ2044 | 11:15 AM Brindisi Airport | 3h55 | 3:10 PM Milan Linate Airport | 1 transfer | |
AZ1624 · AZ1781 · AZ1786 | 11:15 AM Brindisi Airport | 5h20 | 4:35 PM Milan Linate Airport | 2 transfers | |
AZ1612 · AZ2044 | 11:20 AM Bari Palese Airport | 3h50 | 3:10 PM Milan Linate Airport | 1 transfer | |
FR 2877 | 12:05 PM Brindisi Airport | 1h40 | 1:45 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 4131 | 12:35 PM Bari Palese Airport | 1h30 | 2:05 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
FR 277 | 12:40 PM Bari Palese Airport | 1h40 | 2:20 PM Milan Malpensa Airport | 0 transfersDirect | |
AZ1654 | 12:55 PM Bari Palese Airport | 1h25 | 2:20 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+ AZ1644 | 1:18 PM Ostuni station | 5h22 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4401 · BRINDISI AIRPORT LINK AP32+ U23520 | 1:18 PM Ostuni station | 11h12 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
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 4405 · BRINDISI AIRPORT LINK AP34+ AZ1644 | 1:51 PM Ostuni station | 4h49 | 6:40 PM Milan Linate Airport | 2 transfers | |
Regionale Veloce 4405 · BRINDISI AIRPORT LINK AP34+ U23520 | 1:51 PM Ostuni station | 10h39 | 12:30 AM Milan Malpensa 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 | |
Regionale Veloce 4407 · BRINDISI AIRPORT LINK AP36+ U23520 | 2:18 PM Ostuni station | 10h12 | 12:30 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 4411 · BRINDISI AIRPORT LINK AP38+ AZ1634 · AZ2130 | 2:51 PM Ostuni station | 8h19 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4411 · BRINDISI AIRPORT LINK AP38+ U23520 | 2:51 PM Ostuni station | 9h39 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
FR 4668 | 3:10 PM Bari Palese Airport | 1h30 | 4:40 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
AZ1622 · AZ2050 | 3:15 PM Brindisi Airport | 3h55 | 7:10 PM Milan Linate Airport | 1 transfer | |
AZ1616 · AZ2050 | 3:20 PM Bari Palese Airport | 3h50 | 7:10 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+ U23520 | 3:24 PM Ostuni station | 9h06 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
LG536 · LG6997 | 3:50 PM Bari Palese Airport | 4h40 | 8:30 PM Milan Malpensa Airport | 1 transfer | |
Regionale Veloce 4415 · BRINDISI AIRPORT LINK AP42+ AZ1634 · AZ2130 | 3:51 PM Ostuni station | 7h19 | 11:10 PM Milan Linate Airport | 3 transfers | |
Regionale Veloce 4415 · BRINDISI AIRPORT LINK AP42+ U23520 | 3:51 PM Ostuni station | 8h39 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
U23516 | 3:55 PM Brindisi Airport | 1h45 | 5:40 PM Milan Malpensa Airport | 0 transfersDirect | |
Intercity 603+ BRINDISI AIRPORT LINK AP44+ U23520 | 4:04 PM Ostuni station | 8h26 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
AZ1672 | 4:15 PM Bari Palese Airport | 1h25 | 5:40 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4419 · BRINDISI AIRPORT LINK AP46+ U23520 | 4:51 PM Ostuni station | 7h39 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
AZ1644 | 5:05 PM Brindisi Airport | 1h35 | 6:40 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4421 · BRINDISI AIRPORT LINK AP48+ U23520 | 5:20 PM Ostuni station | 7h10 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
Regionale Veloce 4449 · BRINDISI AIRPORT LINK AP50+ U23520 | 5:48 PM Ostuni station | 6h42 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
FR 3415 | 6:05 PM Brindisi Airport | 1h45 | 7:50 PM Milan Malpensa Airport | 0 transfersDirect | |
FR 2859 | 6:20 PM Brindisi Airport | 1h35 | 7:55 PM Milan Bergamo Orio al Serio Airport | 0 transfersDirect | |
AZ1632 | 6:50 PM Bari Palese Airport | 1h30 | 8:20 PM Milan Linate Airport | 0 transfersDirect | |
Regionale Veloce 4427 · BRINDISI AIRPORT LINK AP54+ U23520 | 6:51 PM Ostuni station | 5h39 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
AZ1634 · AZ2130 | 7:10 PM Brindisi Airport | 4h00 | 11:10 PM Milan Linate Airport | 1 transfer | |
Regionale Veloce 4429 · BRINDISI AIRPORT LINK AP56+ U23520 | 7:18 PM Ostuni station | 5h12 | 12:30 AM Milan Malpensa Airport | 2 transfers | |
FR 6183 | 8:40 PM Bari Palese Airport | 1h40 | 10:20 PM Milan Malpensa Airport | 0 transfersDirect | |
AZ1650 | 9:35 PM Bari Palese Airport | 1h24 | 10:59 PM Milan Linate Airport | 0 transfersDirect | |
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