The cheapest and fastest trains from Madrid to Amsterdam
Cheapest price
£411
Average price
£412
Fastest journey
14 h 10 m
Average duration
17 h 30 m
Trains per day
2
Distance
1481 km
The best way to find a cheap train ticket from Madrid to Amsterdam is to book your journey as far in advance as possible and to avoid travelling at rush hour.
The average ticket from Madrid to Amsterdam will cost around £412 if you buy it on the day, but you can find cheap train tickets today for only £411.
To travel from Madrid to Amsterdam you need to make at least 3 changes.




Travel Information
Compare train, coach and flight for Madrid to Amsterdam
Omio recommends booking the flight as it is the most popular option from Madrid to Amsterdam among Omio's users. If you are prioritising price take the coach with prices starting from £49. For those with little time consider booking a flight which can get you there in 3h 56m. In case you are seeking to minimise your carbon footprint the coach is your best bet as it emits only 1.5 - 3.7kg. The ticket price range depends on the travel mode: a coach costs an average of £49, and a train costs an average of £407.
Distance: 1481 km
Compare train with
| Train | Most popular Flight | Coach |
|---|---|---|
£415 Average Price | £283 Average Price | £127 Average Price Cheapest |
18h 7m Average total duration 17h 37m Onboard + 30m Additional time* | 6h 56m Average total duration Fastest 3h 56m Onboard + 3h 0m Additional time* | 24h 50m Average total duration 24h 20m Onboard + 30m Additional time* |
- CO2 emissions | 4.4 - 8.9kg CO2 emissions | 1.5 - 3.7kg CO2 emissions Lowest |
Direct Options | Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
Live departures
Madrid to Amsterdam train times
The table below shows live departures for Madrid to Amsterdam trains for today, Tuesday 25 November. You can also manually refresh the results below to see updated train journeys.
| Provider | Departs | Duration | Arrives | Changes | Tickets |
|---|---|---|---|---|---|
![]() | 06:40 Madrid | 14h10 | 20:50 Amsterdam | 3 changes | |
![]() | 13:00 Madrid | 20h50 | 09:50 Amsterdam | 3 changes | |
This is the last train of the day. | |||||
Find all the dates and times for this journey
Compare prices and tickets Madrid to Amsterdam by train, coach or flight
Compare train, coach 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.
25 Nov
26 Nov
27 Nov
28 Nov
29 Nov
30 Nov
01 Dec
02 Dec
03 Dec
04 Dec
05 Dec
06 Dec
07 Dec
08 Dec
09 Dec
10 Dec
11 Dec
12 Dec
13 Dec
14 Dec
15 Dec
Journey information
Overview: Train from Madrid to Amsterdam
Trains from Madrid to Amsterdam run on average 1 times per day, taking around 17h 37m. Cheap train tickets for this journey start at £407 but you can travel from only £42 by flight.
The earliest train runs at 06:30, the last at 13:00. The fastest train covers the 1481 km distance in 14h 10m.
Distance 1481 km |
Average train duration 17h 37m |
Cheapest ticket price £407 |
Trains per day 1 |
Fastest train 14h 10m |
First train 06:30 |
Last train 13:00 |
Train companies: AVE, Renfe Viajeros, iryo from Madrid to Amsterdam trainsAVE, Renfe Viajeros, iryo trains will get you between Madrid and Amsterdam from £42. With over 1000 travel companies on Omio, you can find the best train times and tickets for your trip.
AVE
iryo
Renfe Viajeros
FAQs: Madrid to Amsterdam train
Find answers to the most common questions about traveling from Madrid to Amsterdam 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 Amsterdam, this guide helps you travel smarter and with confidence.

More options for your journey from Madrid to Amsterdam
Here are some other resources that might have the information you need
