Business days API that tells you
exactly what it skipped.
DST transitions, public holidays, timezones across 100+ countries.
WorkdayAPI handles all of it — and unlike every other API, it returns
a skipped array with each excluded date and the reason why.
Free tier: 100 requests/mo · Pro from $9/mo · See all plans
DST-safe arithmetic
All datetime math uses Luxon's dt.plus({ hours: 1 }) — never raw milliseconds. Spring-forward days have 23 clock hours. Handled correctly, automatically.
100+ countries
Public holiday data via Nager.Date, covering 100+ countries. Fetched lazily, cached 24 hours. Australia, US, UK, Germany, Japan and more.
The skipped array
Every response lists the dates that were excluded — with the holiday name or "weekend" label. Debug a wrong deadline in seconds, not after a support ticket.
Try it live
Real requests to the API, right from your browser. Pre-filled with a Christmas holiday
example to immediately showcase the skipped array.
Endpoints
All endpoints return JSON. No authentication on your side — key management is handled by RapidAPI upstream.
GET /health Server health check
Example
Response
GET /is-business-day Check if a date is a business day
Query Parameters
| date | string | required | Date in YYYY-MM-DD format |
| country | string | required | ISO 3166-1 alpha-2 country code (e.g. AU, US, GB) |
| timezone | string | optional | IANA timezone string. Default: UTC |
Example
Response
POST /add-business-hours Add business hours to a datetime
Request Body (JSON)
| start | string | required | ISO 8601 datetime (e.g. 2026-12-24T14:00:00) |
| hours | integer | required | Business hours to add (0–10000) |
| country | string | required | ISO 3166-1 alpha-2 country code |
| timezone | string | optional | IANA timezone string. Default: UTC |
Example
Response
POST /add-business-days Add business days to a date
Request Body (JSON)
| start | string | required | Start date YYYY-MM-DD |
| days | integer | required | Business days to add (0–10000) |
| country | string | required | ISO 3166-1 alpha-2 country code |
| timezone | string | optional | IANA timezone string. Default: UTC |
Example
Response
GET /business-days-between Count business days in a date range
Query Parameters
| start | string | required | Start date YYYY-MM-DD |
| end | string | required | End date YYYY-MM-DD (must be ≥ start) |
| country | string | required | ISO 3166-1 alpha-2 country code |
| timezone | string | optional | IANA timezone string. Default: UTC |
Example
Response
GET /next-business-day Find the next business day after a date
Query Parameters
| date | string | required | Date in YYYY-MM-DD format |
| country | string | required | ISO 3166-1 alpha-2 country code |
| timezone | string | optional | IANA timezone string. Default: UTC |
Example
Response
Error codes
All errors return a consistent JSON shape with a machine-readable code field.
| Code | HTTP | Description |
|---|---|---|
| MISSING_PARAM | 400 | A required query or body parameter is absent |
| INVALID_DATE | 400 | Date is not YYYY-MM-DD or not a real calendar date |
| INVALID_COUNTRY | 400 | Country code not supported by Nager.Date |
| INVALID_TIMEZONE | 400 | Timezone is not a valid IANA string |
| INPUT_TOO_LARGE | 400 | hours or days value would span more than 500 calendar days |
| HOLIDAY_SERVICE_UNAVAILABLE | 503 | Nager.Date is temporarily unreachable. Retry-After: 30s |
Simple, usage-based pricing
All plans via RapidAPI. No credit card required to start. Upgrade or cancel any time.
Try the API with no commitment.
- 100 requests / month
- All 5 endpoints
- 121 countries
- Full
skippedarray - No SLA
- Community support
For apps and workflows that need reliable business day calculations daily.
- 5,000 requests / month
- All 5 endpoints
- 121 countries
- Full
skippedarray - 99.9% uptime SLA
- Email support
For production systems handling high call volumes across multiple integrations.
- 50,000 requests / month
- All 5 endpoints
- 121 countries
- Full
skippedarray - 99.9% uptime SLA
- Priority support
All plans managed through RapidAPI. Need more than 50,000 requests? Contact us for custom volume pricing.