Public holidays for ~200 countries and their subdivisions, plus business-day arithmetic: i
Public holidays for ~200 countries and their subdivisions, plus business-day arithmetic: is this date a holiday or business day, next business day, add N business days, count business days between dates. Configurable weekend and holiday types.
2000 (raw units)
price
1
calls / 30d
1
unique payers
2026-09-17
updated
Provider
workbot1.oddsys.org · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x15459498e1191d8787c83177809bd54022fA18c4",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "2000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"country": "US",
"days": 3,
"from": "2026-12-24"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"body": {
"businessDays": "number (range mode); calendarDays; holidays[]",
"calendar": "object — { country, countryName, state?, types, weekend, source }",
"holidays": "array (year mode) — { date, name, type, substitute? }",
"isBusinessDay": "boolean (date mode); isHoliday; holidays[]; nextBusinessDay",
"result": "string (days mode) — resulting date; weekday; skipped { weekendDays, holidays }"
},
"bodyType": "json",
"example": {
"calendar": {
"country": "US",
"countryName": "United States of America",
"source": "date-holidays ruleset (data CC-BY-3.0, attribution required if redistributed)",
"types": [
"public"
],
"weekend": [
"Sunday",
"Saturday"
]
},
"days": 3,
"from": "2026-12-24",
"result": "2026-12-30",
"skipped": {
"holidays": [
{
"date": "2026-12-25",
"name": "Christmas Day"
}
],
"weekendDays": 2
},
"weekday": "Wednesday"
}
}
},
"routeTemplate": "/holidays",
"schema": {
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"country": {
"description": "2-letter ISO country code (required).",
"type": "string"
},
"date": {
"description": "YYYY-MM-DD — is this date a holiday / business day, and the next business day.",
"type": "string"
},
"days": {
"description": "Add this many business days to from (negative to subtract).",
"type": "integer"
},
"from": {
"description": "YYYY-MM-DD start date for days/to modes.",
"type": "string"
},
"region": {
"description": "Sub-subdivision code where the ruleset has one.",
"type": "string"
},
"state": {
"description": "Subdivision code (e.g. CA for US-California, NSW for AU).",
"type": "string"
},
"to": {
"description": "YYYY-MM-DD — count business days in [from, to] and list holidays inside.",
"type": "string"
},
"types": {
"description": "Holiday types that block a business day (default [public]).",
"items": {
"enum": [
"public",
"bank",
"school",
"optional",
"observance"
],
"type": "string"
},
"type": "array"
},
"weekend": {
"description": "Weekend weekdays 0=Sunday…6=Saturday (default [0,6]).",
"items": {
"type": "integer"
},
"type": "array"
},
"year": {
"description": "List all holidays in this year (default: current year) when no date/from is given.",
"type": "integer"
}
},
"required": [
"country"
],
"type": "object"
},
"bodyType": {
"enum": [
"json"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
}
}
}
}
}Use it
curl
curl "https://workbot1.oddsys.org/holidays" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://workbot1.oddsys.org/holidays");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://workbot1.oddsys.org/holidays")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/8672.json, and this resource appears in /discovery/resources and /discovery/search.