Market calendar
Latest calendar revision and sessions for an exchange-local date. US exchange calendars run from the 1950s through the end of the published NYSE holiday schedule (2028-12-31), holidays and early closes included. The Toronto, TSX Venture, Cboe Canada, London, Euronext Paris and Amsterdam and ASX calendars, and that of FSRV (Canadian mutual funds, which keeps Toronto's), run through the same date: the provider's about 45 days ahead, and after that the days each exchange's holiday rules give, early closes included, which the provider's replace as its calendar reaches them (a closing announced for one year is known only then). The crypto venue trades every day, so it has a row for any date from 2010-07-01 on, and the forex venue every day but Saturday, from 1970-01-01 on (a Saturday row is closed), trading from Sunday 17:00 to Friday 17:30 New York time. The index venue is open every day from 1900-01-01 through about a month ahead, with the UTC day as its session: each index trades on its own market's days, and has a bar only where its market traded. The bond venue is open every weekday from 2000-01-01 through about a month ahead, with the UTC day as its session, and closed on weekends; a bond has a bar only on the days it traded. A date that no requested exchange calendar covers returns 422 naming their range; a requested exchange whose calendar alone does not reach the date has no row and is named in meta.errors by its exchange_mic. GET /v1/datasets/calendar/coverage gives each calendar's first and last date as history_from and history_to (history_to is null only for CRYPTO and FOREX, which trade continuously). Requires calendar.read and an entitled market. An empty data array is a successful result.
/v1/calendar- Required capability
- calendar.read
- Data timing
- As published by the source
- Credits
- 5 credits per request.
Parameters
limitintegeroptional · query- Maximum records per page, from 1 to 500; default 100.Default:
100 cursorstringoptional · query- Opaque cursor, expires after one hour. Keep all query parameters unchanged. Changes to entitlements can invalidate it.
If-None-Matchstringoptional · header- ETag from a previous response. Authorization is rechecked before returning 304, and a 304 costs no credits.
exchangesstringoptional · query- Comma-separated ISO MIC codes, at most 100, each listed once. Defaults to all entitled exchanges. A malformed or repeated code returns 422 invalid-exchanges, a MIC the API does not serve 404 exchange-not-found, and one outside the key's markets 403 market-not-entitled.
datestringoptional · query- Exchange-local YYYY-MM-DD date; defaults to today in each exchange timezone. Outside the range every requested exchange calendar covers, 422; outside one of several, that exchange is named in meta.errors.
formatstringoptional · query- Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.
jsoncsv
Response fields
Returns data as an array of records. All example values are illustrative.
exchange_micstring- exchange mic
exchange_timezonestring- exchange timezone
local_datestring- local date
statusstring- open or closed. A closed day has no sessions; holiday names are not served.
sessionsarray- The day's trading sessions; empty on a closed day.
Response metadata
Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.
When something goes wrong
An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.
Plans
Requires calendar.read. Access, recency and history depth come from the plan definitions the API enforces.
| Plan | Access | Recency | History |
|---|---|---|---|
| Free | Included | As published | Not date-bounded |
| Developer | Included | As published | Not date-bounded |
| Pro | Included | As published | Not date-bounded |
| Commercial | Included | As published | Not date-bounded |
| Scale | Included | As published | Not date-bounded |
Free requests are limited to AAPL, NVDA, JNJ, PEP, MSFT, SPY, QQQ.
History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans