ExactClock Holiday API

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

EndpointWhat it returnsPlan
GET /v1/holidaysAll 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/nextThe next day off (public or bank holiday) in the country’s own time zone, with the number of days left.All
GET /v1/is-holidayWhether a date (YYYY-MM-DD) is a holiday or a weekend day in a country.All
GET /v1/countriesSupported countries with names in lang and their regions.All
GET /v1/holidays.icsAn 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/workdaysBusiness days between from and to (inclusive), excluding weekends and public holidays.Pro
region=…Regional holidays, e.g. country=DE&region=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

Free
  • 100 requests per IP and day
  • No key needed
  • National holidays, this year and next
  • All 20 languages

Free

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

$9/month
  • 1,000,000 requests per month
  • or $90 per year
  • Regional holidays (states, cantons …)
  • Business-day calculation
  • Years 1900–2100
  • No attribution required

Business

$49/month
  • 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.