Haarlem, a historic Dutch town, sits about 16 minutes by NS train from Amsterdam Centraal. Zandvoort aan Zee, the closest North Sea beach to Amsterdam, is about 30 minutes direct — or another 10 minutes onward from Haarlem. Both on the same Region Travel Ticket.
To Haarlem
~16 min · NS train
To Zandvoort
~30 min direct
Haarlem → Zandvoort
~10 min onward
The NS routes — both on the Region Travel Ticket
Same Amsterdam Centraal station, same NS rail line. Pick the direct route or go via Haarlem.
NS train to Haarlem
Amsterdam Centraal → Haarlem station
~16 minutes end to end
Around 6 trains per hour through the day
Sprinter and Intercity services
Haarlem station is a short walk from the historic centre
A short, high-frequency hop. From Haarlem station, the centre is a few minutes on foot. The town centre, Grote Markt and the canals are all within easy walking distance from the station.
NS train to Zandvoort aan Zee
Amsterdam Centraal → Zandvoort aan Zee station
~30 minutes direct from Centraal
Or change at Haarlem: ~10 minutes onward
Haarlem ↔ Zandvoort runs around twice an hour, more in summer
The beach is a short walk from Zandvoort station
Zandvoort aan Zee is the closest North Sea beach to Amsterdam and the easiest to reach by train. The station sits inside the town, with the beach a few minutes away on foot. Frequent enough that you don't need to plan around a timetable in summer.
Both trips on one Region Travel Ticket
The Region Travel Ticket includes NS trains to Haarlem, Zandvoort aan Zee, and stations in between — plus full Amsterdam transport.
A single NS ticket from Amsterdam Centraal to Haarlem starts around €5.50. To Zandvoort aan Zee, it's higher because of the longer route. Return trips, plus a Haarlem ↔ Zandvoort hop on top, stack up quickly. A 1-day Region Travel Ticket at €23.00 covers all of it — Amsterdam ↔ Haarlem ↔ Zandvoort and back — for the entire day, plus the Schiphol airport train, Bus 397, the Keukenhof shuttles (in season), and unlimited GVB tram, bus, metro and ferry inside Amsterdam.
If you're doing a day trip out of Amsterdam anyway, the Region Travel Ticket is almost always the cheaper end-to-end option than stacking individual NS tickets.
Both towns in one day — morning historic centre, afternoon beach, back to Amsterdam for dinner.
1
Morning — NS train to Haarlem
From Amsterdam Centraal, ~16 minutes on a Sprinter or Intercity. Tap on with your OV-chipkaart — your Region Travel Ticket covers it. Multiple trains per hour, so no need to plan around the timetable.
2
Haarlem — walk the historic centre
The centre is a short walk from the station. The Grote Markt, the canals, and the historic streets are the main draws. For specific museums, opening hours and events, see the official Haarlem visitor site.
3
Lunch in Haarlem
Haarlem has plenty of cafés and restaurants in the centre, generally calmer and more local-feeling than equivalents in Amsterdam. After lunch, walk back to the station for the onward train.
4
Haarlem → Zandvoort: ~10 minutes
From Haarlem station, the connection to Zandvoort aan Zee runs around twice an hour (more frequently in summer). Stay on the platform side for Zandvoort — the route is signed in the station.
5
Zandvoort — the beach
From Zandvoort aan Zee station the beach is a few minutes on foot. In warm-weather months the beach pavilions are open for food and drinks. For current opening, conditions and events, see the official Zandvoort visitor site.
6
Direct NS train back to Amsterdam
From Zandvoort aan Zee, take the direct train back to Amsterdam Centraal — about 30 minutes. Or, if it's quieter outside summer, change at Haarlem. Same Region Travel Ticket, no extra fare.
Combine with Keukenhof or other day trips
Same Region Travel Ticket, multiple destinations on the same day.
The Region Travel Ticket also covers the regional buses to Volendam, Edam and Zaanse Schans, and during the Keukenhof season the four shuttle bus lines to the flower park. Sensible pairings on the Haarlem/Zandvoort axis:
Haarlem + Keukenhof (season only). Haarlem in the morning, then Connexxion bus 50 from Haarlem station to Keukenhof for the afternoon. Bus 50 is on the Region Travel Ticket. See the Keukenhof guide →
Zandvoort + Haarlem. Beach morning, historic-town afternoon — easy with the 10-minute train hop.
Haarlem + Amsterdam evening. If you're staying in Amsterdam, a half-day in Haarlem and back for dinner is the simplest version of this trip.
Honest tips most other sites skip
Worth knowing before you go
Zandvoort is busy on warm weekends. When the weather is hot, half of Amsterdam takes the train to the beach. Trains and beach pavilions both get full. Weekdays in early or late season are calmer.
The Standard Travel Ticket does NOT cover NS trains beyond Schiphol. Only the Region version covers Haarlem and Zandvoort. If you've already booked the standard Travel Ticket, you'd need to buy NS tickets separately or upgrade.
Haarlem station and town are close, but not the same place. From the station to the Grote Markt is a short walk. Allow 10-15 minutes if you stop to take photos along the way.
Zandvoort aan Zee is the right station. There is also a small "Overveen" station on the same line. For the beach, you want "Zandvoort aan Zee" — the line terminus.
Outside summer, the beach is still pleasant — but quiet. The pavilions reduce hours, and the swimming season is over. Walking the dunes and the long beach is still rewarding on a clear cold day. Check the weather before committing.
FAQ
NS train from Amsterdam Centraal to Haarlem. The journey takes about 16 minutes, with frequent departures throughout the day (around 6 trains per hour). The Amsterdam & Region Travel Ticket covers this train route in both directions for the validity period of your ticket.
Two options. Direct NS train from Amsterdam Centraal to Zandvoort aan Zee takes about 30 minutes. Or change at Haarlem — the Haarlem to Zandvoort connection runs roughly twice an hour, more frequently in summer. Both routes are covered by the Region Travel Ticket. The beach is a short walk from Zandvoort aan Zee station.
Yes — they sit on the same NS line. A typical pairing: Haarlem in the morning, Zandvoort in the afternoon, then back to Amsterdam from Zandvoort. All on the same Region Travel Ticket, no separate tickets needed.
Yes. The Amsterdam & Region Travel Ticket includes 2nd-class NS train travel to Haarlem and Zandvoort aan Zee, plus all stations in between. Just tap your OV-chipkaart on and off at the gate — no second ticket needed.
A warm-weather day in late spring through early autumn is the classic beach trip. Outside of summer, Zandvoort is still walkable and atmospheric, but the beach pavilions reduce hours and the swimming season is over. Check the local weather before committing.
Get the Region Travel Ticket
From €23.00 · Covers NS trains to Haarlem and Zandvoort, plus all Amsterdam transport · Free cancellation up to 24h