OpenHolidays API
Free European holidays API with no key: public and school holidays for 25+ countries including regional variations, in multiple languages. Tested example.
Endpoint tested and returned HTTP 200 on 19 Aug 2026
What is the OpenHolidays API?
OpenHolidays is a free, key-free API providing public holidays and school holidays for more than 25 European countries, including regional subdivisions and localised holiday names in several languages.
OpenHolidays covers something most holiday APIs miss entirely: school holidays. That is a genuinely different dataset from public holidays and matters for travel, childcare, staffing and demand forecasting.
Regional handling is thorough. Many European countries set school holidays at state or province level, and the API models that properly with a `subdivisions` field rather than flattening everything to a national calendar.
Quick facts
- Base URL
https://openholidaysapi.org- Authentication
- No API key required.
- Rate limit
- No published limit; fair use expected.
- Pricing
- Free open data.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the OpenHolidays API
Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Public holidays for a country and year
GET https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&languageIsoCode=EN&validFrom=2026-01-01&validTo=2026-12-31
curl 'https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&languageIsoCode=EN&validFrom=2026-01-01&validTo=2026-12-31'const res = await fetch("https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&languageIsoCode=EN&validFrom=2026-01-01&validTo=2026-12-31");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://openholidaysapi.org/PublicHolidays?countryIsoCode=DE&languageIsoCode=EN&validFrom=2026-01-01&validTo=2026-12-31", timeout=20)
res.raise_for_status()
print(res.json())[
{
"id": "9ac6fd8b-aec4-41f0-916b-f03af58ecdab",
"startDate": "2026-01-01",
"endDate": "2026-01-01",
"type": "Public",
"name": [
{
"language": "EN",
"text": "New Year's Day"
}
],
"regionalScope": "Regional",
"temporalScope": "FullDay",
"nationwide": true
},
{
"id": "7f99caaa-1eb2-4564-a6e8-13844634c929",
"startDate": "2026-01-06",
"endDate": "2026-01-06",
"type": "Public",
"name": [
{
"language": "EN",
"text": "Epiphany"
}
],
"regionalScope": "Regional",
"temporalScope": "FullDay",
"nationwide": false,
"subdivisions": [
{
"code": "DE-ST",
"shortName": "ST"
},
{
"code": "DE-BW",
"shortName": "BW"
},
{
"code": "DE-BY",
"shortName": "BY"
}
]
},
{
"id": "f66c8c81-2ea3-43b4-8398-f3dc4ef0f62a",
"startDate": "2026-03-08",
"endDate": "2026-03-08",
"type": "Public",
"name": [
{
"language": "EN",
"text": "International Women's Day"
}
],
"regionalScope": "Regional",
"temporalScope": "FullDay",
"nationwide": false,
"subdivisions": [
{
"code": "DE-BE",
"shortName": "BE"
},
{
"code": "DE-MV",
"shortName": "MV"
}
]
},
{
"id": "f80fd9dc-41b4-4203-8fea-2cf36d365fbb",
"startDate": "2026-04-03",
"endDate": "2026-04-03",
"type": "Public",
"name": [
{
"language": "EN",
"text": "Good Friday"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
countryIsoCode | string | Required | ISO 3166-1 alpha-2 country code. DE |
languageIsoCode | string | Required | Language for holiday names. EN |
validFrom / validTo | string | Required | Date range as YYYY-MM-DD. 2026-01-01 |
subdivisionCode | string | Optional | Restrict to a state or region. DE-BY |
Response fields
idstring- Holiday UUID.
startDate / endDatestring- Holiday period — school holidays span multiple days.
typestring- Public or School.
namearray- Localised names, each with language and text.
regionalScopestring- National or Regional.
subdivisionsarray- Regions the holiday applies to when regionally scoped.
What you can build with the OpenHolidays API
- Plan staffing and delivery schedules around school holidays
- Forecast travel and retail demand across European markets
- Build a multi-country office closure calendar
- Show regional holiday differences within a country
Common errors and how to fix them
400
Missing a required parameter.
Fix: countryIsoCode, languageIsoCode, validFrom and validTo are all mandatory.
Empty array
No holidays in that window, or the country is not covered.
Fix: Coverage is European; check the /Countries endpoint for supported codes.
Name is an array, not a string
Names are localised per language.
Fix: Read name[0].text, or find the entry matching your requested language.
OpenHolidays API — frequently asked questions
Is OpenHolidays free?
Yes, completely free open data with no API key required.
Does it include school holidays?
Yes, and that is its main advantage over other holiday APIs. Set the type filter or read the `type` field to distinguish Public from School holidays.
Which countries are covered?
More than 25, focused on Europe including Germany, France, Italy, Spain, Poland and the Nordics. Use the /Countries endpoint for the current list.
How does it handle regional holidays?
Properly — the `regionalScope` field and `subdivisions` array identify holidays that apply only in particular states or provinces, which matters a great deal for German and Swiss school calendars.
Tools that pair with this API
Age Calculator
Find your exact age in years, months and days from your date of birth, plus totals in weeks, days and hours and a countdown to your next birthday.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Alternatives to OpenHolidays API
If OpenHolidays does not fit, these business & commerce apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Arbeitnow Job Board | Free job board API with no key: developer and tech jobs across Europe with company, location, remote flag, salary tags and full descriptions. Tested example. | No key | Yes | 21 Aug 2026 |
| Remotive | Free remote jobs API with no key: curated remote positions across software, design, marketing and support with salary, category and company data. Tested example. | No key | Yes | 19 Aug 2026 |
| The Muse Jobs | Free job search API with no key for basic use: listings from vetted employers with company profiles, experience level and location filters. Tested curl example. | No key | Yes | 19 Aug 2026 |
| UK Bank Holidays | Free official UK bank holidays API from GOV.UK with no key. Holidays for England, Wales, Scotland and Northern Ireland with dates and bunting flags. Tested. | No key | Yes | 19 Aug 2026 |
| OpenIBAN | Free IBAN validation API with no key: check international bank account numbers for structural and checksum validity, with bank data lookup. Tested example. | No key | Yes | 19 Aug 2026 |
| Pick an Agency | Free agency directory API with no key: search 47,000+ marketing agencies by service and location, with ratings, team size, industries served and budget floor. Tested example included. | No key | Yes | 21 Aug 2026 |
OpenHolidays is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.