Getting around Morocco by public transport

Note: Some links in this article may be affiliate links. If you book or buy through them, we may earn a small commission at no extra cost to you. We only recommend things we genuinely believe in. Learn more.

Photo by Earth Photart on Pexels


Getting around Morocco by public transport

The Marrakech train station smells of diesel, mint tea that someone is selling from a thermos near the entrance, and the faint sweetness of pastries from a cart by the ticket windows. Departures are chalked on a board. A family hauls a enormous striped bag toward the Casablanca platform. A student in a hoodie sleeps across two plastic seats with the practised ease of someone who does this every week. This is not a postcard Morocco. It is the country’s circulatory system — and once you understand how it moves, you can go almost anywhere.

Morocco’s public transport network is more extensive and more functional than many travellers expect. There are trains that run on time, long-distance buses with air conditioning and luggage holds, shared taxis that connect towns no train will ever reach, and city cabs so cheap you’ll check the fare twice. The system has gaps — the deep south, most of the Atlas interior, the road to Merzouga — and those gaps matter. But for a well-designed circuit covering Casablanca, Rabat, Fès, Marrakech, Tangier and the towns in between, you can move the whole country without a rental car and without spending much money.

This guide covers every mode in practical detail: what it costs, where to book, which routes work best, and where the system runs thin.


ONCF trains: the backbone of the network

Morocco’s national rail operator, ONCF, runs one of Africa’s better rail networks. The main line connects Oujda in the northeast through Fès, Meknès, Rabat and Casablanca, then branches south to Marrakech and north to Tangier via a high-speed spur — the Al Boraq TGV — that opened in 2018. That Tangier–Casablanca journey, which used to take five hours by bus, now runs in just over two hours.

Tickets can be booked at station windows or online at oncf.ma (the site works well in English and French). For the Al Boraq TGV, advance booking is worth it on weekends and during Eid holidays when trains sell out. On ordinary intercity routes — say, Rabat to Fès or Casablanca to Marrakech — you can usually turn up and buy on the day. Second class is comfortable: upholstered seats, working air conditioning on most modern trains, and toilets that are functional if not pristine.

Key fares (approximate, second class, 2026):
– Casablanca Voyageurs → Marrakech: 110–130 MAD (around €10–12)
– Casablanca → Fès: 115 MAD
– Casablanca → Tangier (Al Boraq): 295 MAD (book in advance; discounts available)
– Rabat Agdal → Casablanca Mohammed V Airport: 45 MAD — one of Africa’s most useful airport train connections

A few things to know: Casablanca has multiple stations. Casablanca Voyageurs is the main hub for intercity trains south and east. Casa Port handles commuter services and some trains to Rabat. Casablanca Mohammed V Airport station is underground, well-signed, and connects directly to both stations via the same line. Don’t confuse them.


CTM and Supratours buses: for towns the trains don’t reach

Two operators dominate long-distance buses: CTM (Compagnie de Transports au Maroc) and Supratours, which is owned by ONCF and often connects to rail routes. Both run clean, air-conditioned coaches with reserved seating and luggage holds. Both allow online booking. CTM has the wider network; Supratours is particularly useful for routes the train doesn’t serve — Ouarzazate, Essaouira, Agadir, Laâyoune.

The Marrakech–Essaouira route (about 3 hours, 90–110 MAD on Supratours) is one of the most useful in the country for travellers — the two cities are very different in character and the bus is the obvious link. Marrakech–Ouarzazate takes around 4 hours and costs about 100 MAD; from Ouarzazate, onward buses continue to Zagora and, with a change or a grand taxi, to Merzouga and the edge of the Erg Chebbi dunes.

For the Fès–Chefchaouen route, there’s no train. CTM runs the route in about 4 hours (90–100 MAD); Supratours doesn’t serve Chefchaouen. Alternatively, take a grand taxi from Fès to Ouazzane (shared, ~40 MAD), then another from Ouazzane to Chefchaouen (~25 MAD) — slower but you see more of the Rif foothills.

A note on timing: CTM departures are generally reliable. The 07:00–09:00 morning slots are the most used by working travellers and worth booking ahead during school holidays. Night buses exist on longer routes (Casablanca–Agadir, Marrakech–Laâyoune) and are a reasonable option if you’re comfortable sleeping upright — they save a night’s accommodation.

There is also a third tier: smaller private companies like Supratours competitors and regional operators that serve specific towns. These are cheaper (sometimes dramatically so) but less predictable — terminals, departure times and vehicle condition vary. If you’re flexible and your Arabic or French is functional, these can take you further for less. If not, stick to CTM or Supratours for anything beyond Tier 1 cities.


Grands taxis: the shared taxi system explained

The grand taxi is Morocco’s workhorse for short-to-medium distances, and once you understand the system, it’s genuinely efficient. These are typically ageing Mercedes 200-series sedans — the car Morocco seemingly runs on — that operate fixed routes between neighbouring towns. They depart when full (six passengers: four in the back, two in the front), and fares are fixed per seat.

You find grands taxis at designated ranks, usually near the CTM terminal or the main bus station in any town. For the most common routes — Chefchaouen to Tangier, Meknès to Volubilis, Tinerhir to Todgha Gorge — there’ll be a driver or a tout calling out the destination. The fares are low: Tinerhir to Todgha Gorge, for example, is about 15–20 MAD per person for the 15km ride.

The catch: if you don’t want to wait for the car to fill, you can pay for the remaining seats yourself. On a six-seat taxi, if three seats are empty, you’d pay three fares to leave immediately. This is worth knowing because on less-frequented routes the wait can stretch to 40 minutes or more. Paying double for two seats and leaving now is often the right call.

Grands taxis are less comfortable than buses — the suspension in many of these cars has seen better decades — but they’re flexible, direct, and for distances under 100km they’re often faster than waiting for a scheduled bus. They’re also the only realistic option for reaching trailheads like Imlil (gateway to Jebel Toubkal) from Asni, or getting between the Dadès and Todgha gorges along the Route des Kasbahs.

If you’re planning to hike in the Atlas Mountains, the grand taxi network is what connects you to the trail. The Marrakech → Asni → Imlil route runs on this system; a shared grand taxi Marrakech to Asni costs around 25–30 MAD per seat.


Petits taxis: navigating cities

Within cities, the petit taxi is the standard short-hop transport. These are small cars (usually Fiat Uno or Dacia Logan derivatives), colour-coded by city — beige in Casablanca, red in Marrakech, blue in Rabat, pale blue in Fès. They’re metered, cheap, and cannot cross city boundaries. A ride across central Marrakech rarely tops 20–25 MAD; in Fès between the Ville Nouvelle and the edge of the medina, expect 15–20 MAD.

The meter rule: metres are required by law, but in medina areas and outside train stations, drivers may quote a fixed price instead. In Marrakech especially, at Jemaa el-Fna and the main tourist entry points, unlicensed drivers and touts operate alongside legitimate petits taxis. The easiest way to avoid overcharging is to ask for the meter (“compteur, s’il vous plaît”) or, if it’s broken or claimed broken, agree a price before you get in. Most of the time, drivers are straight.

Ride-hailing: Careem (Uber’s Middle East and North Africa arm) operates in Casablanca, Rabat and Marrakech. For visitors who find negotiating taxis tiring, it’s a reasonable alternative — fares are fixed at booking, no Darija or French needed, and payment is by card or cash.


A comparison of Morocco’s main transport options

Route Best option Approx. cost Approx. time Notes
Casablanca → Marrakech Train (ONCF) 110–130 MAD 3h 15m Direct, comfortable, frequent
Casablanca → Tangier Al Boraq TGV 295 MAD 2h 10m Book ahead at weekends
Marrakech → Essaouira Supratours bus 90–110 MAD 3h No train on this route
Fès → Chefchaouen CTM bus 90–100 MAD 4h No train; grand taxi alternative
Marrakech → Imlil Grand taxi (x2) ~55 MAD total 1h 30m Marrakech→Asni, Asni→Imlil
Tinerhir → Todgha Gorge Grand taxi 15–20 MAD 30m Shared, frequent
Ouarzazate → Merzouga CTM + grand taxi 130–160 MAD 5–6h Change at Rissani or Erfoud
Within Fès medina Walking or petit taxi 15–20 MAD Variable No cars inside the oldest quarters

The southern and desert routes: where the network thins

South of the High Atlas and east of Ouarzazate, the public transport network becomes patchier. This is where the math changes. CTM serves Zagora and Ouarzazate from Marrakech. From Ouarzazate, Supratours connects to Agadir via the Tizi n’Test pass — a spectacular but long route. But Merzouga, Erg Chigaga, M’Hamid and the pistes into the desert are not well served by scheduled buses.

The realistic options for reaching the Saharan south:
CTM Marrakech → Ouarzazate, then a grand taxi toward Rissani (change as needed), then a local taxi or arranged pickup to Merzouga. Total journey: 8–10 hours. Doable, but long.
Overnight CTM from Marrakech — there are occasional direct services to Zagora and Rissani that save time, though schedules change seasonally.
– For M’Hamid and Erg Chigaga, even locals frequently use 4WD pickups. A shared arrangement through your accommodation is more realistic than a public bus.

If you’re planning a longer desert crossing, the how to cross the Sahara Desert responsibly guide covers overland logistics in detail.

The far south — Guelmim, Tan-Tan, Laâyoune — is served by CTM and Supratours, but these are long overnight runs (Marrakech to Laâyoune is 16+ hours) and represent serious commitment.


Language and booking: what you actually need to know

Morocco’s transport system operates primarily in Darija (Moroccan Arabic) and French. At train stations and CTM terminals in major cities, you will usually find someone who speaks enough French or English to sell you a ticket. The ONCF website is functional in French and passable in English. CTM’s site works in French; the mobile app (CTM.ma app) simplifies booking.

In smaller grand taxi ranks, French is useful; Darija is more useful still. Numbers, destination names, and “combien?” (how much?) will get you most of the way there. If you’re interested in getting comfortable with the language before you go, the guide on learning Arabic basics before visiting the Middle East is a practical starting point — some of the Darija essentials overlap with Modern Standard Arabic, though Moroccan dialect is its own thing.

A few practical notes:
Luggage: CTM and Supratours both have holds; for grands taxis, a large backpack goes in the boot or on your lap. Trains have overhead racks and end-of-carriage luggage storage.
Payment: cash is the norm everywhere except ONCF (cards accepted at stations and online) and Careem. Keep small bills handy — grands taxi drivers rarely carry change for a 200 MAD note.
Timetables: for CTM and Supratours, always check at the actual terminal for the most current schedule. Websites lag behind seasonal changes.


Building a Morocco circuit on public transport

A 10–14 day circuit using only public transport is entirely feasible and covers the most substantial parts of the country. A logical sequence:

Arrive Casablanca → Rabat (train, 1h) → Meknès (train, 1h 30m) → Fès (train from Meknès, 45m) → Chefchaouen (CTM bus, 4h) → Tangier (grand taxi + bus, ~4h) → Casablanca (Al Boraq, 2h 10m) → Marrakech (train, 3h 15m) → Essaouira (Supratours, 3h) → back to Marrakech → Ouarzazate (CTM, 4h)

From Ouarzazate you can push toward the desert or loop back. The whole thing is bookable without a single private transfer if you plan the grand taxi legs in advance — or simply accept that some of those legs involve a 30-minute wait in a dusty taxi rank, which is, honestly, part of how travel here actually feels.

What this network can’t easily give you is spontaneity on tight timelines. The gorges of Aït Benhaddou (15km from Ouarzazate, serviced by local taxis rather than scheduled transport) and the Dadès Valley are best with an extra day or a negotiated taxi day-trip. The BBC Travel guide to Moroccan travel planning covers some of these tradeoffs.

For deeper context on what you’ll actually encounter moving through Moroccan medinas at street level — the rhythm of the neighbourhoods, how to move between old city and new — the piece on Morocco medina life beyond the tourist trail is worth reading alongside this one.


The Bottom Line

  • The ONCF train network is the most reliable and comfortable way to connect the northern cities. The Al Boraq TGV between Tangier and Casablanca is fast, punctual, and worth the higher fare.
  • CTM and Supratours buses fill the gaps where trains don’t run — Essaouira, Chefchaouen, Ouarzazate, Agadir. Book online 24–48 hours ahead during peak season; walk-up is usually fine otherwise.
  • Grands taxis are the system within the system — essential for short hops, gorge routes, trailheads, and connections between smaller towns. Learn how the filling-the-car system works and you’ll never be stranded.
  • The southern desert routes are genuinely harder to do on scheduled public transport alone. Plan an extra day or two of buffer if you’re heading to Merzouga or Erg Chigaga, and accept that some of the final stretch involves a local arrangement rather than a timetable.
  • Cash, French basics, and flexibility are your three most important tools. The network is good. The country is large. Give yourself time.

Keep reading: Morocco medina life beyond the tourist trail