In 1906 werd het station geheel vernieuwd, omdat het spoor inmiddels op viaducthoogte lag.
== Dienstregeling 2018 2025 ===== Richting Amsterdam Centraal ==={{PatTop |{{PatRij1 | .01 | 4800 5400 | [[Amsterdam Centraal]] |13| [[Sprinter]] | [[NS]]| niet vr vanaf 21:45}}{{PatRij1 | .10 | 2200 | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| }}{{PatRij1 | .18 17 | 5400 4800 | [[Amsterdam Centraal]] |13| [[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]] |13| [[Sprinter]] | [[NS]]| niet vr vanaf 21:45}}{{PatRij1 PatRij4| .40 | {{s| 2200 }}/<br>{{s|2300}} | [[Amsterdam Centraal]] |3| [[Intercity]] | [[NS]]| }}{{PatRij1 | .48 47 | 5400 4800 | [[Amsterdam Centraal]] |13| [[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 | .16 01 | 5400 | [[Zandvoort aan Zee]] |86| [[Sprinter]] | [[NS]]}}{{PatRij1 | .?? | 15400 | [[Zandvoort aan Zee]] (zomerseizoen) |?| [[Sprinter]] | [[NS]]}}{{PatRij1 | .46 31 | 5400 | [[Zandvoort aan Zee]] |86| [[Sprinter]] | [[NS]]}}{{PatRij1 | .?? | 15400 | [[Zandvoort aan Zee]] (zomerseizoen) |?| [[Sprinter]] | [[NS]]}}
}}
=== Richting Uitgeest Alkmaar ==={{PatTop |{{PatRij1 | .01 12 | 4800 3400 | [[Alkmaar]] (- [[Hoorn]]) |6/85| [[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]] |6/85| [[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| .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 | .25 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]]) |43| [[SprinterIntercity]] | [[NS]] | za-nacht; stopt ook in [[Amsterdam Sloterdijk]]}}
}}
|naam=Station
|plaats=Haarlem
|concessie=[[Concessie AmstellandHaarlem-Meerlanden IJmond (20182017-2027)|AmstellandHaarlem-MeerlandenIJmond]], <br>[[Concessie HaarlemAmstelland-IJmond Meerlanden (20172018-20272032)|HaarlemAmstelland-IJmondMeerlanden]], <br>[[Concessie Zuid-Holland Noord(2025-2032)|Zuid-Holland Noord]]|vervoerders=[[Connexxion]], [[ArrivaQbuzz]]
|vorm=Perronbusstation
|type=statisch