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.

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

Responses use ISO-8601 UTC timestamps, plus local timezone fields where they help. Calendar data is indicative: right for integration timing, not a compliance-grade guarantee.

Endpoints

EndpointReturns
GET /markets/statusA broad snapshot for crypto, forex, regional equities, selected indices, ETFs and commodities.
GET /markets/status?market=USOne status object for a region or a resolved instrument.
GET /markets/status/bulkSeveral asset and symbol pairs in one round trip.
GET /markets/holidaysIndicative closures and early closes by market and year.
GET /markets/sessionsSession windows for one market and date.
GET/markets/status
Open .md

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).

assetstring
Optional. Narrow routing: crypto, forex, stocks, indices, etfs, commodities, cfds. Omit with symbol/market for overview vs detail rules below.
symbolstring
Optional. Instrument code when routing depends on it (for example indices). For equities, optional; often omitted when using market=US, market=GB, etc.
marketstring
Optional. 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.
atstring
Optional. ISO-8601 instant; defaults to request time. Invalid values return 400.
includeSessionsboolean
Optional. 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.
includeHolidayboolean
Optional. 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
Open .md

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).

assetstring
Optional. Narrow routing: crypto, forex, stocks, indices, etfs, commodities, cfds. Omit with symbol/market for overview vs detail rules below.
symbolstring
Optional. Instrument code when routing depends on it (for example indices). For equities, optional; often omitted when using market=US, market=GB, etc.
marketstring
Optional. 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.
atstring
Optional. ISO-8601 instant; defaults to request time. Invalid values return 400.
includeSessionsboolean
Optional. 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.
includeHolidayboolean
Optional. 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
Open .md

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.

itemsstringRequired
Comma-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.
atstring
Optional. 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
Open .md

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.

marketstring
Optional if asset/symbol resolves a calendar (for example market=US).
assetstring
Optional. Used with symbol to resolve the regional calendar.
symbolstring
Optional. Used with asset to resolve the calendar.
yearinteger
Optional. Defaults to the current UTC year.
startstring
Optional. yyyy-mm-dd inclusive lower bound within the year.
endstring
Optional. 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
Open .md

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.

marketstring
Optional if asset/symbol resolves a calendar.
assetstring
Optional. Used with symbol to resolve the calendar.
symbolstring
Optional. Used with asset to resolve the calendar.
datestring
Optional. 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". A trading day on shifted hours, such as Korea's late session on 19 November 2026 (10:00 to 16:30 local), is not a holiday: its primary window carries the shifted times, and status, next_open, next_close and the status session block follow them.

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, open and closed badges on dashboards, alert scheduling, holiday display, and skipping work while 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 schedules
Schedules are curated for product use and never call third-party calendar services at request time. Pair them with your own disclaimers; see the Market data disclaimer.