How to determine if School Holidays in Effect


I was looking for advice on how to determine whether school holidays schedules are active in regards to bus schedules.

Unsure if anyone has tricks on how to do this via TFL api, or any other open api’s that may offer this. As a far as I can see uk gov api offers bank holidays but no school holiday dates.

Thanks in advance

“The local authority sets dates for maintained schools and voluntary controlled schools and these are recommended for other types of schools. However, academies, foundation, voluntary aided and free schools have powers to set their own term dates and we recommend that parents check with individual school websites.” -

I have a vague memory of seeing an extract from some sort of TfL document which mapped schedules onto days of the year but it may be a false memory. If it exists and could be made available that would be a valuable addition, not just for school holidays but also for the special schedules which operate around Christmas.

For what it is worth, I suspect that knowing the actual school holidays may not be enough. I have heard it said that some operators do not bother to operate school holiday schedules on some routes at half term or on the few Christmas school holiday days where a Monday to Friday service operates. Also that if term starts on a Wednesday (say) some operators start the school day service on the Monday.

What I have heard said may be quite wrong but if it isn’t I would expect that they tell TfL what service they are going to operate!

As I understand most bus schedules don’t have School/Non-School term schedule, but many do (about 7% looking at open data). If I take one at random

there are multiple schedules ( “Mon-Fri Schooldays” / “Mon-Fri Non-Schooldays”) for Monday - Friday. I don’t know which one is relevant. The timetable api is useful, but for this info is not accurate if I don’t know which schedule is in effect - I was wondering if there are any undocumented ways to figure this out for each route?


I’m guessing that as school buses mean one extra bus in the morning and another in the afternoon (as per your example of the 240) that this has been left, contractually to the company operating the bus, which is Metroline

I suspect that the contract specifies that they have to determine what is a school-day “locally” so it’s never being input into any of the TfL systems.

It’s worth noting that school buses are chickenfeed in the grand scheme of things. The 677 (600-699 are school buses) is costing TfL £12k a year.

I’m not sure that all school holiday schedules do involve fewer vehicles. In some cases the intention may be to reduce running times to reduce the annoyance generated by buses being held at stops rather than necessarily to generate a saving. Some school holiday schedules have unchanged times but the driver duties differ and/or crosslinks to school routes are not present.

The 600 series of school routes generally serve one or two specific schools and I would hope that they never run when those schools are closed.

If an operator were to run a different schedule to that expected by TfL they would be in danger of incurring fines if the times involved were too different. I would have thought it very much in their interest to tell TfL what they are intending to run.


1 Like

There is the “current” document from TfL here detailing the expectations of a bus contractor (“Operator”).

It does say that the Operators “Manage the day to day operation of routes”. It also says that Operators “Develop timetables, schedules and staff rotas – timetables must be agreed with London Buses”

Around Christmas Saturday & Sunday timetables are run from what I understand (and Bank Holidays too), again there is no way to determine (as far as I know) which timetable is in effect from timetables api, TFL would certainly have this in their systems, just as to how to expose this in their open data. If in the json response there was a key value to tell which schedule was active would be very useful, as timetable data is kinda useless at the moment if you are always returning the Term time schedules, around Christmas all of the data would incorrect at the user end

1 Like

@willa I think that we agree about this, but it seems that the data isn’t collected by TfL to distribute.