feriados.io ← Inicio
apienglishbusiness-dayslatam

Business Days API for Latin America: a Developer's Guide

How to check if a date is a business day in Chile, Colombia, Mexico, Argentina and 7 more LATAM countries using a single REST API. Free plan available.

12 de febrero de 2026

If you’re building a product that operates in Latin America and need to know whether a given date is a business day, you have two options: maintain holiday lists for each country yourself, or use an API that does it for you.

This guide covers what you need to know to implement business day validation for LATAM countries, and where the complexity hides.

Why LATAM is harder than it looks

Most developers assume holiday calendars are simple: a list of fixed dates per year. In Latin America, that assumption breaks quickly.

Colombia moves 8 holidays to the following Monday every year (Ley Emiliani). The actual celebration date changes each year based on what day of the week the original date falls on. You can’t reuse last year’s list.

Argentina adds 2-4 extra “bridge holidays” per decree throughout the year, sometimes announced 2-3 weeks in advance. No one knows at the start of the year how many there will be.

Mexico has election-year considerations and some regional holidays that affect operations in specific states.

Brazil (not yet covered) has state-level holidays that vary significantly — São Paulo has different non-working days than Rio de Janeiro.

The point: a hardcoded list per country isn’t just inconvenient. For several countries, it’s architecturally wrong.

What you actually need

For most applications, the endpoints you’ll use are:

# Is this date a business day?
GET /v1/{country}/is-business-day?date=YYYY-MM-DD

# Add N business days to a date
GET /v1/{country}/business-days/add?date=YYYY-MM-DD&days=N

# Count business days between two dates
GET /v1/{country}/business-days/between?from=YYYY-MM-DD&to=YYYY-MM-DD

# Get all holidays for a year
GET /v1/{country}/holidays/{year}

# Next upcoming holiday
GET /v1/{country}/next-holiday

Country codes follow ISO 3166-1 alpha-2: CL (Chile), CO (Colombia), MX (Mexico), AR (Argentina), PE (Peru), UY (Uruguay), PY (Paraguay), BO (Bolivia), EC (Ecuador), CR (Costa Rica), PA (Panama).

Authentication

All endpoints require a Bearer token:

curl "https://api.feriados.io/v1/CL/is-business-day?date=2026-04-03" \
  -H "Authorization: Bearer frd_your_api_key"

Response:

{
  "success": true,
  "data": {
    "date": "2026-04-03",
    "is_business_day": false,
    "day_of_week": "Friday"
  },
  "meta": { "country": "CL", "total": 1 }
}

Code examples

Node.js

const API = "https://api.feriados.io/v1";
const HEADERS = { "Authorization": `Bearer ${process.env.FERIADOS_API_KEY}` };

// Check if today is a business day
async function isBusinessDay(country, date) {
  const res = await fetch(
    `${API}/${country}/is-business-day?date=${date}`,
    { headers: HEADERS }
  );
  const { data } = await res.json();
  return data.is_business_day;
}

// Calculate delivery date (N business days from now)
async function getDeliveryDate(country, fromDate, businessDays) {
  const res = await fetch(
    `${API}/${country}/business-days/add?date=${fromDate}&days=${businessDays}`,
    { headers: HEADERS }
  );
  const { data } = await res.json();
  return data.result_date;
}

// Usage
const today = new Date().toISOString().slice(0, 10);
const isWorkday = await isBusinessDay("CO", today);
const deliveryDate = await getDeliveryDate("MX", today, 5);

Python

import os
import requests
from datetime import date

API = "https://api.feriados.io/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['FERIADOS_API_KEY']}"}

def is_business_day(country: str, check_date: str) -> bool:
    r = requests.get(
        f"{API}/{country}/is-business-day",
        params={"date": check_date},
        headers=HEADERS
    )
    return r.json()["data"]["is_business_day"]

def add_business_days(country: str, start_date: str, days: int) -> str:
    r = requests.get(
        f"{API}/{country}/business-days/add",
        params={"date": start_date, "days": days},
        headers=HEADERS
    )
    return r.json()["data"]["result_date"]

# Usage
today = date.today().isoformat()
if not is_business_day("AR", today):
    print("Today is a holiday in Argentina, skipping job")

Multi-country example

The same interface works across all 11 countries:

const countries = ["CL", "CO", "MX", "AR", "PE"];

// Check business day status for all countries at once
const results = await Promise.all(
  countries.map(async (country) => {
    const res = await fetch(
      `${API}/${country}/is-business-day?date=${today}`,
      { headers: HEADERS }
    );
    const { data } = await res.json();
    return { country, isBusinessDay: data.is_business_day };
  })
);

// { country: 'CL', isBusinessDay: true }
// { country: 'CO', isBusinessDay: false }  ← holiday in Colombia
// { country: 'MX', isBusinessDay: true }
// ...

Pricing

PlanRequests/monthBusiness day logicPrice
Free1,000Basic validation only (is-business-day, holidays, next-holiday)$0
Starter25,000Full (add, subtract, between, last)$9/mo
Team100,000Full + iCal live feed$19/mo
BusinessFair useFull + legislative alerts & webhooks$59/mo

The Free plan includes commercial use. No credit card required.

Get your API key at feriados.io/register.


See also: Chile Holiday API → · Colombia Holiday API → · Mexico Holiday API → · Argentina Holiday API → · Peru Holiday API → · Why your app fails on holidays → · Full API documentation →

Integra feriados.io en tu proyecto

API key gratis en 30 segundos. Sin tarjeta. 11 países de Latinoamérica, siempre actualizada con los feriados oficiales.

← Ver todos los artículos