Public holidays for 200+ countries
A fast JSON and iCal API for public and bank holidays in 207 countries and their regions, with names in 20 languages. Try it without a key, or get a free key for 1,000 requests a day.
curl "https://api.exactclock.app/v1/holidays?country=SE&year=2027&lang=en"
{
"country": "SE",
"year": 2027,
"lang": "en",
"holidays": [
{
"date": "2027-01-01",
"weekday": 5,
"name": "New Year's Day",
"localName": "nyårsdagen",
"type": "public"
},
{
"date": "2027-01-06",
"weekday": 3,
"name": "Epiphany",
"localName": "trettondedag jul",
"type": "public"
},
{
"date": "2027-03-26",
"weekday": 5,
"name": "Good Friday",
"localName": "långfredagen",
"type": "public"
}
],
"attribution": {
"text": "Holidays by ExactClock (exactclock.app), based on date-holidays (CC BY 3.0)",
"url": "https://exactclock.app/"
}
}
Endpoints
| Endpoint | What it returns | Plan |
|---|---|---|
GET /v1/holidays | All holidays of a country (or region) in a year. Parameters: country (ISO 3166, e.g. SE), year, lang, type (public,bank by default; also optional, observance or all), region. | All |
GET /v1/holidays/next | The next day off (public or bank holiday) in the country’s own time zone, with the number of days left. | All |
GET /v1/is-holiday | Whether a date (YYYY-MM-DD) is a holiday or a weekend day in a country. | All |
GET /v1/countries | Supported countries with names in lang and their regions. | All |
GET /v1/holidays.ics | An iCal feed (last year to two years ahead) to subscribe to in Google Calendar, Outlook or Apple Calendar. Put the key in the URL: ?country=SE&key=… | Free key |
GET /v1/workdays | Business days between from and to (inclusive), excluding weekends and public holidays. | Pro |
region=… | Regional holidays, e.g. country=DE®ion=BY for Bavaria. Region codes are listed in /v1/countries. | Pro |
Languages: en sv de fr es it pt nl pl da no fi cs tr ru uk ja zh ko id. Names come in the requested language where a translation exists, otherwise in English; localName is always the name in the country’s own language.
Authentication and limits
Send your key as Authorization: Bearer ek_… (or ?key=ek_…). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (unix time) and X-Plan. Errors are JSON: {"error": {"code": "…", "message": "…"}}. CORS is open, but keep keys on your server when you can.
Attribution
The free plan requires a visible link to ExactClock where the data is shown, for example “Holidays by ExactClock”. The data is based on date-holidays (CC BY 3.0); every response includes an attribution field. Holiday dates are provided as is – check critical dates with official sources.
Pricing
Anonymous
- 100 requests per IP and day
- No key needed
- National holidays, this year and next
- All 20 languages
Free
- 1,000 requests per day
- API key by email
- All years 2000–2050
- iCal feeds
- Commercial use allowed
- Requires a visible link to ExactClock
Pro
- 1,000,000 requests per month
- or $90 per year
- Regional holidays (states, cantons …)
- Business-day calculation
- Years 1900–2100
- No attribution required
Business
- 10,000,000 requests per month
- or $490 per year
- Everything in Pro
- Priority email support
Paid plans are billed through Stripe and can be cancelled at any time from the dashboard. Quotas are hard limits: when one is used up the API answers 429 until it resets.