Días laborables y festivos
Días laborables y festivos es una API que responde las preguntas de fechas que aparecen en casi todos los flujos: ¿es laborable este día?, ¿cuál es la fecha de entrega a 10 días laborables?, ¿cuántos días laborables hay entre dos fechas?, ¿qué festivos tiene este año un país o una comunidad? Los festivos vienen incluidos en nuestro propio servidor: no consulta a ningún tercero, así que responde en milisegundos y no depende de que otro servicio esté abierto.
Qué puedes preguntarle
check: si una fecha es laborable, si es fin de semana o festivo (y cuál), y cuál es el día laborable anterior y el siguiente.add: suma (o resta, con un número negativo) N días laborables a una fecha. El día de partida no cuenta: un viernes más 1 es el lunes. Te dice qué días saltó.between: cuenta los días laborables entre dos fechas, las dos incluidas (como NETWORKDAYS de Excel), con los fines de semana y festivos que cayeron en medio.list: los festivos de un año de un país o de una región.
Das el país con su código de dos letras (ES, US, GB, MX…) y, si quieres los festivos de una comunidad, estado o región, su código en region (CT para Cataluña, MD para Madrid, CA para California…). Si te equivocas de región, el error te lista los códigos válidos.
Lo que conviene saber (en serio)
De dónde salen los festivos: de un conjunto de datos abierto mantenido por la comunidad (date-holidays) que cubre 207 países y territorios, con calidad desigual. Comprobamos las listas nacionales de 2026 de España (el anexo del BOE del 28 de octubre de 2025), Inglaterra (gov.uk) y Estados Unidos (la Oficina federal de Personal): coinciden en todos los festivos que caen entre semana. Pero un festivo de un solo año anunciado tarde puede faltar: el 15 de junio de 2026 es festivo bancario en Escocia por el Mundial y el conjunto de datos no lo trae. Para eso existe extra_holidays. Para plazos legales, nóminas o contratos, confirma siempre la fecha con la fuente oficial.
Fin de semana: sábado y domingo, salvo en 16 países donde el habitual es viernes y sábado (Arabia Saudí, Egipto, Israel, Irak, Jordania, Kuwait, Catar, Baréin, Omán, Argelia, Bangladés, Libia, Maldivas, Sudán, Siria y Yemen). Si tu semana es distinta (una tienda que abre los sábados, un país con otra costumbre), manda weekend, por ejemplo ["fri","sat"]. La respuesta dice qué fin de semana usó.
Fechas, no horas: trabaja con fechas de calendario (AAAA-MM-DD), de 2000 a 2100. Si mandas una fecha con hora (2026-12-24T18:00:00Z) solo usa la parte de la fecha, tal como está escrita: no cambia de zona horaria.
Sin región, solo los festivos nacionales: la respuesta te avisa (warnings) si el país tiene festivos regionales que no se contaron. Por defecto cuentan los festivos de tipo public; con types puedes añadir bank, school, observance u optional. Un festivo que empieza a media tarde (la víspera de algunas fiestas) sale con full_day: false y ese día sigue siendo laborable.
Lo único que necesitas
- Tu API key. La creas en tu panel con "+ Crear llave".
- En tu plataforma de automatización, un paso de tipo "HTTP Request" (n8n, Make, Zapier, Pipedream…).
Cómo usarlo en n8n
- Method:
POST· URL:https://api.cofferdock.com/business-days - Send Headers:
x-api-key= tu llave,Content-Type=application/json - Send Body (JSON):
{ "country": "ES", "date": "2026-12-23", "days": 5 } - La fecha resultante llega en
result(aquí,2026-12-31). Con una fecha que viene de un nodo anterior, pon el valor como expresión.
Qué mandar según lo que quieras
| Quiero… | Manda | Recibes |
|---|---|---|
| Saber si una fecha es laborable | country, date | is_business_day, el festivo y el siguiente día laborable |
| Sumar días laborables | country, date, days | result y los días que saltó |
| Contar días laborables | country, from, to | business_days |
| Ver los festivos de un año | country, year | holidays, una lista con fecha y nombre |
No hace falta decir la acción: se deduce de lo que mandas. Si quieres ser explícito, añade action (check, add, between o list).
Resumen de la API
- Endpoint:
POST https://api.cofferdock.com/business-days - Auth: cabecera
x-api-key: TU_LLAVE. - Entrada: JSON. Las opciones también pueden ir en la query (las listas, separadas por comas).
- Cálculo: local, sin navegador y sin llamadas a ningún tercero. Cada llamada tarda milisegundos.
- Errores:
400si falta un dato o no es válido (país o región que no existen, fecha imposible, resultado fuera de 2000 a 2100): no se cobra. - Límites: 60 peticiones/min por IP.
daysde -3650 a 3650, rangos de hasta 20 años, hasta 100 fechas enextra_holidays. 1 llamada = 1 crédito.
Opciones
| Opción | Por defecto | Descripción |
|---|---|---|
action | deducida | check, add, between o list. Si falta: con days es add; con from/to, between; con year, list; con date, check. |
country | - | Código ISO de dos letras. Obligatorio en list; en las demás, sin él solo se saltan los fines de semana (la respuesta lo avisa). |
region | - | Código de la comunidad, estado o región (necesita country). |
date | - | AAAA-MM-DD. En check y add. |
days | - | Entero de -3650 a 3650. En add. Con 0, una fecha no laborable pasa al siguiente día laborable y una laborable se queda. |
from, to | - | Rango, los dos días incluidos. En between. |
year | - | De 2000 a 2100. En list. |
weekend | sábado y domingo (viernes y sábado en 16 países) | Lista de días, por ejemplo ["fri","sat"] o "fri,sat". Vacía = ningún fin de semana. No pueden ser los siete días. |
types | ["public"] | Tipos de festivo que cuentan: public, bank, school, observance, optional. |
extra_holidays | - | Hasta 100 fechas más que cuentan como no laborables (un festivo de un solo año, el cierre de tu empresa). |
language | en | Idioma de los nombres de los festivos (es, fr…), si el país lo tiene; si no, el local. |
Ejemplos
# ¿Cuál es el día laborable 5 días después del 23/12/2026 en España?
curl -X POST "https://api.cofferdock.com/business-days" \
-H "x-api-key: TU_LLAVE" -H "Content-Type: application/json" \
-d '{ "country": "ES", "date": "2026-12-23", "days": 5 }'
{ "success": true, "action": "add", "country": "ES", "region": null,
"weekend": ["Saturday", "Sunday"], "weekend_source": "default",
"date": "2026-12-23", "days": 5, "result": "2026-12-31", "result_weekday": "Thursday",
"skipped": { "weekend_days": 2, "holidays": [ { "date": "2026-12-25", "name": "Christmas Day", "type": "public" } ] },
"warnings": [ "ES has regional holidays that were not included: ..." ],
"meta": { "used": 12, "remaining": 488, "holiday_data": "date-holidays 3.37.0, CC BY-SA 3.0 (...)" } }
# ¿Es laborable el 25/12/2026?
{ "country": "ES", "date": "2026-12-25" }
→ { "is_business_day": false, "is_holiday": true,
"holidays": [ { "name": "Christmas Day", "type": "public", "substitute": false, "full_day": true } ],
"next_business_day": "2026-12-28", "previous_business_day": "2026-12-24", ... }
# Días laborables del 21 al 31/12/2026 (los dos incluidos)
{ "country": "ES", "from": "2026-12-21", "to": "2026-12-31" }
→ { "calendar_days": 11, "business_days": 8, "weekend_days": 2, "holiday_days": 1, ... }
# Festivos de Cataluña en 2026
{ "country": "ES", "region": "CT", "year": 2026 }
→ { "count": 14, "holidays": [ { "date": "2026-01-01", "weekday": "Thursday", "name": "New Year's Day",
"type": "public", "substitute": false, "full_day": true }, ... ] }
Datos y licencia
Los festivos vienen de date-holidays (código ISC), un conjunto de datos abierto basado sobre todo en artículos de Wikipedia, disponible bajo la licencia CC BY-SA 3.0. Los nombres y fechas de festivos que devuelve esta API salen de ese conjunto de datos: si publicas listas de ellos, mantén este crédito y la misma licencia. Los cálculos (cuántos días laborables, qué fecha resulta) son nuestros. Cada respuesta con país lleva la fuente en meta.holiday_data.
Países que admite
Ver los 207 países y territorios
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)