apyhub
Back
▣ HR · STANDARD DATA

Public Holidays API

Hosted on ApyHub

What it does

The Public Holidays API returns the official public holidays for a country and year. Send a country code, add a year if you need one, and get back every holiday as a date and a name in clean JSON, ready to drop into your scheduling or calendar logic.

There are two endpoints. The /holidays endpoint takes a required country code, such as DE, and an optional year, and returns a data array where each holiday has a date in YYYY-MM-DD format and a name. Holiday names come in the country's primary language, so Germany's New Year's Day is returned as Neujahrstag. The second endpoint lists every supported country, so you can build a country selector or check a code before you look it up.

Common uses include skipping public holidays when calculating delivery dates, SLAs and payment deadlines, blocking out non-working days in booking and scheduling tools, pre-filling leave and payroll calendars for teams in different countries, and showing region-aware holiday calendars in your product. Pulling the dates from an API keeps them current, so you are not maintaining a hard-coded list of bank holidays every year.

If you need to count the working days between two dates, use the Working Day Calculator or the Business Days Calculator. For time zone data to go with your country calendars, use the Timezones Dictionary.

You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and look up the holidays for your own countries before you commit.

The API is also available through ApyHub MCP, so AI agents can check public holidays directly when they plan or schedule work.

▣ ENDPOINT 01 / 02
GET
List public holidays for a country and year
https://api.eu.apyhub.com/apyhub/public-holidays/holidays

QUICKSTART

GUIDE

Quickstart

Fetch public holidays for a country, optionally filtered by year.

curl -X GET "https://api.eu.apyhub.com/apyhub/public-holidays/holidays?country=DE&year=2025" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a data array. Each item in the array is an object with date and name fields for a holiday.

{
  "data": [
    {
      "date": "2025-01-01",
      "name": "Neujahrstag"
    }
  ]
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns the public holidays for a specified country, optionally filtered by year.

Query Parameter(s)

AttributeTypeMandatoryDescription
yearIntegerNoYear to list holidays for.
countryStringYesCountry code.

Response

Returns a JSON object with a data array field. Each item in data is an object with date and name string fields representing a public holiday.

ParameterTypeMandatoryDescription
dataObject ArrayNoArray of public holiday objects.
data[].dateStringNoHoliday date in YYYY-MM-DD format.
data[].nameStringNoHoliday name in the country's primary language.
▣ ENDPOINT 02 / 02
GET
List countries supported by the holidays endpoint
https://api.eu.apyhub.com/apyhub/public-holidays

QUICKSTART

GUIDE

Quickstart

Fetch the list of public holidays for the selected country.

curl -X GET "https://api.eu.apyhub.com/apyhub/public-holidays" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a data array of strings, where each string is a public holiday entry.

{
  "data": ["New Year's Day", "Independence Day", "Christmas Day"]
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a JSON object containing a data array of strings listing the countries supported by the holidays endpoint.

Response

Returns a JSON object with a data string array field. The array contains the supported country values.

ParameterTypeMandatoryDescription
dataString ArrayYesThe list of supported countries returned by the endpoint.
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.