In 1906 werd het station geheel vernieuwd, omdat het spoor inmiddels op viaducthoogte lag.
== Dienstregeling 2022 2025 ===== Richting Amsterdam Centraal ==={{PatTop |{{PatRij1 | .02 01 | 5400 | [[Amsterdam Centraal]] |3| [[Sprinter]] | [[NS]]| niet vr vanaf 21:45}}{{PatRij1 | .10 | 2200 | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| }}{{PatRij1 | .17 | 4800 | [[Amsterdam Centraal]] |3| [[Sprinter]] | [[NS]]| }}{{PatRij1 | .25 | 2100 | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| ma-do tot 21:30, vr gehele dag, za vanaf 8:30, <br> zo 10:30-22:00}}{{PatRij1 | .32 31 | 5400 | [[Amsterdam Centraal]] |3| [[Sprinter]] | [[NS]]| niet vr vanaf 21:45}}{{PatRij1 PatRij4| .40 | {{s| 2200 }}/<br>{{s|2300}} | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| }}{{PatRij1 | .47 | 4800 | [[Amsterdam Centraal]] |3| [[Sprinter]] | [[NS]]| }}{{PatRij1 | .55 | 2100 | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| ma-do tot 21:30, vr gehele dag, za vanaf 8:30, <br> zo 10:30-22:00}}
}}
=== Richting Zandvoort aan Zee ===
{{PatTop |{{PatRij1 | .?? | 15400 | [[Zandvoort aan Zee]] |5| [[Sprinter]] | [[NS]] || april-oktober}}{{PatRij1 | .00 01 | 5400 | [[Zandvoort aan Zee]] |86| [[Sprinter]] | [[NS]]}}{{PatRij1 | .?? | 25400 | [[Zandvoort aan Zee]] |5| [[Sprinter]] | [[NS]] | april-oktober}}{{PatRij1 | .?? | 15400 | [[Zandvoort aan Zee]] |5| [[Sprinter]] | [[NS]] | april-oktober}}{{PatRij1 | .30 31 | 5400 | [[Zandvoort aan Zee]] |8| [[Sprinter]] | [[NS]]}}{{PatRij1 | .?? | 25400 | [[Zandvoort aan Zee]] |56| [[Sprinter]] | [[NS]] | april-oktober}}
}}
=== Richting Uitgeest Alkmaar ==={{PatTop |{{PatRij1 | .12 | 3400 | [[Alkmaar]] |5| [[Intercity]] | [[NS]] | spitsma-do om 17.12}}{{PatRij1 | .15 | 4800 | [[AlkmaarHoorn]] (- <br>[[HoornAlkmaar]]) |8| [[Sprinter]] | [[NS]]| tot 18:30<br>na 18:30}}{{PatRij1 | .42 | 3400 | [[Alkmaar]] |5| [[Intercity]] | [[NS]] | spitsma-do om 17.42}}{{PatRij1 | .45 | 4800 | [[Hoorn]] |8| [[Sprinter]] | [[NS]]| }}
}}
=== Richting Leiden Centraal ==={{PatTop |{{PatRij1 | .07 | 2100 | [[Den Haag Centraal]] |6| [[Intercity]] | [[NS]]}}{{PatRij1 | .21 | 2200 | [[Vlissingen]] |6| [[Intercity]] | [[NS]]ma-do tot 22:00 + vr gehele dag<br>+ za na 10:00 + zo 10:30-22:00}}{{PatRij1 | .25 17 | 6300 | [[Leiden Centraal]] (- [[Den Haag Centraal|Den Haag C.]]) |1/4| [[Sprinter]] | [[NS]]| }}{{PatRij1 PatRij4| .37 23 | {{s|2200}}/<br>{{s| 2100 2300}} | [[Den Haag CentraalVlissingen]] |6| [[Intercity]] | [[NS]]| }}{{PatRij1 | .51 37 | 2200 2100 | [[VlissingenDen Haag Centraal]] |6| [[Intercity]] | [[NS]]| ma-do tot 22:00 + vr gehele dag<br>+ za na 10:00 + zo 10:30-22:00}}{{PatRij1 | .55 47 | 6300 | [[Leiden Centraal]] (- [[Den Haag Centraal|Den Haag C.]]) |1/4| [[Sprinter]] | [[NS]]| }}{{PatRij1| .53 | 2200 | [[Vlissingen]] |6| [[Intercity]] | [[NS]] | }}
}}
=== Nachtnet ===
{{PatTop |{{PatRij1 | 2.00 01 | 22200 21460 | [[Amsterdam Centraal]] |1/3| [[Intercity]] | [[NS]] | vr/- en za-nacht om 2:00}}{{PatRij1 | 3.17 04 | 22200 21460 | [[Amsterdam Centraal]] |3/6a| [[Intercity]] | [[NS]] | vr/- en za-nacht om }}{{PatRij1| 7.02 | 1400 | [[Amsterdam Centraal]] |3:17| [[Intercity]] | [[NS]] | za-nacht; stopt ook in [[Amsterdam Sloterdijk]]}}
}}
|naam=Station
|plaats=Haarlem
|concessie=[[Concessie Haarlem-IJmond (2017-2027)|Haarlem-IJmond]],<br>[[Concessie Amstelland-Meerlanden (2018-2032)|Amstelland-Meerlanden]],<br>[[Concessie Zuid-Holland Noord(2025-2032)|Zuid-Holland Noord]]|vervoerders=[[Connexxion]], [[ArrivaQbuzz]]
|vorm=Perronbusstation
|type=statisch