Travel Information
Compare bus, train, and flight for Madrid to San Fernando
Omio recommends booking the train as it is the most popular option from Madrid to San Fernando among Omio's users. If you are prioritising price take the bus with prices starting from $42. For those with little time consider booking a flight which can get you there in 1h 39m. In case you are seeking to minimise your carbon footprint the train is your best bet as it emits only 0.1 - 0.4kg. The ticket price range depends on the travel mode: a bus costs an average of $42, and a flight costs an average of $37.
Distance: 303 miles (489 km)
Compare train with
Most popular Train | Bus | Flight |
|---|---|---|
$62 Average price | $52 Average price Cheapest | $185 Average price |
5h 22m Average total duration 4h 52m Onboard + 30m Additional time* | 8h 3m Average total duration 7h 33m Onboard + 30m Additional time* | 4h 39m Average total duration Fastest 1h 39m Onboard + 3h 0m Additional time* |
0.1 - 0.4kg CO2 emissions Lowest | 0.5 - 1.2kg CO2 emissions | 1.5 - 2.9kg CO2 emissions |
![]() Most popular train company | ![]() Most popular bus company | ![]() Most popular airline |
Direct Options | Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
Travel optionsfrom Madrid to San Fernando
How to get from Madrid to San Fernando by train, bus or flight.
Our recommendation
The best way to travel from Madrid to San Fernando is by taking a train because it’s the best combination of price and speed.
02074Cheapest
02074Fastest
IB1751Other options
02104
06016+
13014
06076+
13079
BASE
BASE
BASE
IB1091+
13010
IB1091+
13014
IB1091+
13083Find all the dates and times for this journey by train, bus, flight, and ferry .
Compare prices and tickets Prices for trains, buses and flights
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.
Mar 22
Mar 23
Mar 24
Mar 25
Mar 26
Mar 27
Mar 28
Mar 29
Mar 30
Mar 31
Apr 01
Apr 02
Apr 03
Apr 04
Apr 05
Apr 06
Apr 07
Apr 08
Apr 09
Apr 10
Apr 11
More than 1,000 travel companies trust us to sell their tickets all in one place.
FAQs: Travel from Madrid to San Fernando
Travel to San Fernando easily. Whether you want fast, cheap or something entirely different, our travel experts have collected everything you need to know so you can find the best option from Madrid to San Fernando.

This is compared to other travel options from Madrid to San Fernando:
A train is $8 (€6) less than a flight for this route with tickets for a flight from Madrid to San Fernando costing on average $37 (€30).
A train is $12 (€10) less than a bus for this route with tickets for a bus from Madrid to San Fernando costing on average $42 (€34).
Other travel options to San Fernando take longer:
Train takes on average 4h 10m.
Bus takes on average 8h 0m.
- Around 8 buses per day.
- Around 6 flights per day.
- Around 3 trains per day.
However, we recommend checking specific travel dates for your route between Madrid and San Fernando as scheduled services by bus, train, and flight can vary by season or day of the week.
- Flights mostly depart from Madrid Barajas Airport and arrive in Seville Airport.
- Trains mostly depart from Madrid-Puerta de Atocha-Almudena Grandes and arrive in San Fernando-Bahía Sur.
- Buses mostly depart from Madrid, Estación Sur de Autobuses and arrive in San Fernando, Av. del Cid (Autocares Rico).
- Travel with iryo, AVE, Renfe ALVIA, Renfe Intercity, Renfe (13) to go to San Fernando by train.
- Travel with Iberia, Iberia Express, Air Nostrum , Air Arabia, Vueling Airlines, Ryanair to go to San Fernando by flight.
- Travel with Secorbus, BlaBlaCar to go to San Fernando by bus.
- 3 direct trains per day with Renfe ALVIA.
- 4 direct flights per day with Iberia, Iberia Express, Air Nostrum .
- 8 direct buses per day with Secorbus, BlaBlaCar.
Travelling from Madrid to San Fernando: related information
Here are some other resources that might have the information you need
