Comparison · Holiday APIs for LATAM

feriados.io vs Holiday API

Both return holiday data and both have workday calculation endpoints. The difference is depth of LATAM coverage: transfer rules, irrenunciable flags, and real-time decree monitoring for Argentina.

The core difference

Holiday API is a global-first holiday data provider with basic workday arithmetic. feriados.io is a LATAM-first business calendar engine built specifically around how Latin American governments actually manage their calendars.

If you're building a product that operates in Latin America — not just displaying holidays, but processing payments, calculating payroll, computing delivery dates, or enforcing SLAs — the accuracy of the underlying data matters more than the number of countries covered.

Feature comparison

Feature feriados.io Holiday API
Holiday data by country
Add N business days to a date Both support this
Count business days between dates Both support this
Subtract N business days Holiday API workday endpoint goes forward only Partial
Last business day of the month Not available in Holiday API
Validate if date is a business day No direct is-business-day endpoint
Batch date validation (up to 366 dates) Not available in Holiday API
Custom business calendars Add company-specific non-working days as overlay ✓ Starter+
Chile irrenunciable flag feriados.io-specific field
Colombia Ley Emiliani (verified shifted dates) Not documented in Holiday API docs Unclear
Mexico floating Monday (verified) Not documented in Holiday API docs Unclear
Argentina decree puentes (near real-time) Update cadence not documented Unclear
Decree alerts via webhook ✓ Business
Live iCal subscription URL ✓ Team+
Free plan with commercial use Holiday API free is restricted to historical data only Limited
LATAM countries 11 11+
Global countries Holiday API has broader global coverage 11 100+

Why LATAM accuracy matters more than you think

A holiday API that lists January 6th as "Reyes Magos" in Colombia is technically correct — that is the holiday. But January 6th is a regular business day in 2026. The holiday is observed on January 12th. If your payment processor checks January 6th and gets "holiday", it's wrong. If it checks January 12th and doesn't know it's a holiday, it's also wrong.

🇨🇴 Colombia
Ley Emiliani

18 of 20 holidays shift to the following Monday. Checking original dates gives wrong results. feriados.io returns the actual observed date and flags it as shifted.

🇨🇱 Chile
Irrenunciable flag

7 holidays cannot legally be worked. The API response flags each holiday as irrenunciable: true or false — a distinction Holiday API doesn't surface in their responses.

🇦🇷 Argentina
Decree puentes

2–4 bridge holidays are decreed mid-year, sometimes with 10 days notice. feriados.io updates within 24 hours. Whether Holiday API does the same is not documented.

When to choose each

Choose feriados.io if:
  • Your product operates in Latin America and correctness matters (fintech, payroll, logistics)
  • You need irrenunciable flag for Chile — HR or payroll systems
  • You process payments in Colombia and need Ley Emiliani handled correctly
  • You need real-time decree monitoring for Argentina
  • You want is-business-day as a validation step before running transactions
  • You need last-business-day for monthly cutoffs and billing
  • You want predictable, transparent pricing without annual lock-in surprises
Choose Holiday API if:
  • You need holiday coverage for countries outside Latin America
  • Basic workday arithmetic is enough and LATAM transfer rules are not a concern
  • You need state or province-level data across many global regions
  • Your use case doesn't require real-time decree monitoring

What you'd have to build yourself with Holiday API

Holiday API has no is-business-day endpoint. To check if a date is workable in Colombia you'd need to fetch the year's holidays, apply Ley Emiliani shift logic, then evaluate the date. feriados.io handles all of that in a single request.

With Holiday API — you build this
// 1. Fetch all holidays for the year
const { response } = await holidayapi.holidays({
  country: "CO", year: 2026
});

// 2. Apply Ley Emiliani shift logic yourself
// (18 of 20 Colombian holidays move to Monday)
function applyEmiliani(holidays) {
  return holidays.map(h => {
    const d = new Date(h.date);
    if (EMILIANI_HOLIDAYS.includes(h.name)) {
      // find next Monday...
    }
    return h;
  });
}
const observed = applyEmiliani(response.holidays);

// 3. Check weekend + holiday lookup
const day = new Date(targetDate).getDay();
const isWeekend = day === 0 || day === 6;
const isHoliday = observed.some(h => h.date === targetDate);

// 4. Finally answer the question
const isBusinessDay = !isWeekend && !isHoliday;
With feriados.io — one request
// One API call — done
const res = await fetch(
  "https://api.feriados.io/v1/CO" +
  "/is-business-day?date=2026-01-12",
  { headers: { Authorization: `Bearer ${KEY}` } }
);

const { data } = await res.json();
// data.is_business_day → true
// data.holiday → null
//
// Jan 6 (Reyes Magos) is observed Jan 12
// per Ley Emiliani — already handled.
Holiday API — subtracting business days
// Not available — Holiday API workday
// endpoint only goes forward.
// You'd need to implement a reverse loop:
let current = new Date(fromDate);
let counted = 0;
while (counted < daysToSubtract) {
  current.setDate(current.getDate() - 1);
  // check weekend + fetch holidays...
  if (isWorkday(current, holidays)) counted++;
}
// Result: many requests + custom logic
feriados.io — one request
const res = await fetch(
  "https://api.feriados.io/v1/CO" +
  "/business-days/subtract" +
  "?fromDate=2026-03-10&days=5",
  { headers: { Authorization: `Bearer ${KEY}` } }
);
const { data } = await res.json();
// data.result_date → "2026-03-03"
// (Argentina/Colombia rules applied)

Migrating from Holiday API

The main changes are: move the API key from a query param to a header, move the country into the URL path, and update the response field name. Workday arithmetic endpoints have direct equivalents — plus several new ones not available in Holiday API.

In Holiday API In feriados.io What changes
GET /v1/holidays
?key=KEY&country=CO&year=2026
GET /v1/CO/holidays/2026
Authorization: Bearer KEY
Key moves to header. Country and year go in the URL path.
response.holidays[] data[] Rename the array in your code.
GET /v1/workday
?key=KEY&country=CO&start=...&days=N
POST /v1/CO/business-days/add
?fromDate=...&days=N
Method changes to POST. Key moves to header. Response field: result_date.
Not available (forward only) POST /v1/CO/business-days/subtract
?fromDate=...&days=N
New. Subtract N business days from a date.
Not available GET /v1/CO/is-business-day
?date=YYYY-MM-DD
New. Validate a date directly — no holiday list needed.
Not available POST /v1/CO/business-days/between
?fromDate=...&toDate=...
New. Count business days between two dates.
Not available GET /v1/CO/last-business-day
?date=YYYY-MM-DD
New. Last business day of the month.
Minimal diff — updating a workday calculation
// Before (Holiday API)
const { response } = await holidayapi.workday({
  country: "CO", start: "2026-01-07", days: 5
});
const resultDate = response.workday.date;

// After (feriados.io)
const res = await fetch(
  "https://api.feriados.io/v1/CO/business-days/add?fromDate=2026-01-07&days=5",
  { headers: { Authorization: `Bearer ${process.env.FERIADOS_API_KEY}` } }
);
const { data } = await res.json();
const resultDate = data.result_date;
// Also includes: data.from, data.business_days_added, data.country

An honest note on this comparison

Holiday API's documentation on LATAM transfer rules (Ley Emiliani, floating Mondays, Argentina puentes) is not publicly detailed. We've marked those rows as "Unclear" rather than assume they don't handle them. If accurate LATAM date logic is critical to your product, we recommend testing both APIs against known edge cases — like January 12th in Colombia 2026, or February 2nd vs February 5th in Mexico 2026.

feriados.io is purpose-built for LATAM and we document exactly how each country's transfer rules work. You can verify our logic against the Colombia 2026 holiday list or the Mexico 2026 floating Monday dates.

Try feriados.io free

Free API key in 30 seconds. 1,000 requests/month with commercial use. Test against any of the LATAM edge cases above — no credit card required.

Also comparing: vs Calendarific · vs Nager.Date →