14€ Find Cheap Flights to Milan – Compare and Save

1 adult
1 adult, Economy, 0 bags

Save 23% or more on flights. Compare deals from all over the web.

Never overpay with our price tracking tools.

Filter searches by price, airline and more to find your best flights.

Everything you should know

Cheapest direct flights
30 €
Typical prices: 99 €-197 €
Ryanair
Sun 30.9.Sun 7.10.
CGN - BGY • Direct
Direct flights
You can fly direct with Lufthansa, easyJet, and others. Average duration is 1h 20m.
FAQs
FAQs
Top airlines
Most flights • 73 per week
Best reviews • 6,9 score
Airline reviews
+1
Airline reviews
+1
Top routes
Cheapest • 72% average savings
Most popular
Insights
Insights
When to book
in advance
Our data shows that travellers who book at least 12 weeks in advance save around 36% compared to booking last minute.
Insights
Insights
When to travel
Cheapest • 18% price drop
Most popular
Good to know
+1
Good to know
+1
Start a new search
KAYAK searches hundreds of sites at once to find you the best travel deals.
We hope you enjoy your trip to Milan!
Flight Deals
Booking Insights
Flight Deals

Cheap Flights to Milan

 
Discover the best prices for you by selecting your travel dates on KAYAK.

Recent return flight deals to Milan

Wed, 14. Oct - Tue, 20. Oct
Ryanair Logo
5:45 - 7:15CGN  Cologne Köln/Bonn-BGY Bergamo Orio Al Serio
1h 30mdirect
Ryanair Logo
10:05 - 11:30BGY  Bergamo Orio Al Serio-CGN Cologne Köln/Bonn
1h 25mdirect
30 €Ryanair
Wed, 30. Sep - Wed, 7. Oct
Ryanair Logo
5:45 - 7:15CGN  Cologne Köln/Bonn-BGY Bergamo Orio Al Serio
1h 30mdirect
Ryanair Logo
7:40 - 9:05BGY  Bergamo Orio Al Serio-CGN Cologne Köln/Bonn
1h 25mdirect
30 €Ryanair
Sun, 11. Oct - Tue, 20. Oct
easyJet Logo
8:55 - 10:25DUS  Duesseldorf Intl-MXP Milan Malpensa
1h 30mdirect
easyJet Logo
6:40 - 8:15MXP  Milan Malpensa-DUS Duesseldorf Intl
1h 35mdirect
57 €easyJet
Wed, 14. Oct - Tue, 20. Oct
easyJet Logo
21:00 - 22:30DUS  Duesseldorf Intl-MXP Milan Malpensa
1h 30mdirect
easyJet Logo
6:40 - 8:15MXP  Milan Malpensa-DUS Duesseldorf Intl
1h 35mdirect
57 €easyJet
Thu, 29. Oct - Thu, 5. Nov
Multiple Airlines Logo
22:30 - 8:05CGN  Cologne Köln/Bonn-BGY Bergamo Orio Al Serio
9h 35m1 stop Tirana Rinas
Multiple Airlines Logo
7:50 - 9:20BGY  Bergamo Orio Al Serio-CGN Cologne Köln/Bonn
1h 30mdirect
64 €Multiple Airlines
Thu, 29. Oct - Thu, 5. Nov
Multiple Airlines Logo
22:30 - 8:05CGN  Cologne Köln/Bonn-BGY Bergamo Orio Al Serio
9h 35m1 stop Tirana Rinas
Multiple Airlines Logo
7:50 - 9:20BGY  Bergamo Orio Al Serio-CGN Cologne Köln/Bonn
1h 30mdirect
65 €Multiple Airlines
Sun, 11. Oct - Sat, 17. Oct
easyJet Logo
8:55 - 10:25DUS  Duesseldorf Intl-MXP Milan Malpensa
1h 30mdirect
easyJet Logo
8:30 - 10:05MXP  Milan Malpensa-DUS Duesseldorf Intl
1h 35mdirect
88 €easyJet
Mon, 21. Sep - Mon, 28. Sep
Eurowings Logo
6:20 - 7:40CGN  Cologne Köln/Bonn-MXP Milan Malpensa
1h 20mdirect
Eurowings Logo
8:30 - 9:55MXP  Milan Malpensa-CGN Cologne Köln/Bonn
1h 25mdirect
101 €Eurowings
Mon, 9. Nov - Fri, 13. Nov
Eurowings Logo
7:05 - 8:25CGN  Cologne Köln/Bonn-MXP Milan Malpensa
1h 20mdirect
Eurowings Logo
16:45 - 18:10MXP  Milan Malpensa-CGN Cologne Köln/Bonn
1h 25mdirect
101 €Eurowings
Mon, 12. Oct - Mon, 19. Oct
Condor Logo
9:50 - 11:00FRA  Frankfurt am Main-MXP Milan Malpensa
1h 10mdirect
Condor Logo
16:50 - 18:00MXP  Milan Malpensa-FRA Frankfurt am Main
1h 10mdirect
113 €Condor
Booking Insights

Price, demand, and travel trends for Germany to Milan flights

Use KAYAK data on prices, travel dates, airlines, and seasonal trends to compare options and book flights from Germany to Milan with more confidence.

How much is a flight to Milan?

A return flight to Milan costs 143 € on average, based on data over the past 12 months on KAYAK. Return fares from Dortmund average 66 €, while Memmingen runs a bit higher at 102 €.

What is the cheapest day to fly to Milan?

Tuesday is the cheapest day to fly to Milan at 145 € return on average over the past 12 months on KAYAK. Sunday is the most expensive at 157 €.

What is the cheapest month to fly to Milan?

  • January is the cheapest month to fly to Milan with an average price of 117 € return.
  • May (164 €) and April (164 €) are the most expensive.
  • Based on KAYAK data over the past 12 months.

What is the cheapest time of day to fly to Milan?

Night flights to Milan are the cheapest at 122 € return on average. Afternoon flights are the most expensive at 168 €.

What is a good deal for flights to Milan?

Flights under 101 € are considered a good deal. 25% of KAYAK users found return flights to Milan at or below these prices, with the lowest fares from:

  • Dortmund 40 €
  • Karlsruhe 82 €
  • Frankfurt am Main Airport 92 €
.

When are flights to Milan the cheapest?

Flights to Milan are cheapest 12 weeks before departure. Booking in this window typically costs about 36% less than the average last-minute fare (within 2 weeks of the flight), based on KAYAK data.

Key details for flights to Milan

Low season

January

Cheapest flight

15 €
Best time to beat the crowds (18% less expensive on average)
Flights from Cologne to Bergamo

When to book flights to Milan

Are your dates flexible? Find out the best times to travel to Milan based on our flight data from the last year. Discover the cheapest month and even day to fly.
Estimated return price

Your questions about flights to Milan, answered

Find helpful route details based on KAYAK data, including flight times, airports, airlines, and booking questions.

  • What is the difference between the most popular and the most frequent airline at Milan?

    Lufthansa operates the most flights from Germany to Milan at 73 per week, while easyJet is the airline most often selected by KAYAK users searching for flights from Germany to Milan. The two are often different because flight volume reflects an airline's schedule, while popularity reflects traveller choice.

  • Which airports serve Milan?

    Flights to Milan arrive at: Milan Linate (LIN) and Milan Malpensa (MXP).

  • Which airports serve Milan and the surrounding area?

    Flights to Milan can arrive at several major airports serving the metro area, including Milan Linate (LIN) and Milan Malpensa (MXP). Nearby alternatives within 80,5 km of Milan include Milan Linate (LIN), Bergamo Orio Al Serio (BGY) and Lugano (LUG). These airports are not in Milan itself but may be useful depending on your route, airline, and onward travel plans.

  • How long are direct flights to Milan from different departure cities?

    Direct flight time to Milan varies depending on your departure city:
    • from Hamburg: 1h 40m
    • from Munich: 1h 05m
    • from Nuremberg: 1h 15m
    • from Cologne: 1h 20m
    • from Rostock: 1h 50m

  • How many flights serve Milan?

    Milan receives 37 flights per day and 260 per week from across the world. Frankfurt am Main Airport has the most flights to Milan with 109 weekly flights.

  • How do I know if a flight to Milan is a good deal?

    A good deal on a flight to Milan is around 101 € return. This fare is in the lowest 25% of return flight prices searched on KAYAK, averaged across the cities most often searched as origins by KAYAK users.

  • How expensive are last-minute flights to Milan?

    Last-minute fares to Milan – booked within 2 weeks of departure – run 28% above the average return fare of 143 €.

  • Which airlines should I consider for flights to Milan?

Your guide to booking Milan flights

From booking to airport arrival, find tips to help you plan your flight with more confidence.
  • For the best chance at a low fare to Milan, aim to book around 12 weeks before you fly. That window historically saves about 36% versus last-minute pricing based on KAYAK booking data over the last 12 months.
  • For flights to Milan, recent KAYAK data shows that stronger deals tend to be around 101 € return. If you see a fare below that threshold, it's a good deal – book before the price climbs back up.
  • If you can choose when to go, aim to travel to Milan in January. Return fares historically average 117 € that month – typically the cheapest month to travel based on the last 12 months.
  • Before you book:

    • Check the route's typical price range so you can spot a deal.
    • Confirm baggage fees and seat selection costs on budget carriers.
    • Verify whether you need any travel documents beyond an ID.
    • Pick a departure airport, since your nearest may not be the cheapest origin.
  • Shift your departure to evening to save up to 46 € per return. Evening flights to Milan average 122 € compared to 168 € for midday flights. See the time-of-day chart above for the full breakdown.
  • Bag allowances vary by airline, fare type, cabin class, and route. On flights to Milan, some airlines may include bags at no extra cost. For example, easyJet includes a cabin bag and a checked bag in Economy class, Eurowings includes a cabin bag and a checked bag in Economy class, and Lufthansa includes a cabin bag and a checked bag in Economy class. Always check the fare details before booking, since bag policies can change by ticket type.
  • Once you arrive in Milan, a few great places to start are Stazione Centrale, Duomo di Milano, and Teatro alla Scala. These are popular with first-time visitors and can give you a good feel for the area.

Reviews of the top 5 airlines flying to Milan

 
Need help choosing which airline to fly with to Milan? KAYAK airline reviews give an overall score for each airline based on loads of factors, including comfort, boarding, in-flight entertainment and more, to make your decision easier. See airline scores according to verified KAYAK customer reviews.
6,9
RyanairOverall score based on 5485 reviews
5,7Entertainment
6,5Comfort
6,7Boarding
6,0Food
7,5Crew
Airline reviews

The plane had only a few passengers, we got lucky. The crew was visibly inexperienced

6,0 GoodFrancesco, Dec 2025
Read more Ryanair reviews

The plane had only a few passengers, we got lucky. The crew was visibly inexperienced

They lost a bag and now our vacation is ruined

Flight details on public information screen were misleading and wrong.

How terrible! Extremely bad! I can not even wait for 5 minutes, because the Berlin airport does not work in the security facilities and can handle people. No communication, although we were assured by about 50 travelers that the airline is informed and is waiting for us.

When having difficulty with the online check in process, I was forced to pay a huge fee for the check in desk to assist me with getting a boarding pass. Ridiculous!

The system of checkin by online only not good at all.. Because not everyone knows how to to do it and when the people go the airport without checking online it charge him, this really unfair 55 Euro this too much for nothing.. Thanks

Flight was delayed which happens but walking 15 mins to one gate to be then told it’s now changed to one 15 mins back then other way was frustrating

50 minute of delay on a flight scheduled after 22pm is really annoying. This was even the only flight departing from Frankfurt Hahn on that evening so the delay was inexcusable

The usual average Ryanair flight, but we landed 20 min before due time, which was very good.

Flight was delayed due to weather so not much Ryanair could do about that - otherwise it was very efficient and smooth

Flight was two hours delayed then instead of flying to Gatwick we got diverted to Southend airport! Then they cancelled our flight and we all got told we had to get off the plane and make our own way to wherever we had to go? EasyJet just abandoned us, no help and as a tourist not knowing even where I was? Disgusting behaviour from the company!!

The flight was delayed by over an hour which seriously disrupted my plans in Milan.

They lost my luggage. They don’t even know what happened to it at this point. They think it’s still in the departure city.

It was good; the only down side is that once you get to the airport everything is self service, there is no one assisting. I felt like I was working while I was on vacation during the check in process and dropping off the luggage. Really uncertain on what the airlines use payroll nowadays.

We were bumped despite seats existing on flight While checkin attendants were helpful Easyjet management was not. Only after threats were we allowed on plane at last minute. The online help desk was useless and waste of time (over an hour of useless chats)

Nice to fly out of Orly smaller easier to navigate airport. Being able to receive boarding pass well in advance of trip was comforting to know all travel was in order.

We boarded and then sat on the tarmac for an hour….probably not E Jets fault. But the gentleman that checked us in and took our luggage was exceptionally friendly and calming for early morning/ confused passengers. As always, it’s the people that make or break an experience, right?

They cancelled my flight and we had to fend for ourselves to reschedule another flight. There was no staff to help all the canceled guest. Poor communication and staff. I attempted to reschedule via Kayak and I asked their staff that it looked as it was available. The guy behind the counter just told us to go online..

Nothing! The service was excellent for accessibly challenged passengers, Used lift and all support personnel very helpful. Will fly again.

Bohužel zpoždění let o více než 6 hod, způsobil, že jsme nestihli další let.

Never made it to Lufthansa because of Air Canadas negligence.

Boarding and flight update was fantastic as I experienced about a 10-15 delayed for both flights. The food served onboard was great; the service of the flight attendants was excellent.

Complete mess. Our reservation was mistakenly cancelled. After almost missing the connection and walking all over the Munich airport, the Service desk got involved and we were run to our flight. Not all 4 of us in Business and not seated together as originally booked. This was the worst treatment I have ever had. And I travel a lot. 1K million miler.

There is more space in this economy seat. It felt like a better layout, not so cramped.

The staff was not at pleasant as those on the first leg of our trip.

Crew was excellent. Sat us together after the airline changed our seats. This was the smaller plane/shorter flight so no entertainment or food.

Boarding was one hour late. Gate notification was incorrect (notification said gate 17, actual was gate 14). Took shuttle bus to board the plane. Late arrival of plane at Turin impacted travel arrangements to the event.

Seats on the A320 were more comfortable than the A330 I took from RSW to Frankfurt

A short flight. What was offered was appropriate Friendly staff. Pleasant

The flight was delayed. Don't recall much else, as the flight was short and I slept through most of it.

Comfortable seats with sufficient leg room. However, the female flight attendant spoke English and Italian so fast that it was impossible to understand anything she said. There was no entertainment option. No wifi. No milk for tea (only powered milk which is terrible). I appreciate being able to take a carry on. Crew was nice. Plane was clean.

Flight was smooth and event less. The crew is very professional, good looking and efficient. Food quality is good but the bread rolls (made in India) were too hard.

Staff was nice but seat is not what I expected

Our flight was canceled when we landed in Rome to go to Boston along with three other flight cancellations. They couldn’t get us out that day and told us we would fly Delta the following day. They then told us to look for a desk in the airport to get a voucher for the hotel, transportation and meals. Nobody knew where this desk was. We searched around the airport around the ITA area and nobody could lead us to the desk. Once we found the desk, the line was so long. It took seven hours of waiting in line to get our vouchers to get to the hotel transportation and meals. ITA could do a better job in helping stranded passengers get to their hotel instead of waiting in line for seven hours.

What occurred during this flight was far beyond an ordinary inconvenience or dissatisfaction with the onboard service. There were multiple failures involving the aircraft’s passenger-seat systems, the ability to summon cabin crew, sanitation, cabin crew responsiveness, food and beverage service, and the overall standard of passenger care. The circumstances were particularly serious because I am diabetic, and during the flight I experienced a situation in which I needed assistance while essential passenger-control functions at our seats were not working. I am requesting that ITA Airways treat this as a formal complaint requiring individual investigation, rather than responding with a generic customer-service apology. 1. All three seats had significant equipment failures All three seats assigned to my family had significant equipment problems. Seat 46F: The entertainment screen was completely non-functional for the entire flight. Seats 46G and 46H: The screens themselves displayed content, but the following controls did not function: Cabin-light control Flight-attendant call button Flight-tracker button These were not merely entertainment-system failures. The malfunctioning controls affected our ability to control the lighting at our seats and, more importantly, our ability to summon a flight attendant when assistance was required. I specifically request that ITA investigate the maintenance records for the aircraft and these specific seats and determine whether these defects were known before departure, reported during the flight, or documented by the cabin crew. 2. The defective equipment directly affected my ability to manage my diabetes I am diabetic and require insulin. Because the cabin-light controls at our seats were not functioning, I was unable to properly illuminate my seating area when I needed to administer my insulin during the flight. More seriously, when my blood sugar became low, I was unable to use the attendant-call button to request assistance because the button was not functioning. This transformed what might ordinarily be considered an entertainment-system problem into a much more serious passenger-care issue. I was on a long transatlantic flight, unable to properly illuminate my seating area when necessary and unable to summon a member of the cabin crew through the designated call system. 3. My daughter repeatedly attempted to obtain assistance when my blood sugar was low When my blood sugar became low, I needed juice or another rapidly available source of carbohydrate. Because I could not use the attendant-call button, I sent my daughter to ask the cabin crew for juice. She made multiple attempts to obtain assistance. Despite these repeated attempts, the cabin crew did not appropriately respond to her request. After multiple attempts from my daughter, the curtain was closed. I ultimately had to obtain candy from passengers seated nearby because I could not obtain the assistance I was seeking from the cabin crew. I consider this one of the most serious incidents on the flight. I am not suggesting that cabin crew were required to provide medical treatment. However, when a passenger is seeking assistance because of low blood sugar—particularly when that passenger’s designated call button is not functioning—I believe a reasonable standard of passenger care requires the request to be acknowledged and handled appropriately. I therefore request that ITA investigate this incident specifically, including: Which crew members were assigned to our cabin/section; Whether any crew member observed my daughter requesting assistance; Whether any crew report was made concerning this incident; Whether the crew knew that the attendant-call buttons at our seats were not functioning; and What ITA’s procedures require when a passenger reports that they are experiencing low blood sugar or otherwise needs assistance. 4. The circumstances caused significant distress and interfered with my ability to manage my condition The combination of the defective lighting controls, inability to use the attendant-call system, and failure to obtain timely assistance caused me significant distress. I was particularly distressed because I was unable to properly manage my medical needs in the manner I normally would during a long flight. My blood sugar subsequently remained elevated for an extended period. I believe the prolonged stress and circumstances surrounding this incident contributed to the difficulty I experienced managing my blood sugar during the flight. I am documenting this because I do not want ITA to reduce this complaint to a complaint about an entertainment screen. The equipment failures directly affected my ability to manage my medical needs and obtain assistance. 5. Unacceptable restroom conditions The condition of the aircraft’s restrooms was also unacceptable. During the flight: One restroom was completely out of service for the entire flight. The remaining restrooms were ext

The cleanliness is the business class continues to disappoint. There was food on the floor when I boarded.

The business class seat would not recline. Not acceptable for an airline and airplane that is relatively new and a flight that was over 12 hours. Very bad experience.

I liked nothing. Communication to passengers was poor to non-existent. No sense of urgency in providing information from gate changes, baggage drops, and cancelled flights (which happened with no assistance available). This airline is a joke.

The landing was catastrophic. I was very scared. I thought it were my last lminues. Pilotes should be more experienced

We made the boarding and then waited inside 40minutes before taking off The plane was too full It was probably the worst flight of my life in terms of comfort. I was in the central seat, and on my right i had a very big person who was occupying part of my seat since he did not fit in just one. I think in these cases the staff should notice and do something about it. I checked if there were available seats by myself, but it was all full. Maybe in business class there were still available seats though.

More legroom for me as a tall person. I shouldn’t have to be discriminated because of my height just like someone’s wheelchair does have to pay extra to be accommodated comfortably.

Good, efficient flights both ways. Didn’t have food and no entertainment so can’t comment on those. Friendly staff that let me move to a row with no one booked.

My flight was delayed and my second flight missed despite a three hour connection in Düsseldorf. My luggage was lost and it took three hours to recover which was actually unfortunately very much barely possible. I needed to rebook a flight that was three times the original cost of the original flight which now I need to go back and recover from the airline. Terrible experience,

Nice to have reclining seats for a change and great to have internet access

Tivat airport really needs to up its game W Eurowings needs to provide support at luggage collection

Kayak - EDreams - Eurowings need to define clearer the hand luggage terms. I asked for add. hang luggage got charged by Eurowings for having add. hand luggage that was not included in my booking. I travel alot! I know the size dimensions never paid twice for hand luggage and cannot chase Edreams or put Eurowings in the wrong. Also there was severe delays on this flight. Issue getting bus on arrival and missed connections. Unfortunate will not use Eurowings

We checked in 4 luggage and only got 3 back & lost our 4th luggage. Our flight was from berlin sept 22. We arrived Copenhagen but only received 3 luggage. Missing 1 still 24 hrs after our arrival and our Cruise will be leaving tomorrow 9/24/2023. This is the second time that our luggage gets lost/delayed in Copenhagen

No food on plane.. flights scheduled 55 min..everything is very expensive on aeroport

Smallest seat I have ever seen. And they had a label with more Legroom but in fact where really tiny.

I was held-up at boarding by rude employee who insisted that I had to wait until all other passengers had boarded the lane before issuing me a boarding pass so I can board the plane. I could not check-in earlier and get a boarding pass since I had flown directly from Dusseldorf.

Travelling to a place near Milan?

Book flights to Milan if you plan to visit one of these locations
Stresa
Livigno
Iseo
Levanto
Bellagio
Brescia
Baveno
Menaggio
Saronno
Lecco
Varenna
Monza
Bormio
Porlezza
Domodossola
Assago
Cernobbio
Asti
Lainate
Bellano

More options for your flight to Milan