100+ countries · REST API

Public Holidays API
for the entire world

One token. One request. Always up-to-date holidays.
Built for LATAM where rules change at the last minute.

100+Countries
<30msAvg latency
1 lineTo integrate
# All public holidays for Argentina 2026
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.puntuapp.com/v1/holidays?country=AR&year=2026"

# Is Dec 25 a holiday in Nigeria?
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.puntuapp.com/v1/holidays/check?country=NG&date=2026-12-25"

# Working days in January 2026 in Brazil
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.puntuapp.com/v1/holidays/working-days?country=BR&from=2026-01-01&to=2026-01-31"
import requests

HEADERS = {"Authorization": "Bearer YOUR_TOKEN"}
BASE    = "https://api.puntuapp.com"

resp = requests.get(f"{BASE}/v1/holidays",
                    headers=HEADERS,
                    params={"country": "IL", "year": 2026})
for h in resp.json()["data"]:
    print(f"{h['date']}  {h['name']}")
const BASE  = 'https://api.puntuapp.com'
const TOKEN = process.env.PUNTUAPP_TOKEN

// Next 5 holidays in USA
const res = await fetch(
  `${BASE}/v1/holidays/next?country=US&count=5`,
  { headers: { Authorization: `Bearer ${TOKEN}` } }
)
const { data } = await res.json()
console.log(data) // [{date, name, type, substitute}, ...]
$ch = curl_init(
  "https://api.puntuapp.com/v1/holidays?country=MX&year=2026"
);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_TOKEN"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body = json_decode(curl_exec($ch), true);
foreach ($body['data'] as $h)
    echo "{$h['date']} — {$h['name']}\n";
200 OK Response
{
  "data": [
    { "date": "2026-01-01", "name": "Año Nuevo",   "type": "public" },
    { "date": "2026-02-16", "name": "Carnaval",    "type": "public" },
    { "date": "2026-04-02", "name": "Malvinas",   "type": "public" },
    /* ... 16 more */
  ],
  "meta": { "country": "AR", "year": 2026, "count": 19, "responseTimeMs": 8 }
}

Used by developers building

HR Systems Payroll SaaS Scheduling Apps ERPs Fintech E-commerce Logistics

Everything you need,
nothing you don't

Stop scraping Wikipedia or maintaining CSV files. One token gives you accurate, always-updated holiday data for the entire world.

100+ countries

Argentina, USA, Israel, Nigeria, Brazil, India, Germany and more. Full LATAM coverage including sub-national holidays.

Working days calculator

Count business days between two dates for any country, excluding weekends and public holidays automatically.

Always up-to-date

LATAM governments announce holidays last minute. Our dataset is continuously updated — zero maintenance on your side.

REST JSON only

Clean JSON responses. No SOAP, no WSDL, no complex auth. Bearer token in the header, get your data.

Usage dashboard

Monitor requests, credits remaining, and all your API keys. No billing surprises at end of month.

Multiple API keys

Create tokens per environment (dev/staging/prod), per client, or team. Revoke in one click from the dashboard.

6 endpoints.
All you need.

01

GET /v1/holidays

List all holidays for a country and year. Filter by month or type (public, bank, school, observance).

02

GET /v1/holidays/check

Check if a specific date is a holiday. Returns the holiday name and type if it matches.

03

GET /v1/holidays/next

Get the next N upcoming holidays from any date. Perfect for "next holiday" countdown widgets.

04

GET /v1/holidays/working-days

Count net working days between two dates. Returns weekends, public holidays, and working day count.

05

GET /v1/holidays/states

List regions for countries with sub-national holidays (USA, Australia, Germany, Brazil…).

06

GET /v1/holidays/countries

Free endpoint — list all 100+ supported countries with ISO codes and flag emojis.

# Working days in January 2026 — Mexico
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.puntuapp.com/v1/holidays/working-days?country=MX&from=2026-01-01&to=2026-01-31"

# {"workingDays":21,"totalDays":31,"weekends":8,"publicHolidays":2,...}

See it in action

Holiday data for 10 countries, fetched right now from our API. Toggle countries to filter the view.

Loading holiday data…

Powered by GET /v1/holidays/calendar — a free, public endpoint with no auth required.

Simple, predictable,
no surprises

Start free. Scale when you need.

Starter
Freeforever
  • 500 requests / month
  • All 100+ countries
  • 1 API token
  • Basic dashboard
  • Email support
Start for free
Pro
$99USD / month
  • 100,000 requests / month
  • All 6 endpoints
  • Unlimited tokens
  • 99.5% SLA
  • Dedicated onboarding
  • Private Slack
Start 14-day trial

Enterprise

High volume, custom SLA, ARS invoicing, 24/7 support.

Contact sales →

Start querying holidays now

Create your account, generate a token, and make your first request in under 2 minutes.