DocsMarket Status

Market Status

Check whether supported markets are open, closed, in pre-market, in post-market, or observing a holiday. Use market status to build smarter dashboards, polling schedules, alerts, and trading-hours-aware workflows.

AuthenticationAPI key (header)TimestampsUTC ISO-8601CalendarsIndicative v1PlansFree and paid

Base path /markets. Send x-api-key on every request, same as other REST routes. Responses use ISO-8601 UTC timestamps plus helpful local timezone fields where applicable. Calendar data is indicative — suitable for integration timing, not compliance-grade guarantees.

Endpoints

GET/markets/status

Market overview (default)

With no asset, symbol, or market, returns overview mode: one JSON document with rolled-up lines and nested per-calendar objects. Adding any of those parameters switches to detail mode (see the next section).

ParameterTypeDescription
assetstringOptional. Narrow routing: crypto, forex, stocks, indices, etfs, commodities, cfds. Omit with symbol/market for overview vs detail rules below.
symbolstringOptional. Instrument code when routing depends on it (for example indices). For equities, optional; often omitted when using market=US, market=GB, etc.
marketstringOptional. CRYPTO, FOREX, COMMODITIES, GLOBAL, or a regional code: US, AR, BR, MX, GB, DE, FR, ES, IT, TR, IN, JP, CN, HK, KR, SA, AE, SE, TW, TH. With asset/symbol, selects detail mode.
atstringOptional. ISO-8601 instant; defaults to request time. Invalid values return 400.
includeSessionsbooleanOptional. When true, includes a static session template for that calendar (detail mode). Regional equity calendars, the global calendar and commodities carry one; the continuous crypto and forex calendars have no template, so the field is absent. Default false.
includeHolidaybooleanOptional. When true, may include holiday metadata for the local trading date (detail mode). Default true.
curl -sS "https://api.tickerlayer.com/markets/status" \
  -H "x-api-key: YOUR_API_KEY"

Response 200 OK

JSON
{
  "server_time": "2026-05-04T13:44:27.672Z",
  "market": "mixed",
  "early_hours": false,
  "after_hours": false,
  "currencies": {
    "crypto": "open",
    "forex": "open"
  },
  "regions": {
    "us": "open",
    "gb": "open",
    "de": "open",
    "fr": "open",
    "es": "open",
    "tr": "open",
    "in": "closed",
    "jp": "closed"
  },
  "markets": {
    "stocks": {
      "us": {
        "asset": "stocks",
        "market": "US",
        "status": "open",
        "is_open": true,
        "phase": "primary",
        "next_close": "2026-05-04T20:00:00.000Z",
        "timezone": "America/New_York"
      }
    }
  },
  "meta": {
    "calendar_version": "v1-static-2026-2027"
  }
}

Optional fields such as symbol, next_open, or nested holiday rows appear only when meaningful. Overview responses include meta.data_notice alongside calendar_version in live payloads.

GET/markets/status

Market detail

Pass asset, symbol, and/or market to retrieve a single status object. For regional equities, prefer market=US, market=GB, market=DE, etc. Symbols are optional for many equity queries and are most useful when resolving calendar routing (for example global listings or indices).

ParameterTypeDescription
assetstringOptional. Narrow routing: crypto, forex, stocks, indices, etfs, commodities, cfds. Omit with symbol/market for overview vs detail rules below.
symbolstringOptional. Instrument code when routing depends on it (for example indices). For equities, optional; often omitted when using market=US, market=GB, etc.
marketstringOptional. CRYPTO, FOREX, COMMODITIES, GLOBAL, or a regional code: US, AR, BR, MX, GB, DE, FR, ES, IT, TR, IN, JP, CN, HK, KR, SA, AE, SE, TW, TH. With asset/symbol, selects detail mode.
atstringOptional. ISO-8601 instant; defaults to request time. Invalid values return 400.
includeSessionsbooleanOptional. When true, includes a static session template for that calendar (detail mode). Regional equity calendars, the global calendar and commodities carry one; the continuous crypto and forex calendars have no template, so the field is absent. Default false.
includeHolidaybooleanOptional. When true, may include holiday metadata for the local trading date (detail mode). Default true.
curl -sS "https://api.tickerlayer.com/markets/status?market=US" \
  -H "x-api-key: YOUR_API_KEY"

Response 200 OK

JSON
{
  "asset": "stocks",
  "market": "US",
  "status": "open",
  "is_open": true,
  "phase": "primary",
  "reason": "Primary session",
  "timestamp": "2026-05-04T13:44:27.872Z",
  "timezone": "America/New_York",
  "local_time": "2026-05-04T09:44:27.872-04:00",
  "next_close": "2026-05-04T20:00:00.000Z",
  "meta": {
    "calendar_version": "v1-static-2026-2027"
  }
}

Commodities use a broad overnight metals/energy reference schedule: Sunday 18:00 through Friday 17:00 in America/New_York, with a 17:00–18:00 daily pause. UTC boundaries follow US daylight saving time. This is not a per-instrument calendar: agricultural contracts, holidays and special closures can differ. Status describes scheduled hours, not feed health. Do not use it alone to stop data consumption; check observation timestamps and your instrument requirements as well. The sessions endpoint returns windows overlapping the requested local calendar date.

Additional detail examples (same route):

  • GET /markets/status?asset=stocks&market=US
  • GET /markets/status?asset=indices&symbol=UK100
  • GET /markets/status?asset=etfs&symbol=CASHLIKE
  • GET /markets/status?asset=crypto&symbol=BTCUSD
  • GET /markets/status?asset=forex&symbol=EURUSD
GET/markets/status/bulk

Bulk market status

Evaluate many instruments at once. Each item uses asset:symbol — for example crypto:BTCUSD, forex:EURUSD, stocks:US:AAPL, indices:UK100, commodities:XAUUSD. Ideal for dashboards and watchlists.

ParameterTypeDescription
itemsreqstringComma-separated asset:symbol pairs, 1-25 per request (see Bulk section). Unresolved items return a row-level error without failing the whole response; more than 25 entries returns a 400.
atstringOptional. ISO-8601 instant evaluated for every resolved item.
curl -sS "https://api.tickerlayer.com/markets/status/bulk?items=crypto:BTCUSD,forex:EURUSD,stocks:US:AAPL,indices:UK100,commodities:XAUUSD" \
  -H "x-api-key: YOUR_API_KEY"

Response 200 OK

JSON
{
  "data": [
    {
      "asset": "crypto",
      "market": "CRYPTO",
      "status": "open",
      "is_open": true
    },
    {
      "item": "stocks:INVALID",
      "error": { "code": "UNRESOLVED", "message": "…" }
    }
  ],
  "meta": { "calendar_version": "v1-static-2026-2027" }
}
Invalid or unknown items return a row with error — the overall HTTP status stays 200 when the request is well-formed.
GET/markets/holidays

Holiday calendar

Returns seeded holiday and early-close rows for a resolved regional calendar. Useful for UI hints and scheduling — treat rows as indicative; schedules can change.

ParameterTypeDescription
marketstringOptional if asset/symbol resolves a calendar (for example market=US).
assetstringOptional. Used with symbol to resolve the regional calendar.
symbolstringOptional. Used with asset to resolve the calendar.
yearintegerOptional. Defaults to the current UTC year.
startstringOptional. yyyy-mm-dd inclusive lower bound within the year.
endstringOptional. yyyy-mm-dd inclusive upper bound within the year.
curl -sS "https://api.tickerlayer.com/markets/holidays?market=US&year=2026" \
  -H "x-api-key: YOUR_API_KEY"

Response 200 OK

JSON
{
  "market": "US",
  "year": 2026,
  "timezone": "America/New_York",
  "holidays": [
    {
      "date": "2026-01-01",
      "name": "New Year's Day",
      "schedule": "closed",
      "is_open": false,
      "observed": true,
      "memo": null
    },
    {
      "date": "2026-11-27",
      "name": "Post-holiday early close",
      "schedule": "early_close",
      "is_open": true,
      "observed": true,
      "memo": "Early close"
    }
  ],
  "meta": {
    "calendar_version": "v1-static-2026-2027",
    "completeness": "full",
    "data_notice": "Holiday calendars are indicative and may change."
  }
}

schedule is closed or early_close. meta.completeness is full or partial when a regional list is not fully seeded for the requested year. Live responses also include meta.start and meta.end range strings for the filtered holiday list. Rows on this route always carry memo, null when there is no note; the holiday object nested in a status response omits it instead, so read it defensively.

GET/markets/sessions

Trading sessions

Ordered session windows for a given market and local date. Where modeled, equities may include pre-market, primary, and post-market phases; simpler calendars may return a single primary window, and a market with an intraday break (TH) returns one window per trading block. Each window carries status: open for the primary block, available for extended hours, and closed for every window on a weekend or holiday, so the list still describes the shape of a normal day.

ParameterTypeDescription
marketstringOptional if asset/symbol resolves a calendar.
assetstringOptional. Used with symbol to resolve the calendar.
symbolstringOptional. Used with asset to resolve the calendar.
datestringOptional. yyyy-mm-dd in that market’s context; defaults to “today” in the market timezone.
curl -sS "https://api.tickerlayer.com/markets/sessions?market=US&date=2026-05-04" \
  -H "x-api-key: YOUR_API_KEY"

Response 200 OK

JSON
{
  "market": "US",
  "date": "2026-05-04",
  "timezone": "America/New_York",
  "is_open": true,
  "holiday": null,
  "sessions": [
    {
      "phase": "pre_market",
      "status": "available",
      "start": "2026-05-04T08:00:00.000Z",
      "end": "2026-05-04T13:30:00.000Z"
    },
    {
      "phase": "primary",
      "status": "open",
      "start": "2026-05-04T13:30:00.000Z",
      "end": "2026-05-04T20:00:00.000Z"
    },
    {
      "phase": "post_market",
      "status": "available",
      "start": "2026-05-04T20:00:00.000Z",
      "end": "2026-05-05T00:00:00.000Z"
    }
  ],
  "meta": { "calendar_version": "v1-static-2026-2027" }
}
The holiday key is always present on this route: an object when a holiday row applies to that local date, and null otherwise. On a day the market does not open, the windows are still returned with their scheduled times, each carrying "status": "closed".

Field reference

FieldRole
assetAsset class for this status row.
symbolPresent when a symbol was supplied or resolved for routing.
marketPublic market or calendar code (for example US, GB, CRYPTO).
statusHigh-level state (open, closed, pre_market, post_market, maintenance, unknown).
is_openWhether an active trading session window applies — use together with phase for precision.
phaseFiner session context (primary, pre_market, post_market, weekend, holiday, early_close, …).
reasonShort human-readable explanation for the current row.
timestampEvaluation instant (UTC ISO-8601).
timezoneIANA timezone for local calendar logic.
local_timeWall-clock instant in timezone.
next_openUTC instant the regular (primary) session next opens. Omitted while the regular session is in progress and for 24/7 markets.
next_closeUTC instant the current or next regular session ends. During pre-market, post-market, weekend, holiday, and closed phases it pairs with next_open; extended-hours window boundaries are available via session and the sessions endpoint.
holidayOptional holiday metadata for the local trading date (detail mode when enabled).
sessionOptional static session template when includeSessions=true.
metaIncludes calendar_version and data_notice on status payloads.

status is the simple line; phase is the more specific session state; is_open reflects an active session window for the model.

status values
  • open
  • closed
  • pre_market
  • post_market
  • maintenance
  • unknown
phase values
  • primary
  • pre_market
  • post_market
  • closed
  • weekend
  • holiday
  • early_close
  • maintenance
  • unknown

What this API is — and is not

Helps with: market-aware polling, dashboard open/closed badges, alert scheduling, holiday display, and skipping unnecessary work when markets are quiet.

Does not guarantee: venue-specific “official” calendars, emergency closures or halts, instrument-level commodity accuracy in v1, or that live quotes exist whenever status reads “open”. Status describes modeled sessions for integration timing — not a trading mandate.

Static-first design: schedules are curated for product use and do not call third-party calendar services at request time. Pair with your product disclaimers — see also Market data disclaimer.