- Must visit
Pinacoteca di Brera
Milan’s premier art gallery, known for Italian masterpieces by Raphael, Caravaggio, and Mantegna in the historic Brera district.
Cheapest price
$6
Average price
$7
Fastest journey
37 m
Average duration
37 m
Trains per day
90
Distance
45 km
The best way to find a cheap train ticket from Bergamo to Milan is to book your journey as far in advance as possible and to avoid traveling at rush hour.
The average ticket from Bergamo to Milan will cost around $7 if you buy it on the day, but the cheapest tickets can be found for only $6.
Of the 90 trains that leave Bergamo for Milan on Sat, Jun 20, 38 travel direct so it’s quite easy to avoid journeys where you’ll have to change along the way.
On Sat, Jun 20 the direct trains cover the 45 km distance in an average of 37 m but if you time it right, some trains will get you there in just 37 m .
On Sat, Jun 20 the slowest trains will take 37 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.
Autobus TRENORD 34A · Regionale TRENORD 25834
Autobus TRENORD 1740A · Regionale TRENORD 25874
Autobus TRENORD 72A · Regionale TRENORD 25872 · S9 TRENORD 24973
Autobus TRENORD 18A · Regionale TRENORD 25818
Autobus TRENORD 86A · Regionale TRENORD 25886
Regionale TRENORD 2216
Regionale TRENORD 2228
Regionale TRENORD 2242
Regionale TRENORD 2230
Regionale TRENORD 2226Omio recommends booking the train as it is the most popular option from Bergamo to Milan among Omio's users. If you are prioritising price take the bus with prices starting from $2. For those with little time consider booking a train which can get you there in 51m. In case you are seeking to minimise your carbon footprint the train is your best bet as it emits only 0.0 - 0.0kg. The ticket price range depends on the travel mode: a bus costs an average of $2, and a train costs an average of $6.
Distance: 27 miles (45 km)
Most popular Train | Bus |
|---|---|
$7 Average price | $6 Average price Cheapest |
1h 21m Average total duration Fastest 51m Onboard + 30m Additional time* | 1h 26m Average total duration 56m Onboard + 30m Additional time* |
0.0 - 0.0kg CO2 emissions Lowest | 0.0 - 0.1kg CO2 emissions |
![]() Most popular train company | ![]() Most popular bus company |
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 Bergamo to Milan:
A bus is $0.59 (€0.48) less than a train for this route with tickets for a train from Bergamo to Milan costing on average $7 (€5).
Other travel options to Milan take longer:
Bus takes on average 56m.
The table below shows live departures for Bergamo to Milan trains for today, Friday, June 19. You can also manually refresh the results below to see updated train journeys.
| Provider | Departs | Duration | Arrives | Transfers | Tickets |
|---|---|---|---|---|---|
Regionale TRENORD 2256 | 6:30 AM Bergamo station | 0h41 | 7:11 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2256 | 6:30 AM Bergamo station | 1h02 | 7:32 AM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 24A · Regionale TRENORD 25824 | 6:31 AM Bergamo Ospedale | 1h28 | 7:59 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 15A · Regionale TRENORD 2258 | 6:44 AM Bergamo Ospedale | 1h12 | 7:56 AM Milano Lambrate | 1 transfer | |
Autobus TRENORD 26A · Regionale TRENORD 25826 | 7:01 AM Bergamo Ospedale | 1h28 | 8:29 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 26A · Regionale TRENORD 25826 · Regionale TRENORD 2815 | 7:01 AM Bergamo Ospedale | 1h39 | 8:40 AM Milan Centrale | 2 transfers | |
Autobus TRENORD 26A · Regionale TRENORD 25826 | 7:01 AM Bergamo Ospedale | 1h20 | 8:21 AM Milano Greco Pirelli | 1 transfer | |
Regionale TRENORD 2216 | 7:02 AM Bergamo station | 0h37 | 7:39 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2216 | 7:02 AM Bergamo station | 0h48 | 7:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2258 | 7:13 AM Bergamo station | 0h43 | 7:56 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2258 | 7:13 AM Bergamo station | 1h05 | 8:18 AM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 17A · Regionale TRENORD 2218 | 7:29 AM Bergamo Ospedale | 1h10 | 8:39 AM Milano Lambrate | 1 transfer | |
Autobus TRENORD 17A · Regionale TRENORD 2218 | 7:29 AM Bergamo Ospedale | 1h21 | 8:50 AM Milan Centrale | 1 transfer | |
Regionale TRENORD 2206 | 7:40 AM Bergamo station | 0h50 | 8:30 AM Milan Centrale | 0 transfersDirect | |
Autobus TRENORD 30A · Regionale TRENORD 25830 | 8:01 AM Bergamo Ospedale | 1h28 | 9:29 AM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2218 | 8:02 AM Bergamo station | 0h37 | 8:39 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2218 | 8:02 AM Bergamo station | 0h48 | 8:50 AM Milan Centrale | 0 transfersDirect | |
Autobus TRENORD 21A · Regionale TRENORD 2260 | 8:14 AM Bergamo Ospedale | 1h07 | 9:21 AM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2260 | 8:40 AM Bergamo station | 0h41 | 9:21 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2260 | 8:40 AM Bergamo station | 1h00 | 9:40 AM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 1720A · Regionale TRENORD 25834 | 8:46 AM Bergamo Ospedale | 1h43 | 10:29 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 34A · Regionale TRENORD 25834 | 9:01 AM Bergamo Ospedale | 1h20 | 10:21 AM Milano Greco Pirelli | 1 transfer | |
Autobus TRENORD 34A · Regionale TRENORD 25834 | 9:01 AM Bergamo Ospedale | 1h28 | 10:29 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 1719A · Regionale TRENORD 2262 | 9:01 AM Bergamo Ospedale | 1h20 | 10:21 AM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2220 | 9:02 AM Bergamo station | 0h48 | 9:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2220 | 9:02 AM Bergamo station | 0h37 | 9:39 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2262 | 9:40 AM Bergamo station | 1h00 | 10:40 AM Milan Porta Garibaldi | 0 transfersDirect | |
Regionale TRENORD 2262 | 9:40 AM Bergamo station | 0h41 | 10:21 AM Milano Lambrate | 0 transfersDirect | |
Autobus TRENORD 38A · Regionale TRENORD 25838 | 10:01 AM Bergamo Ospedale | 1h28 | 11:29 AM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2222 | 10:02 AM Bergamo station | 0h37 | 10:39 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2222 | 10:02 AM Bergamo station | 0h48 | 10:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 22634 · Regionale TRENORD 2624 | 10:18 AM Bergamo station | 1h17 | 11:35 AM Milan Centrale | 1 transfer | |
Autobus TRENORD 42A · Regionale TRENORD 25842 | 11:01 AM Bergamo Ospedale | 1h28 | 12:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2224 | 11:02 AM Bergamo station | 0h37 | 11:39 AM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2224 | 11:02 AM Bergamo station | 0h48 | 11:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 22638 · Regionale TRENORD 2626 | 11:18 AM Bergamo station | 1h17 | 12:35 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 46A · Regionale TRENORD 25846 | 12:01 PM Bergamo Ospedale | 1h28 | 1:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2226 | 12:02 PM Bergamo station | 0h48 | 12:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2226 | 12:02 PM Bergamo station | 0h37 | 12:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 22642 · Regionale TRENORD 2628 | 12:18 PM Bergamo station | 1h17 | 1:35 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 39A · Regionale TRENORD 22646 · Regionale TRENORD 10608 | 12:44 PM Bergamo Ospedale | 1h29 | 2:13 PM Milano Lambrate | 2 transfers | |
Autobus TRENORD 1728A · Regionale TRENORD 25850 | 12:46 PM Bergamo Ospedale | 1h43 | 2:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 50A · Regionale TRENORD 25850 | 1:01 PM Bergamo Ospedale | 1h28 | 2:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2228 | 1:02 PM Bergamo station | 0h37 | 1:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2228 | 1:02 PM Bergamo station | 0h48 | 1:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 22646 · Regionale TRENORD 10608 | 1:18 PM Bergamo station | 0h55 | 2:13 PM Milano Lambrate | 1 transfer | |
Autobus TRENORD 54A · Regionale TRENORD 25854 | 2:01 PM Bergamo Ospedale | 1h28 | 3:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2230 | 2:02 PM Bergamo station | 0h37 | 2:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2230 | 2:02 PM Bergamo station | 0h48 | 2:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 22650 · Regionale TRENORD 2632 | 2:18 PM Bergamo station | 1h17 | 3:35 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 58A · Regionale TRENORD 25858 | 3:01 PM Bergamo Ospedale | 1h28 | 4:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2232 | 3:02 PM Bergamo station | 0h48 | 3:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2232 | 3:02 PM Bergamo station | 0h37 | 3:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 22654 · Regionale TRENORD 2634 | 3:18 PM Bergamo station | 1h17 | 4:35 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 51A · Regionale TRENORD 22658 · Regionale TRENORD 10610 | 3:44 PM Bergamo Ospedale | 1h29 | 5:13 PM Milano Lambrate | 2 transfers | |
Autobus TRENORD 1734A · Regionale TRENORD 25862 | 3:46 PM Bergamo Ospedale | 1h43 | 5:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 1733A · Regionale TRENORD 2276 | 4:01 PM Bergamo Ospedale | 1h19 | 5:20 PM Milano Lambrate | 1 transfer | |
Autobus TRENORD 62A · Regionale TRENORD 25862 | 4:01 PM Bergamo Ospedale | 1h20 | 5:21 PM Milano Greco Pirelli | 1 transfer | |
Autobus TRENORD 62A · Regionale TRENORD 25862 | 4:01 PM Bergamo Ospedale | 1h28 | 5:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2234 | 4:02 PM Bergamo station | 0h48 | 4:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2234 | 4:02 PM Bergamo station | 0h37 | 4:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 22658 · Regionale TRENORD 10610 | 4:18 PM Bergamo station | 0h55 | 5:13 PM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2276 | 4:40 PM Bergamo station | 0h40 | 5:20 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2276 | 4:40 PM Bergamo station | 1h00 | 5:40 PM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 1736A · Regionale TRENORD 25866 | 4:46 PM Bergamo Ospedale | 1h43 | 6:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 66A · Regionale TRENORD 25866 | 5:01 PM Bergamo Ospedale | 1h28 | 6:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 1735A · Regionale TRENORD 2278 | 5:01 PM Bergamo Ospedale | 1h19 | 6:20 PM Milano Lambrate | 1 transfer | |
Autobus TRENORD 66A · Regionale TRENORD 25866 | 5:01 PM Bergamo Ospedale | 1h20 | 6:21 PM Milano Greco Pirelli | 1 transfer | |
Regionale TRENORD 2236 | 5:02 PM Bergamo station | 0h48 | 5:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2236 | 5:02 PM Bergamo station | 0h37 | 5:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2278 | 5:40 PM Bergamo station | 0h40 | 6:20 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2278 | 5:40 PM Bergamo station | 1h00 | 6:40 PM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 1738A · Regionale TRENORD 25870 | 5:46 PM Bergamo Ospedale | 1h43 | 7:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 1737A · Regionale TRENORD 2280 | 6:01 PM Bergamo Ospedale | 1h19 | 7:20 PM Milano Lambrate | 1 transfer | |
Autobus TRENORD 70A · Regionale TRENORD 25870 | 6:01 PM Bergamo Ospedale | 1h28 | 7:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 70A · Regionale TRENORD 25870 | 6:01 PM Bergamo Ospedale | 1h20 | 7:21 PM Milano Greco Pirelli | 1 transfer | |
Regionale TRENORD 2238 | 6:02 PM Bergamo station | 0h37 | 6:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2238 | 6:02 PM Bergamo station | 0h48 | 6:50 PM Milan Centrale | 0 transfersDirect | |
Autobus TRENORD 72A · Regionale TRENORD 25872 | 6:21 PM Bergamo Ospedale | 1h38 | 7:59 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2280 | 6:40 PM Bergamo station | 0h40 | 7:20 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2280 | 6:40 PM Bergamo station | 1h04 | 7:44 PM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 1740A · Regionale TRENORD 25874 | 6:46 PM Bergamo Ospedale | 1h43 | 8:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 74A · Regionale TRENORD 25874 | 7:01 PM Bergamo Ospedale | 1h28 | 8:29 PM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 74A · Regionale TRENORD 25874 | 7:01 PM Bergamo Ospedale | 1h20 | 8:21 PM Milano Greco Pirelli | 1 transfer | |
Autobus TRENORD 1739A · Regionale TRENORD 2282 | 7:01 PM Bergamo Ospedale | 1h19 | 8:20 PM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2240 | 7:02 PM Bergamo station | 0h37 | 7:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2240 | 7:02 PM Bergamo station | 0h48 | 7:50 PM Milan Centrale | 0 transfersDirect | |
Autobus TRENORD 65A · Regionale TRENORD 2242 | 7:19 PM Bergamo Ospedale | 1h31 | 8:50 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 65A · Regionale TRENORD 2242 | 7:19 PM Bergamo Ospedale | 1h20 | 8:39 PM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2282 | 7:40 PM Bergamo station | 1h00 | 8:40 PM Milan Porta Garibaldi | 0 transfersDirect | |
Regionale TRENORD 2282 | 7:40 PM Bergamo station | 0h40 | 8:20 PM Milano Lambrate | 0 transfersDirect | |
Autobus TRENORD 78A · Regionale TRENORD 25878 | 8:01 PM Bergamo Ospedale | 1h28 | 9:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2242 | 8:02 PM Bergamo station | 0h37 | 8:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2242 | 8:02 PM Bergamo station | 0h48 | 8:50 PM Milan Centrale | 0 transfersDirect | |
Autobus TRENORD 69A · Regionale TRENORD 2284 | 8:14 PM Bergamo Ospedale | 1h06 | 9:20 PM Milano Lambrate | 1 transfer | |
Regionale TRENORD 2284 | 8:40 PM Bergamo station | 0h40 | 9:20 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 2284 | 8:40 PM Bergamo station | 1h00 | 9:40 PM Milan Porta Garibaldi | 0 transfersDirect | |
Autobus TRENORD 82A · Regionale TRENORD 25882 | 9:01 PM Bergamo Ospedale | 1h28 | 10:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2244 | 9:02 PM Bergamo station | 0h48 | 9:50 PM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2244 | 9:02 PM Bergamo station | 0h37 | 9:39 PM Milano Lambrate | 0 transfersDirect | |
Regionale TRENORD 22678 · Regionale TRENORD 2646 | 9:18 PM Bergamo station | 1h17 | 10:35 PM Milan Centrale | 1 transfer | |
Autobus TRENORD 86A · Regionale TRENORD 25886 | 10:01 PM Bergamo Ospedale | 1h28 | 11:29 PM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2246 | 10:07 PM Bergamo station | 0h37 | 10:44 PM Milano Lambrate | 0 transfersDirect | |
| Saturday, June 20 | |||||
Regionale TRENORD 2212 | 5:00 AM Bergamo station | 0h50 | 5:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2212 | 5:00 AM Bergamo station | 0h39 | 5:39 AM Milano Lambrate | 0 transfersDirect | |
Autobus TRENORD 18A · Regionale TRENORD 25818 | 5:01 AM Bergamo Ospedale | 1h28 | 6:29 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 20A · Regionale TRENORD 25820 | 5:31 AM Bergamo Ospedale | 1h28 | 6:59 AM Milan Porta Garibaldi | 1 transfer | |
Autobus TRENORD 22A · Regionale TRENORD 25822 | 6:01 AM Bergamo Ospedale | 1h28 | 7:29 AM Milan Porta Garibaldi | 1 transfer | |
Regionale TRENORD 2214 | 6:02 AM Bergamo station | 0h48 | 6:50 AM Milan Centrale | 0 transfersDirect | |
Regionale TRENORD 2214 | 6:02 AM Bergamo station | 0h37 | 6:39 AM Milano Lambrate | 0 transfersDirect | |
Find all the dates and times for this journey
Compare train and bus 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.
By Sara Mastellone

If you’re looking to combine Italian charm with urban energy, the Bergamo to Milan train route is a perfect choice. Whether it’s a quick day trip, work commute, or sightseeing adventure, this train ride is more than just a connection, I could say it’s part of the journey!

Piazza Cordusio in Milan by night.
Trains from Bergamo to Milan cover roughly 50 kilometers (31 miles) in about 50-60 minutes. Trenitalia Trenord operates frequent regional trains from Bergamo station to Milano Centrale station, offering comfort and speed without the hassle of traffic or parking in the chaos of the city.
I booked my tickets through Omio and it made everything simple. Trains are frequent and almost always punctual, making it easy to plan a day in Milan without worrying about delays. Compared to driving, traveling by train is far more relaxed, letting you enjoy views of Lombardy’s countryside.
Bergamo station is compact, easy to navigate, and full of little cafés to grab a coffee before departure. Arrive a few minutes early to soak in the atmosphere and pick your preferred seat on the train.
Milan Centrale is a huge hub of activity, well-signed and connected to metro, tram and bus lines. From here, you can head straight into Milan’s shopping streets, art museums or business districts in a few minutes by metro (take the Red line or the Yellow line).
Trains run roughly every 30 minutes throughout the day. Early morning trains are ideal for arriving in Milan ready to explore, while late afternoon options make the return to Bergamo effortless.
Regional trains are straightforward, with comfortable seating and a lot of space for luggage. For a short journey, I must say it’s efficient and stress-free. The views of Lombardy’s rolling hills and small towns are a bonus and make the ride unexpectedly scenic!
Tickets are cheap, typically around €5-€8 one way. Purchase them at the station or via Omio. No need to book far in advance, but checking schedules can help you pick the quietest times or plan your day better.
| Item | Cost (eur) |
|---|---|
| Ticket price | €8 |
| Food & drinks | €3 |
| Travel to departure station | €0 |
| Travel from arrival station | €2.2 |
| Total | € 13.2 |
Traveling from Bergamo to Milan by train is quick, comfortable and convenient. Book your ticket, pick a window seat, and enjoy Lombardy’s scenery before stepping into the eccentric heart of Milan.

Trains from Bergamo to Milan run on average 91 times per day, taking around 51m. Cheap train tickets for this journey start at $6 (€5) but you can travel from only $2 (€2) by bus.
There are 39 trains per day. The earliest train runs at 00:04, the last at 23:56. The fastest train covers the 27 miles (45 km) distance in 39m.
Distance 27 miles (45 km) |
Average train duration 51m |
Cheapest ticket price $6 (€5) |
Trains per day 91 |
Direct trains 39 |
Fastest train 39m |
First train 12:04 AM |
Last train 11:56 PM |
Cheapest Month Jun |
Cheapest Day Sat |
High Season Apr - Jun |
Low Season Oct - Dec |
Busiest Day Sun |
Least Busy Day Wed |
Best time to book 91 days |
Discover the best of Milan — top attractions, local food, transport tips, budget advice, and currency essentials. Plan your perfect Milan trip today.
Milan’s premier art gallery, known for Italian masterpieces by Raphael, Caravaggio, and Mantegna in the historic Brera district.
Museum entry for Leonardo’s The Last Supper, one of the world’s most famous artworks and a priority booking site in Milan.
Major museum of 20th-century Italian art facing Piazza del Duomo, with strong Futurist collections and rooftop views.
Milan’s canal district, known for waterside walks, lively atmosphere, and highly photogenic bridges and reflections.
Charming central neighborhood with elegant streets, galleries, boutiques, and a classic Milanese artistic atmosphere.
Milan’s main square and the city’s most important urban landmark, ideal for first-time visitors and classic views.
Milan’s signature saffron risotto, rich with butter and cheese, prized for its golden color and elegant flavor.
A traditional breaded veal cutlet, fried until crisp. It is one of the city’s most iconic and historic main dishes.
Braised veal shank, often served with risotto alla Milanese. It is a classic Lombard comfort dish with deep, slow-cooked flavor.
Iconic casual spot famous for panzerotti, beloved by locals and visitors for quick, affordable bites near the Duomo.
Well-known modern Milanese restaurant celebrated for refined local dishes such as mondeghili and risotto in a stylish setting.
Historic traditional trattoria serving classic Milanese and Lombard dishes in an old-world, elegant atmosphere.
Prices are high by Italian standards, especially for hotels and central dining, but budget cafés and aperitivo deals help control daily costs.
Tipping is modest. Service may be included or a coperto charged. Round up or leave 5-10% for very good restaurant service; small change for taxis and cafés is enough.
Official public transport app
Milan Centrale, Milan -> Duomo di Milano, Milan
The train connection between Bergamo and Milan is efficient and convenient, making it easy for travelers to explore these vibrant cities. The journey is serviced by several providers including Regionale, Frecciarossa, and Frecciargento. With frequent departures throughout the day, passengers can enjoy a comfortable ride while taking in the scenic views of Lombardy's countryside. Whether you're heading to Milan for business or leisure, this rail link offers a seamless travel experience.
The train connection between Bergamo and Milan is direct, with a duration of just 48 minutes. There are approximately 12 connections available each day, providing convenient travel options for passengers. The departure stations include Bergamo and Bergamo Ospedale, while the arrival stations in Milan encompass Milano Villapizzone, Milano Rogoredo, Milano Greco Pirelli, Milano Centrale, Milano Porta Garibaldi, and Milano Lambrate.
The first daily train from Bergamo to Milan departs at 06:49, providing an early start for travelers looking to explore the vibrant city of Milan. The last train of the day leaves at 22:00, allowing visitors ample time to enjoy a full day in this bustling metropolis before returning.
The cheapest ticket price for the train connection from Bergamo to Milan is €5. The average ticket price typically hovers around €5 as well, making this route an economical choice for travelers looking to explore these vibrant Italian cities.
Welcome to the magnificent Milan Cathedral, or Duomo di Milano, a stunning example of Gothic architecture that took nearly six centuries to complete. Its intricate façade and towering spires not only symbolize Milan's rich history but also serve as a testament to the city's artistic ambition during the Renaissance. As you step inside, be sure to admire its breathtaking stained glass windows and climb up for panoramic views of the city from its rooftop terraces.
Next, we find ourselves at Galleria Vittorio Emanuele II, an architectural marvel often referred to as Italy’s oldest shopping mall. Opened in 1867, this elegant structure is significant not just for its luxurious shops and cafes but also as a social hub where locals gather under its grand glass dome adorned with beautiful mosaics. Don’t miss taking a spin on the iconic bull mosaic—it's said that doing so brings good luck!
Finally, let’s explore Sforza Castle (Castello Sforzesco), which has stood since the 15th century as both a fortress and royal residence for Duke Francesco Sforza. This historic landmark holds immense significance in Italian history; it was once home to notable figures like Leonardo da Vinci who contributed art pieces now housed within its walls. Wander through its expansive courtyards and museums filled with masterpieces while imagining life in this formidable stronghold during times of power struggles!
Find answers to the most common questions about traveling from Bergamo to Milan by train. 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 train, the cheapest option, or tips for making the most of your visit at Milan, this guide helps you travel smarter and with confidence.

Here are some other resources that might have the information you need