Colombia Holiday API
Colombia has 18 public holidays — but 18 of them can shift to the following Monday under Ley Emiliani. The API returns the actual celebration date for each year, so you never have to implement that logic yourself.
Free plan includes commercial use · no credit card required
Why Colombia's calendar can't be hardcoded
Colombia's Ley 51 de 1983 — known as Ley Emiliani — establishes that most public holidays move to the following Monday when they don't fall on a Sunday. This makes Colombia the hardest LATAM country to handle with a static list.
Epifanía is always January 6th, but it's celebrated between January 7th and 13th depending on the year. You can't reuse a holiday list from one year to the next.
Ascensión del Señor, Corpus Christi, and Sagrado Corazón are calculated from the date of Easter — which changes every year. They can't be hardcoded even in principle.
The API returns the actual celebration date (the Monday it was shifted to), not the original calendar date. Your code just needs to check the date — no Ley Emiliani logic required.
API response for Colombia
The API returns the shifted date directly. Epifanía is January 6th by origin, but the response shows January 12th — the Monday it's actually observed in 2026.
{
"success": true,
"data": [
{
"date": "2026-01-12",
"name": "Reyes Magos",
"original_date": "2026-01-06",
"shifted": true,
"type": "national"
},
{
"date": "2026-03-23",
"name": "San José",
"original_date": "2026-03-19",
"shifted": true,
"type": "national"
},
{
"date": "2026-08-10",
"name": "Batalla de Boyacá",
"original_date": "2026-08-07",
"shifted": true,
"type": "national"
}
],
"meta": { "country": "CO", "year": 2026, "total": 18 }
} {
"success": true,
"data": {
"date": "2026-01-06",
"is_business_day": true,
"day_of_week": "Tuesday"
},
"meta": { "country": "CO" }
}
// Jan 6 is a regular business day — the holiday was shifted to Jan 12 Endpoints for Colombia
Replace :country with CO.
Free plan includes holidays, is-business-day, and next-holiday.
/v1/CO/holidays/:year Free All holidays for Colombia, with actual celebration dates. Shifted holidays include the original_date and a shifted: true flag.
"shifted": true, "original_date": "2026-01-06" /v1/CO/is-business-day?date=YYYY-MM-DD Free Check if a date is a business day in Colombia. Accounts for Ley Emiliani — the shifted Monday, not the original date.
"is_business_day": false, "holiday_name": "Reyes Magos" /v1/CO/business-days/add?date=YYYY-MM-DD&days=N Starter Add N business days to a date, skipping weekends and Colombian holidays (including Emiliani-shifted dates).
"result_date": "2026-01-16" /v1/CO/business-days/between?from=YYYY-MM-DD&to=YYYY-MM-DD Starter Count business days between two dates in Colombia. November is particularly tricky — Todos los Santos and Independencia de Cartagena both shift.
"business_days": 18 /v1/CO/last-business-day?date=YYYY-MM-DD Starter Last business day of the month for the given date. Useful for billing and payroll cutoffs.
"last_business_day": "2026-11-28" Checking a date without implementing Ley Emiliani
The classic Colombia bug: checking January 6th when the actual holiday is January 12th.
const API = "https://api.feriados.io/v1";
const KEY = process.env.FERIADOS_API_KEY;
// ❌ Wrong: hardcoding original holiday dates
const wrongHolidays = ["2026-01-06"]; // Epifanía
// Jan 6 is a regular business day in 2026 — the holiday is on Jan 12
// ✅ Correct: ask the API
async function isBusinessDay(date) {
const res = await fetch(
`${API}/CO/is-business-day?date=${date}`,
{ headers: { Authorization: `Bearer ${KEY}` } }
);
const { data } = await res.json();
return data.is_business_day;
}
await isBusinessDay("2026-01-06"); // → true (regular business day)
await isBusinessDay("2026-01-12"); // → false (Reyes Magos, shifted from Jan 6) Common use cases for Colombia
November is the highest-risk month — two holidays shift in the same month, reducing it to 18 business days.
A charge on January 12th fails — but your code checked January 6th and thought it was safe. Ley Emiliani makes original dates unreliable.
is-business-day Free Delivery SLAs in Colombia can't be calculated with a static calendar — the shifted dates change every year.
business-days/add Starter Payroll for Colombian employees needs the actual worked days, not the calendar dates. November has 18 business days — not 22.
business-days/between Starter Legal deadlines run in business days. Miscounting a shifted holiday means miscounting the SLA.
business-days/between Starter Also available for 10 more LATAM countries
Same API, same endpoints — just swap the country code.
Ready for production
Free API key in 30 seconds. Free plan includes is-business-day for Colombia with commercial use.
Starter plan from $9/mo for full operational logic.