Trading Days API

API Reference

Base URL: https://api.tradingdays.net

Authentication

Send your API key via the X-Api-Key header or Authorization: Bearer. Keys start with td_live_ (production) or td_test_ (test).

GET /holidays

List market holidays for an exchange. Filters: exchange (code or MIC), country, year, date_from, date_to, type, status, limit, offset.

curl -H "X-Api-Key: YOUR_KEY" "https://api.tradingdays.net/holidays?exchange=NYSE&year=2026"

GET /status

Is this exchange open on this date? Returns is_open, status (open / closed / partial / weekend), and holiday name.

curl -H "X-Api-Key: YOUR_KEY" "https://api.tradingdays.net/status?exchange=NYSE&date=2026-12-25"

GET /next-trading-day

Given a date, returns the next trading day for the exchange.

curl -H "X-Api-Key: YOUR_KEY" "https://api.tradingdays.net/next-trading-day?exchange=NYSE&date=2026-12-24"

GET /exchanges

List supported exchanges. Public — no API key required.

GET /calendar.ics Pro

iCal subscription feed for an exchange and year. Pro plan only.

POST /signup

Create a free account and receive an API key (100 requests/month, 1 key). Body: { "email": "[email protected]", "name": "Ada" }. The key is returned once — save it. One key per email.

Errors

StatuscodeMeaning
400invalid_emailSignup: invalid email format
400invalid_jsonSignup: request body is not valid JSON
401invalid_api_keyMissing or invalid API key
403quota_exceededMonthly quota exhausted
403plan_requiredEndpoint requires Pro plan
403key_disabledKey revoked or temporarily banned
404not_foundUnknown exchange or resource
405method_not_allowedSignup: POST required
409email_existsSignup: email already registered
429rate_limitedRate limit exceeded (10 req/s) or too many signups from this IP
500internal_errorServer error