Holiday API documentation
This holiday API documentation covers every OpenDay endpoint with a real example. Every response is { data, meta }; dates are plain YYYY-MM-DD.
Last verified: October 16, 2026Sources & methodologyFound an error? Tell us
Getting started
- Open OpenDay API on Apify and sign in (or create a free Apify account).
- Call it as an HTTP API (Standby mode) with your Apify API token in the Authorization: Bearer header, or run up to 1,000 requests in one batch.
- You pay per successful request. Errors are never charged.
Regions: US (federal and banking), PR (government, legal, banking) and all 50 states plus DC as US-XX. Years: 2000–2100 for US and Puerto Rico, 2026–2100 for states.
Code examples
const url = 'https://jbstudio--openday-api.apify.actor/v1/is-business-day?date=2027-07-05®ion=PR';
const res = await fetch(url, {
headers: { Authorization: 'Bearer ' + process.env.APIFY_TOKEN },
});
const { data } = await res.json();
console.log(data.isBusinessDay); // falseimport os, requests
url = "https://jbstudio--openday-api.apify.actor/v1/business-days/add"
params = {"start": "2027-12-10", "days": 10, "region": "US", "calendar": "banking"}
headers = {"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"}
print(requests.get(url, params=params, headers=headers).json()["data"]["result"]) # 2027-12-24Endpoints
- /v1/holidays
- /v1/is-business-day
- /v1/business-days/add
- /v1/business-days/between
- /v1/regions
- /v1/pr/municipios
- /v1/pr/zip/{zip}
- /v1/pr/ivu
GET/v1/holidays · List holidays
Holidays for one region and year. Parameters: country (US, PR, US-TX, …), year, and optional calendar (federal, banking, government, legal, state), dateBasis (actual or observed) and include.
GET /v1/holidays?country=US&year=2027
{
"data": [
{
"id": "new-years-day",
"date": "2027-01-01",
"observedDate": "2027-01-01",
"nameEn": "New Year's Day",
"nameEs": "Año Nuevo",
"type": "federal",
"source": "5 U.S.C. 6103",
"sourceUrl": "https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title5-section6103",
"sourceType": "official"
},
{
"id": "martin-luther-king-jr-day",
"date": "2027-01-18",
"observedDate": "2027-01-18",
"nameEn": "Martin Luther King Jr. Day",
"nameEs": "Natalicio de Martin Luther King Jr.",
"type": "federal",
"source": "5 U.S.C. 6103",
"sourceUrl": "https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title5-section6103",
"sourceType": "official"
}
],
"meta": {
"calendar": "federal",
"verificationStatus": "official",
"note": "Confirm official proclamations."
}
}GET/v1/is-business-day · Check a business day
Is this date a business day on the region’s calendar? The answer lists every holiday observed that day.
GET /v1/is-business-day?date=2027-07-05®ion=PR
{
"data": {
"date": "2027-07-05",
"region": "PR",
"calendar": "government",
"isBusinessDay": false,
"reason": "holiday",
"holidays": [
{
"id": "independence-day",
"date": "2027-07-04",
"observedDate": "2027-07-05",
"nameEn": "US Independence Day",
"nameEs": "Día de la Independencia de los Estados Unidos"
}
]
}
}GET/v1/business-days/add · Add business days
Move forward (or backward, with a negative number) by N business days. The start date is not counted.
GET /v1/business-days/add?start=2027-12-10&days=10®ion=US&calendar=banking
{
"data": {
"start": "2027-12-10",
"days": 10,
"region": "US",
"calendar": "banking",
"result": "2027-12-24"
}
}GET/v1/business-days/between · Count business days between dates
Business days from start to end, both included. Negative when end is before start.
GET /v1/business-days/between?start=2027-01-01&end=2027-01-31®ion=US-TX
{
"data": {
"start": "2027-01-01",
"end": "2027-01-31",
"region": "US-TX",
"calendar": "state",
"businessDays": 19,
"inclusive": true
}
}GET/v1/regions · Supported regions
Every region with its calendars, supported years, sources and verification status by year.
GET /v1/regions
{
"data": [
{
"code": "PR",
"name": "Puerto Rico",
"defaultCalendar": "government",
"years": {
"min": 2000,
"max": 2100
}
}
]
}GET/v1/pr/municipios · Puerto Rico municipios
All 78 municipios with their Census code, official name (with accents), ASCII name and slug. /v1/pr/municipios/{id} finds one by code or name; accents and case do not matter.
GET /v1/pr/municipios/mayaguez
{
"data": {
"code": "72097",
"name": "Mayagüez",
"nameAscii": "Mayaguez",
"slug": "mayaguez"
},
"meta": {
"dataset": "pr-municipios",
"verificationStatus": "official"
}
}GET/v1/pr/zip/{zip} · Puerto Rico ZIP code to municipio
Every municipio a ZIP code covers, with its land-area share and the primary one marked. Based on 2020 Census ZIP Code Tabulation Areas, which closely approximate USPS ZIP codes.
GET /v1/pr/zip/00680
{
"data": {
"zip": "00680",
"municipios": [
{
"code": "72097",
"name": "Mayagüez",
"share": 0.9415,
"primary": true
},
{
"code": "72125",
"name": "San Germán",
"share": 0.0343,
"primary": false
},
{
"code": "72011",
"name": "Añasco",
"share": 0.0241,
"primary": false
}
]
}
}GET/v1/pr/ivu · Puerto Rico IVU rates
Sales and use tax rates with the section of the Código de Rentas Internas behind each one: state 10.5%, municipal 1%, total 11.5%, and 4% on services to other merchants and designated professional services. General information, not tax advice.
GET /v1/pr/ivu
{
"data": {
"rates": [
{
"id": "state",
"percent": 10.5,
"components": [
{
"percent": 6,
"citation": "Código de Rentas Internas de 2011, Sec. 4020.01(b)"
},
{
"percent": 4.5,
"citation": "Código de Rentas Internas de 2011, Sec. 4210.01(b) (surcharge, \"sobretasa\")"
}
]
},
{
"id": "municipal",
"percent": 1,
"components": [
{
"percent": 1,
"citation": "Código de Rentas Internas de 2011, Sec. 6080.14(a)"
}
]
}
]
}
}Errors
Invalid parameters return 400 VALIDATION_ERROR with a list of the parameters to fix. Unknown routes, municipios or ZIP codes return 404 NOT_FOUND. When your Apify spending limit is reached, the API returns 402 LIMIT_REACHED.
Results come from law and published schedules and may differ from a specific year's proclamation. Every response says so in meta.note.
Frequently asked questions
How do I check if a date is a business day in JavaScript?
Call /v1/is-business-day with the date and region (for example, PR) and read data.isBusinessDay. The example above uses fetch with your Apify token.
How do I calculate a payroll or delivery date in business days?
Use /v1/business-days/add with the start date, the number of days and the calendar (federal, banking, government or state). For ACH settlement dates, use calendar=banking.
Is there a JSON example of the holidays API?
Yes. Every endpoint above shows a real request and its JSON response. Responses are { data, meta }; errors are { error: { code, message, details } }.