Germany has 16 states and 16 different school holiday calendars. Each ministry publishes its own "Ferienordnung", usually as a PDF, and the dates for the free single days (the Friday after Ascension, Whit Tuesday, the odd day before 1 May) are easy to miss because they sit in a footnote.
For Lower Saxony (Niedersachsen) we typed the whole thing out, checked every row against the ministry's Ferienordnung for 2024/25 to 2029/30, and published it as JSON, CSV and an ICS calendar: https://github.com/RB9744/schulferien-niedersachsen
What is in it:
- 45 entries from February 2025 to the summer holidays of 2030
- columns: school_year, type (herbst, weihnachten, winter, ostern, brueckentag, pfingsten, sommer, extra), name_de, name_en, start, end, days
- start and end are the first and last free day the way the ministry counts them (Saturdays included)
- one .ics file you can subscribe to in Google Calendar, Outlook or Apple Calendar
- CC BY 4.0, source link to the ministry PDF in the file
Things worth knowing if you build anything for parents or schools in Lower Saxony:
- the summer break is always 42 days (six weeks of Mon-Sat), but it moves a lot: it starts 2 July in 2026, 8 July in 2027 and 20 July in 2028, because the 16 states rotate the summer slots
- every year has two single free days that are not public holidays: the Friday after Ascension Day and Whit Tuesday (7 and 18 May in 2027)
- some years get an extra day, for example 2 October 2028, the Monday before German Unity Day
- public holidays (Good Friday, Reformation Day and so on) are not in this file; they come from a different law
Quick start:
const url = 'https://raw.githubusercontent.com/RB9744/schulferien-niedersachsen/main/data/schulferien-niedersachsen-2025-2030.json'; const d = await (await fetch(url)).json(); const sommer2027 = d.holidays.find(h => h.type === 'sommer' && h.start.startsWith('2027')); // { start: "2027-07-08", end: "2027-08-18", days: 42 } The same data is on Kaggle (https://www.kaggle.com/datasets/rbkhanni/schulferien-niedersachsen-2025-2030) and Hugging Face (https://huggingface.co/datasets/Rbkhanni/schulferien-niedersachsen).
It was built for ferien-nds.de (https://ferien-nds.de/), a German site for parents in Lower Saxony with the dates per holiday, printable calendars and the bridge days for each year. If another state's Ferienordnung is something you need in this format, say so in the issues; we will add the ones people ask for first.

