Open public holiday data: JSON and ICS
Public holidays for 131 countries (2025–2030), free to download or fetch directly – no sign-up, no API key, open CORS. We only publish data that passed our cross-check against independent sources.
Endpoints (stable, version 1)
All files are static and cached for one day. Country code = ISO 3166-1 alpha-2 in lower case, region codes = ISO 3166-2 without the country prefix.
https://toolboxday.com/data/v1/holidays/index.json
https://toolboxday.com/data/v1/holidays/{country}/{year}.json
https://toolboxday.com/data/v1/holidays/{country}/{year}.icsindex.json · /data/v1/holidays/de/2027.json · /data/v1/holidays/fr/2027.ics
{
"date": "2027-01-06",
"id": "heiligeDreiKoenige",
"name": "Epiphany",
"localName": "Heilige Drei Könige",
"nationwide": false,
"regions": [
"BW",
"BY",
"ST"
]
}Code examples
JavaScript
const res = await fetch('https://toolboxday.com/data/v1/holidays/de/2027.json');
const data = await res.json();
// nationwide holidays + holidays of one state (e.g. Bavaria = "BY")
const byState = data.holidays.filter(
(h) => h.nationwide || h.regions?.includes('BY')
);
console.log(byState.map((h) => `${h.date} ${h.name}`));Python
import json, urllib.request
url = "https://toolboxday.com/data/v1/holidays/de/2027.json"
data = json.load(urllib.request.urlopen(url))
for h in data["holidays"]:
where = "nationwide" if h["nationwide"] else ", ".join(h["regions"])
print(h["date"], h["name"], "-", where)curl + jq
curl -s https://toolboxday.com/data/v1/holidays/de/2027.json | jq '.holidays[] | select(.nationwide) | .date'Subscribe in your calendar
The ICS files contain the nationwide public holidays. Google Calendar: “Other calendars → From URL”; Outlook: “Add calendar → Subscribe from web”; iPhone: “Settings → Calendar → Accounts → Add Subscribed Calendar”.
https://toolboxday.com/data/v1/holidays/fr/2027.icsLicence
Our compilation is licensed under CC BY 4.0: you may use, share and adapt it, also commercially, with attribution. Data for countries other than Germany is based on python-holidays (MIT licence); the licence notice is linked and listed as a source in every JSON file. CC BY 4.0 · python-holidays (MIT)
Please credit us with a link
If you use the data on a website, in an app or in documentation, we appreciate a visible source link – it helps us keep the data maintained. A suggestion (change the wording as you like, nofollow is fine):
Holiday data: <a href="https://toolboxday.com/">ToolboxDay</a> (CC BY 4.0)How the data is checked
- Germany: computed from the 16 state holiday laws and the Unification Treaty, with automated tests against the legal texts.
- Other countries: generated with python-holidays and cross-checked against Nager.Date and Google’s public holiday calendars. Countries, years or regions with a mismatch are not included here.
- Holidays based on the lunar calendar carry “estimated”: the date may shift by one day depending on the moon sighting. No warranty – for legally binding purposes, the official source prevails.
School holidays
The JSON files for Germany also contain the school holidays of all 16 states (source: KMK and state ministries of education), as far as officially published.
School holidays of further countries (from the OpenHolidays API) are available as a separate file under the Open Database License (ODbL 1.0): /data/schulferien-welt.json
All countries and years
| Country | ISO | Files |
|---|---|---|
| Afghanistan | af | 2026: JSON ICS · 2027: JSON ICS |
| Algeria | dz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Andorra | ad | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Angola | ao | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Armenia | am | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Aruba | aw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Australia | au | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Austria | at | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Bahrain | bh | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Barbados | bb | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Belarus | by | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Belgium | be | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Belize | bz | 2026: JSON ICS · 2027: JSON ICS |
| Benin | bj | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Bermuda | bm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Bolivia | bo | 2026: JSON ICS · 2027: JSON ICS |
| Burundi | bi | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Cambodia | kh | 2026: JSON ICS · 2027: JSON ICS |
| Caribbean Netherlands | bq | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Central African Republic | cf | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Chad | td | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Colombia | co | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Congo - Brazzaville | cg | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Cook Islands | ck | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Côte d’Ivoire | ci | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Croatia | hr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Curaçao | cw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Cyprus | cy | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Czechia | cz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Denmark | dk | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Djibouti | dj | 2026: JSON ICS · 2027: JSON ICS |
| Dominica | dm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| El Salvador | sv | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Estonia | ee | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Ethiopia | et | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Faroe Islands | fo | 2026: JSON ICS · 2027: JSON ICS |
| Finland | fi | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| France | fr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| French Guiana | gf | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| French Polynesia | pf | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Gabon | ga | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Georgia | ge | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Germany | de | 2025: JSON ICS · 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS · 2029: JSON ICS · 2030: JSON ICS |
| Ghana | gh | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Gibraltar | gi | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Grenada | gd | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Guatemala | gt | 2026: JSON ICS · 2027: JSON ICS |
| Guernsey | gg | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Guinea | gn | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Haiti | ht | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Hungary | hu | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Iceland | is | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Indonesia | id | 2026: JSON ICS · 2027: JSON ICS |
| Iraq | iq | 2026: JSON ICS · 2027: JSON ICS |
| Ireland | ie | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Israel | il | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Italy | it | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Japan | jp | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Jersey | je | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Kazakhstan | kz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Kenya | ke | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Lebanon | lb | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Lesotho | ls | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Liberia | lr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Liechtenstein | li | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Lithuania | lt | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Luxembourg | lu | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Macao SAR China | mo | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Malawi | mw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Maldives | mv | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Mali | ml | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Malta | mt | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Mauritania | mr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Mayotte | yt | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Mexico | mx | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Micronesia | fm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Moldova | md | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Monaco | mc | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Montenegro | me | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Mozambique | mz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Nauru | nr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Netherlands | nl | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| New Caledonia | nc | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| New Zealand | nz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Nicaragua | ni | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| North Macedonia | mk | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Norway | no | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Palau | pw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Paraguay | py | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Peru | pe | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Philippines | ph | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Poland | pl | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Portugal | pt | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Qatar | qa | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Réunion | re | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Romania | ro | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Russia | ru | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Rwanda | rw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Samoa | ws | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| San Marino | sm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| São Tomé & Príncipe | st | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Senegal | sn | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Seychelles | sc | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Singapore | sg | 2026: JSON ICS · 2027: JSON ICS |
| Sint Maarten | sx | 2026: JSON ICS · 2027: JSON ICS |
| Slovakia | sk | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Slovenia | si | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Somalia | so | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| South Africa | za | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| South Korea | kr | 2026: JSON ICS · 2027: JSON ICS |
| Spain | es | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Sri Lanka | lk | 2026: JSON ICS |
| St Barthélemy | bl | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| St Lucia | lc | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| St Pierre & Miquelon | pm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Sudan | sd | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Suriname | sr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Svalbard & Jan Mayen | sj | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Switzerland | ch | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Tajikistan | tj | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Tanzania | tz | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Timor-Leste | tl | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Tokelau | tk | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Türkiye | tr | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Uganda | ug | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| United Kingdom | gb | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| United States | us | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Venezuela | ve | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Wallis & Futuna | wf | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Zambia | zm | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
| Zimbabwe | zw | 2026: JSON ICS · 2027: JSON ICS · 2028: JSON ICS |
Found an error or missing a country? Write to us: info@saracai.de