Tools API Blog
Sign in Create account

Business days and public holidays

Business days and public holidays is an API that answers the date questions almost every workflow has: is this a business day? what is the due date 10 business days from now? how many business days are there between two dates? which public holidays does a country or region have this year? The holidays are built into our own server: it calls no third party, so it answers in milliseconds and doesn't depend on another service being up.

What you can ask

  • check: whether a date is a business day, whether it's a weekend or a holiday (and which one), and the previous and next business day.
  • add: add N business days to a date (or subtract them, with a negative number). The starting day doesn't count: a Friday plus 1 is the Monday. It tells you which days it skipped.
  • between: counts the business days between two dates, both included (like Excel's NETWORKDAYS), with the weekends and holidays that fell in between.
  • list: the public holidays of a year for a country or region.

You give the country as its two-letter code (ES, US, GB, MX…) and, if you want the holidays of a state, province or region, its code in region (CT for Catalonia, MD for Madrid, CA for California…). If you get a region wrong, the error lists the valid codes.

What's worth knowing (honestly)

Where the holidays come from: an open dataset maintained by the community (date-holidays) that covers 207 countries and territories, with uneven quality. We checked the 2026 national lists of Spain (the annex of the BOE of 28 October 2025), England (gov.uk) and the United States (the federal Office of Personnel Management): they match on every holiday that falls on a weekday. But a one-off holiday announced late can be missing: 15 June 2026 is a bank holiday in Scotland for the World Cup and the dataset doesn't have it. That's what extra_holidays is for. For legal deadlines, payroll or contracts, always confirm the date with the official source.

Weekend: Saturday and Sunday, except in 16 countries where Friday and Saturday is the usual weekend (Saudi Arabia, Egypt, Israel, Iraq, Jordan, Kuwait, Qatar, Bahrain, Oman, Algeria, Bangladesh, Libya, the Maldives, Sudan, Syria and Yemen). If your week is different (a shop open on Saturdays, a country with another custom), send weekend, for example ["fri","sat"]. The response says which weekend it used.

Dates, not times: it works with calendar dates (YYYY-MM-DD), from 2000 to 2100. If you send a date with a time (2026-12-24T18:00:00Z) it uses only the date part, as written: it doesn't change time zone.

Without a region, only national holidays: the response warns you (warnings) if the country has regional holidays that weren't counted. By default the holidays of type public count; with types you can add bank, school, observance or optional. A holiday that starts in the middle of the afternoon (the eve of some festivals) comes with full_day: false and that day is still a business day.

All you need

  • Your API key. Create it in your dashboard with "+ Create key".
  • In your automation platform, an "HTTP Request" step (n8n, Make, Zapier, Pipedream…).

How to use it in n8n

  • Method: POST · URL: https://api.cofferdock.com/business-days
  • Send Headers: x-api-key = your key, Content-Type = application/json
  • Send Body (JSON): { "country": "ES", "date": "2026-12-23", "days": 5 }
  • The resulting date arrives in result (here, 2026-12-31). With a date coming from a previous node, set the value as an expression.

What to send, depending on what you want

I want to…SendYou get
Know if a date is a business daycountry, dateis_business_day, the holiday and the next business day
Add business dayscountry, date, daysresult and the days it skipped
Count business dayscountry, from, tobusiness_days
See the holidays of a yearcountry, yearholidays, a list with date and name

You don't need to say the action: it's deduced from what you send. If you want to be explicit, add action (check, add, between or list).

Data and license

The holidays come from date-holidays (ISC code), an open dataset based mostly on Wikipedia articles, available under the CC BY-SA 3.0 license. The holiday names and dates this API returns come from that dataset: if you publish lists of them, keep this credit and the same license. The calculations (how many business days, which date results) are ours. Every response with a country carries the source in meta.holiday_data.

Supported countries

See the 207 countries and territories

Andorra (AD), United Arab Emirates (AE), Antigua & Barbuda (AG), Anguilla (AI), Albania (AL), Armenia (AM), Angola (AO), Argentina (AR), American Samoa (AS), Austria (AT), Australia (AU), Aruba (AW), Åland Islands (AX), Azerbaijan (AZ), Bosnia and Herzegovina (BA), Barbados (BB), People's Republic of Bangladesh (BD), Belgium (BE), Burkina Faso (BF), Bulgaria (BG), Bahrain (BH), Burundi (BI), Benin (BJ), St. Barths (BL), Bermuda (BM), Brunei (BN), Bolivia (BO), Caribbean Netherlands (BQ), Brazil (BR), Bahamas (BS), Botswana (BW), Belarus (BY), Belize (BZ), Canada (CA), Cocos (Keeling) Islands (CC), Democratic Republic of the Congo (CD), Central African Republic (CF), Republic of the Congo (CG), Switzerland (CH), Republic of Côte d'Ivoire (CI), Cook Islands (CK), Chile (CL), Cameroon (CM), China (CN), Colombia (CO), Costa Rica (CR), Cuba (CU), Cape Verde (CV), Curaçao (CW), Christmas Island (CX), Cyprus (CY), Czech Republic (CZ), Germany (DE), Djibouti (DJ), Denmark (DK), Dominica (DM), Dominican Republic (DO), Algeria (DZ), Ecuador (EC), Estonia (EE), Egypt (EG), Western Sahara (EH), Eritrea (ER), Spain (ES), Ethiopia (ET), Finland (FI), Fiji (FJ), Faroe Islands (FO), France (FR), Gabon (GA), United Kingdom (GB), Grenada (GD), Georgia (GE), French Guiana (GF), Guernsey (GG), Ghana (GH), Gibraltar (GI), Greenland (GL), The Gambia (GM), Guinea (GN), Guadeloupe (GP), Republic of Equatorial Guinea (GQ), Greece (GR), Guatemala (GT), Guam (GU), Guinea-Bissau (GW), Guyana (GY), Hong Kong (HK), Honduras (HN), Croatia (HR), Haiti (HT), Hungary (HU), Canary Islands (IC), Indonesia (ID), Ireland (IE), Israel (IL), Isle of Man (IM), India (IN), Iran (IR), Iceland (IS), Italia (IT), Jersey (JE), Jamaica (JM), Japan (JP), Kenya (KE), Comoros (KM), St. Kitts & Nevis (KN), South Korea (KR), Cayman Islands (KY), Kazakhstan (KZ), St. Lucia (LC), Liechtenstein (LI), Sri Lanka (LK), Liberia (LR), Lesotho (LS), Lithuania (LT), Luxembourg (LU), Latvia (LV), Libya (LY), Kingdom of Morocco (MA), Monaco (MC), Moldova (MD), Montenegro (ME), St. Martin (MF), Madagascar (MG), Macedonia (MK), Republic of Mali (ML), Martinique (MQ), Mauritania (MR), Montserrat (MS), Malta (MT), Mauritius (MU), Malawi (MW), Mexico (MX), Malaysia (MY), Mozambique (MZ), Namibia (NA), New Caledonia (NC), Republic of the Niger (NE), Norfolk Island (NF), Nigeria (NG), Nicaragua (NI), Netherlands (NL), Norway (NO), New Zealand (NZ), Panama (PA), Peru (PE), French Polynesia (PF), Philippines (PH), Pakistan (PK), Poland (PL), St. Pierre & Miquelon (PM), Puerto Rico (PR), Portugal (PT), Paraguay (PY), Réunion (RE), Romania (RO), Serbia (RS), Russia (RU), Rwanda (RW), Saudi Arabia (SA), Seychelles (SC), Sudan (SD), Sweden (SE), Singapore (SG), St. Helena (SH), Slovenia (SI), Svalbard & Jan Mayen (SJ), Slovakia (SK), Sierra Leone (SL), San Marino (SM), Senegal (SN), Somalia (SO), Suriname (SR), South Sudan (SS), São Tomé & Príncipe (ST), El Salvador (SV), Sint Maarten (SX), Swaziland (SZ), Turks & Caicos Islands (TC), Chad (TD), Togolese Republic (TG), Thailand (TH), Tunisia (TN), Tonga (TO), Turkey (TR), Trinidad & Tobago (TT), Taiwan (TW), Tanzania (TZ), Ukraine (UA), Uganda (UG), United States of America (US), Uruguay (UY), Uzbekistan (UZ), Vatican City (VA), St. Vincent & Grenadines (VC), Venezuela (VE), British Virgin Islands (VG), U.S. Virgin Islands (VI), Vietnam (VN), Vanuatu (VU), Wallis and Futuna (WF), Kosovo (XK), Mayotte (YT), South Africa (ZA), Zambia (ZM), Zimbabwe (ZW)