In 1906 werd het station geheel vernieuwd, omdat het spoor inmiddels op viaducthoogte lag.
== Dienstregeling 2020 2025 ===== Richting Amsterdam Centraal ==={{PatTop |{{PatRij1 | .01 | 4800 5400 | [[Amsterdam Centraal]] |3| [[Sprinter]] | [[NS]]| niet vr vanaf 21:45}}{{PatRij1 | .10 | 2200 | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| }}{{PatRij1 | .16 17 | 5400 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 | .31 | 4800 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 | .46 47 | 5400 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 | .09 | 15400 | [[Zandvoort aan Zee]] (zomer) |5| [[Sprinter]] | [[NS]]}}{{PatRij1 | .16 01 | 5400 | [[Zandvoort aan Zee]] |8| [[Sprinter]] | [[NS]]}}{{PatRij1 | .24 | 14400 | [[Zandvoort aan Zee]] (zomer) |56| [[Sprinter]] | [[NS]]}}{{PatRij1 | .39 | 15400 | [[Zandvoort aan Zee]] (zomer) |5| [[Sprinter]] | [[NS]]}}{{PatRij1 | .46 31 | 5400 | [[Zandvoort aan Zee]] |86| [[Sprinter]] | [[NS]]}}{{PatRij1 | .54 | 14400 | [[Zandvoort aan Zee]] (zomer) |5| [[Sprinter]] | [[NS]]}}
}}
=== Richting Uitgeest Alkmaar ==={{PatTop |{{PatRij1 | .01 12 | 4800 3400 | [[Alkmaar]] (- [[Hoorn]]) |65| [[SprinterIntercity]] | [[NS]]| ma-do om 17.12}}{{PatRij1 | .28 15 | 3400 4800 | [[Hoorn]]<br>[[Alkmaar]] (middagspits) |58| [[IntercitySprinter]] | [[NS]]| tot 18:30<br>na 18:30}}{{PatRij1 | .31 42 | 4800 3400 | [[Alkmaar]] - [[Hoorn]] |65| [[SprinterIntercity]] | [[NS]]| ma-do om 17.42}}{{PatRij1 | .58 45 | 3400 4800 | [[AlkmaarHoorn]] (middagspits) |58| [[IntercitySprinter]] | [[NS]]| }}
}}
=== Richting Leiden Centraal ==={{PatTop |{{PatRij1 | .07 | 2100 | [[Den Haag Centraal]] |6| [[Intercity]] | [[NS]]| ma-do tot 22:00 + vr gehele dag<br>+ za na 10:00 + zo 10:30-22:00}}{{PatRij1 | .20 17 | 6300 | [[Leiden Centraal]] (- [[Den Haag Centraal|Den Haag C.]]) |1/4| [[Sprinter]] | [[NS]] | }}{{PatRij4| .23 | {{s| 2200 }}/<br>{{s|2300}} | [[Vlissingen]] |6| [[Intercity]] | [[NS]]| }}{{PatRij1 | .25 37 | 2100 | [[Den Haag Centraal]] |6| [[Intercity]] | [[NS]] | ma-do tot 22:00 + vr gehele dag<br>+ za na 10:00 + zo 10:30-22:00}}{{PatRij1| .47 | 6300 | [[Leiden Centraal]] (- [[Den Haag Centraal|Den Haag C.]]) |1/4| [[Sprinter]] | [[NS]]| }}{{PatRij1 | .37 53 | 2100 2200 | [[Den Haag CentraalVlissingen]] |6| [[Intercity]] | [[NS]]| }}}} === Nachtnet ==={{PatTop|{{PatRij1 | 2.50 01 | 2200 21460 | [[VlissingenAmsterdam Centraal]] |61/3| [[Intercity]] | [[NS]]| vr- en za-nacht}}{{PatRij1 | 3.55 04 | 6300 21460 | [[Leiden Amsterdam Centraal]] (|3/6a| [[Intercity]] | [[NS]] | vr- en za- nacht}}{{PatRij1| 7.02 | 1400 | [[Den Haag Amsterdam Centraal]]) |13| [[SprinterIntercity]] | [[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