Skip to content
MarketCalendars.com
Sign up

API documentation

REST API v2: trading hours, holidays and settlement days as JSON over HTTPS

Get the session for a trade date

GET/api/v2/markets/{market}/sessions/{date}

The phases of one trade date with start and end times, whether the day is regular or irregular and why, and whether it is a settlement day. For markets that open the evening before (CME Globex), the regular phase starts on the previous calendar date and still carries this trade date

One request: one day. A successful response counts as one request

Parameters

NameInDescription
marketrequiredpathMarket id, as listed by GET /markets (for example nyse, lse, cme-equity-futures)Example: nyse
daterequiredpathTrade date, YYYY-MM-DDExample: 2026-11-27

Example

curl https://marketcalendars.com/api/v2/markets/nyse/sessions/2026-11-27 \
  -H "Authorization: Bearer mc_live_..."
GET /api/v2/markets/nyse/sessions/2026-11-27200
{
  "market": "nyse",
  "tradeDate": "2026-11-27",
  "timezone": "America/New_York",
  "isTradingDay": true,
  "schedule": "irregular",
  "reasons": [
    {
      "type": "early_close",
      "name": "Day after Thanksgiving"
    }
  ],
  "isSettlementDay": true,
  "nonSettlementReason": null,
  "disputed": null,
  "phases": [
    {
      "type": "pre_market",
      "start": "2026-11-27T04:00:00-05:00",
      "end": "2026-11-27T09:30:00-05:00",
      "tradeDate": "2026-11-27"
    },
    {
      "type": "regular",
      "start": "2026-11-27T09:30:00-05:00",
      "end": "2026-11-27T13:00:00-05:00",
      "tradeDate": "2026-11-27"
    },
    {
      "type": "after_hours",
      "start": "2026-11-27T13:00:00-05:00",
      "end": "2026-11-27T17:00:00-05:00",
      "tradeDate": "2026-11-27"
    }
  ],
  "dataSource": "pandas_market_calendars 5.5.0"
}

A live response from the API. Lists longer than seven items are cut to three here

Response fields

Session object. Fields marked | null are always present and may be null

FieldTypeDescription
marketstringMarket id
tradeDatestring (date)The trade date asked for
timezonestringIANA time zone of the market
isTradingDaybooleanWhether the market trades on this trade date
schedulestringirregular when the day departs from the regular weekly hoursregularirregular
reasonsobject[]Why the day is irregular. Empty on regular days and weekends
reasons[].typestringWhy the day departs from the regular weekly scheduleholidayearly_closelate_openlate_closeextra_sessionbreak_changemodified_hoursinterruption
reasons[].namestring | nullHoliday or event name from the source
isSettlementDayboolean | nullWhether trades settle on this day. Null where we have no settlement calendar
nonSettlementReasonstring | nullWhy a trading day is not a settlement day
disputedstring | nullSet when the holidays package disagrees with the source library about this date
phasesobject[]Phases in time order. Empty when the market does not trade
phases[].typestringregular is core trading; break is a lunch break; pre_market and after_hours are extended hours where the source has thempre_marketregularbreakafter_hours
phases[].startstring (date-time)Start, ISO 8601 with the market's UTC offset
phases[].endstring (date-time)End, ISO 8601 with the market's UTC offset
phases[].tradeDatestring (date)Trade date the phase belongs to. Differs from the calendar date for sessions that open the evening before
dataSourcestringSource library and version

Errors

  • 400invalid-parameterA path or query parameter is malformed, such as a date that is not YYYY-MM-DD
  • 401unauthorizedThe Authorization header is missing, malformed, or names a revoked key
  • 404unknown-marketNo market has that id. GET /markets lists every id
  • 404out-of-rangeThe date or year is outside the market's coverage
  • 429rate-limitedThe key sent more requests in a minute than its plan's burst limit
  • 429quota-exceededThe plan's requests for this period are used up