Skip to content
MarketCalendars.com
Sign up

API documentation

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

Get closures on a date

GET/api/v2/dates/{date}

Which markets are closed (holiday or weekend) or trade irregular hours on a date. The date is each market's local trade date

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

Parameters

NameInDescription
daterequiredpathTrade date, YYYY-MM-DDExample: 2026-12-24

Example

curl https://marketcalendars.com/api/v2/dates/2026-12-24 \
  -H "Authorization: Bearer mc_live_..."
GET /api/v2/dates/2026-12-24200
{
  "date": "2026-12-24",
  "regularCount": 32,
  "closed": [
    {
      "market": "b3",
      "reason": "holiday",
      "name": "Christmas Eve"
    },
    {
      "market": "xetra",
      "reason": "holiday",
      "name": "Christmas Eve"
    },
    {
      "market": "frankfurt",
      "reason": "holiday",
      "name": "Christmas Eve"
    }
  ],
  "irregular": [
    {
      "market": "nyse",
      "type": "early_close",
      "name": "Christmas Eve",
      "phases": [
        {
          "type": "pre_market",
          "start": "2026-12-24T04:00:00-05:00",
          "end": "2026-12-24T09:30:00-05:00",
          "tradeDate": "2026-12-24"
        },
        {
          "type": "regular",
          "start": "2026-12-24T09:30:00-05:00",
          "end": "2026-12-24T13:00:00-05:00",
          "tradeDate": "2026-12-24"
        },
        {
          "type": "after_hours",
          "start": "2026-12-24T13:00:00-05:00",
          "end": "2026-12-24T17:00:00-05:00",
          "tradeDate": "2026-12-24"
        }
      ]
    },
    {
      "market": "nasdaq",
      "type": "early_close",
      "name": "Christmas Eve",
      "phases": [
        {
          "type": "pre_market",
          "start": "2026-12-24T04:00:00-05:00",
          "end": "2026-12-24T09:30:00-05:00",
          "tradeDate": "2026-12-24"
        },
        {
          "type": "regular",
          "start": "2026-12-24T09:30:00-05:00",
          "end": "2026-12-24T13:00:00-05:00",
          "tradeDate": "2026-12-24"
        },
        {
          "type": "after_hours",
          "start": "2026-12-24T13:00:00-05:00",
          "end": "2026-12-24T17:00:00-05:00",
          "tradeDate": "2026-12-24"
        }
      ]
    },
    {
      "market": "cme",
      "type": "early_close",
      "name": "Christmas Eve",
      "phases": [
        {
          "type": "regular",
          "start": "2026-12-23T17:00:00-06:00",
          "end": "2026-12-24T12:00:00-06:00",
          "tradeDate": "2026-12-24"
        }
      ]
    }
  ],
  "noData": []
}

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

Response fields

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

FieldTypeDescription
datestring (date)The date asked for
regularCountintegerMarkets trading regular hours that day
closedobject[]Markets that do not trade on the date
closed[].marketstringMarket id
closed[].reasonstringWhy the market is closedholidayweekend
closed[].namestring | nullHoliday name; null at weekends
irregularobject[]Markets that trade irregular hours on the date
irregular[].marketstringMarket id
irregular[].typestringKind of irregular dayearly_closelate_openearly_close_late_openlate_closeextra_sessionbreak_changemodified
irregular[].namestring | nullSession name from the source
irregular[].phasesobject[]Phases of the session
irregular[].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
irregular[].phases[].startstring (date-time)Start, ISO 8601 with the market's UTC offset
irregular[].phases[].endstring (date-time)End, ISO 8601 with the market's UTC offset
irregular[].phases[].tradeDatestring (date)Trade date the phase belongs to. Differs from the calendar date for sessions that open the evening before
noDatastring[]Markets without data for the date

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
  • 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