Knowledge Base/Does Massive have a market holiday or status page?

Does Massive have a market holiday or status page?

Yes, as two API endpoints rather than a web page. /v1/marketstatus/now returns whether each exchange is open, in pre-market or after-hours, and /v1/marketstatus/upcoming returns the coming holidays with their early-close times.

There is no holiday page to bookmark, which is deliberate: a schedule you have to read is a schedule your code cannot act on. Massive publishes both the live state and the calendar as JSON from /v1/marketstatus/, covering the US equities exchanges, OTC, forex, crypto and the index groups in one response. Both are reference data, so they are available broadly rather than gated behind a real-time tier.

Applies to

  • Plans: all plans, including the free Basic tier, for the market status endpoints. The data endpoints in the weekend and holiday table follow your plan for each asset class.
  • Endpoints: /v1/marketstatus/now and /v1/marketstatus/upcoming; for weekend and holiday behavior, the aggregates, grouped daily, daily open-close, trades, quotes, reference tickers and futures schedules endpoints.
  • Asset classes: US equities exchanges, OTC, currencies and the index groups for market status; stocks, options, indices, forex, crypto and futures for weekend and holiday behavior.

How to check whether the market is open now

curl -X GET "https://api.massive.com/v1/marketstatus/now?apiKey=YOUR_API_KEY"

Response

{
  "afterHours": true,
  "earlyHours": false,
  "exchanges": { "nasdaq": "extended-hours", "nyse": "extended-hours", "otc": "closed" },
  "currencies": { "crypto": "open", "fx": "open" },
  "indicesGroups": { "s_and_p": "open", "msci": "open", "ftse_russell": "open" }
}

Read the per-exchange field rather than the top-level flags. afterHours describes the session; exchanges.nyse tells you the state of the venue you are actually querying, and OTC keeps different hours from NYSE and Nasdaq.

How to check the coming holidays

curl -X GET "https://api.massive.com/v1/marketstatus/upcoming?apiKey=YOUR_API_KEY"

Response

[
  { "date": "2026-11-26", "exchange": "NASDAQ", "name": "Thanksgiving", "status": "closed" },
  { "date": "2026-11-27", "exchange": "NYSE", "name": "Thanksgiving", "status": "early-close",
    "open": "2026-11-27T14:30:00.000Z", "close": "2026-11-27T18:00:00.000Z" }
]

There is one record per exchange per holiday, so a single holiday appears several times. The early-close records carry open and close in UTC, which is what you need to avoid treating a short session as missing data.

What the API returns on a weekend or market holiday

What the Massive API returns for a Saturday, a Sunday or a US market holiday depends on the endpoint and the asset class. For US stocks, options and indices an empty answer on those dates is expected and is not an outage, but the shape of the empty answer differs by endpoint:

EndpointSaturday or SundayUS market holiday
Stock and option aggregates, /v2/aggs/ticker/{ticker}/range/...HTTP 200, "status": "OK", resultsCount 0; a range across a weekend skips itThe same: no day bar and no minute bars for the holiday
Index aggregates, such as I:SPXHTTP 200, "status": "OK", queryCount 0, and no resultsCount fieldThe same; the holiday is skipped
Grouped daily, /v2/aggs/grouped/locale/us/market/stocks/{date}HTTP 200, resultsCount 0HTTP 200, resultsCount 0
Daily open-close, /v1/open-close/{ticker}/{date} for a stock, option or indexHTTP 404, "status": "NOT_FOUND", "message": "Data not found."The same 404
Trades and quotes, /v3/trades and /v3/quotes with timestamp={date}HTTP 200, "results": []HTTP 200, "results": []
Reference tickers, /v3/reference/tickers?date={date}The previous trading day's ticker listThe previous trading day's ticker list
Crypto, such as X:BTCUSDBars on Saturday and Sunday; daily bars are UTC days starting at 00:00 UTCBars as on any other day
Forex, such as C:EURUSDNo Saturday bar; a Sunday daily bar holding only the trading after the Sunday evening reopenUsually bars as on any other weekday. A few holidays have no forex data, such as Good Friday, 18 April 2025; see How far back does Massive's forex and gold history go, and are there gaps?
Futures, such as ESNo session ends on a Saturday or Sunday; the session that opens Sunday evening is dated MondayNo session dated Labor Day; that day's trading belongs to the session ending the next day

The two shapes of "no session" for US stocks look like this. Daily open-close answers 404 for Saturday 3 October 2026:

curl -X GET "https://api.massive.com/v1/open-close/AAPL/2026-10-03?apiKey=YOUR_API_KEY"

Response

{
  "status": "NOT_FOUND",
  "message": "Data not found."
}

Grouped daily answers HTTP 200 with no rows for the same Saturday:

curl -X GET "https://api.massive.com/v2/aggs/grouped/locale/us/market/stocks/2026-10-03?apiKey=YOUR_API_KEY"

Response

{
  "queryCount": 0,
  "resultsCount": 0,
  "adjusted": true,
  "status": "OK"
}

The same grouped daily call for Friday 2 October 2026 returns 12,601 rows, and for Labor Day, Monday 7 September 2026, it returns resultsCount 0.

The forex Sunday bar is a UTC-day bar. On Sunday 4 October 2026 the first C:EURUSD minute bar started at 21:00 UTC, so that day's bar carries t 1791072000000 (00:00 UTC on 4 October 2026) and 5,445 transactions, against about 210,000 on the weekdays either side.

Futures sessions are dated by session_end_date. The ES session ending Monday 5 October 2026 opened on Sunday 4 October at 22:00 UTC, and the session ending Tuesday 8 September 2026 opened on Sunday 6 September at 22:00 UTC, so Labor Day's trading is in the session dated 8 September. /futures/v1/schedules returns each product's sessions, including holiday adjustments.

How to handle weekends and holidays in code

Handle a non-trading date on the Massive data endpoints in three steps:

  1. Treat HTTP 200 with no results from aggregates (resultsCount 0, or no resultsCount field for an index), and HTTP 404 NOT_FOUND from daily open-close, as "no data on that date", not as an error. For US stocks, options and indices it may mean no session, but an option contract that did not trade on a trading day returns the same shapes, so confirm with step 2 or 3.
  2. For a future date, check /v1/marketstatus/upcoming.
  3. For a past weekday, call grouped daily for the date. resultsCount 0 marks a day with no session.

This is not the service status page

Two different questions share the word status:

The questionWhere to look
Are the exchanges open?/v1/marketstatus/now
Is Massive's service healthy?massive.com/system

If a request returns no data, check the market status first. A closed market is a far more common cause of an empty result than an outage is.

If you see an error

An HTTP 200 with no rows for US stocks, options or indices usually means the range held no session: a weekend or a market holiday. Aggregates and grouped daily leave out the results key entirely, with queryCount 0, while trades and quotes return "results": []. /v1/marketstatus/upcoming lists future holidays only, so check a past date with grouped daily, as above.

A 404 with "status": "NOT_FOUND" and "message": "Data not found." from /v1/open-close/{ticker}/{date} on a weekend or holiday is the same thing in that endpoint's shape. Crypto's daily open-close, /v1/open-close/crypto/BTC/USD/{date}, answers HTTP 200 on a Saturday, because crypto trades over the weekend.

A US stock or ETF bar dated on a Saturday or Sunday Eastern time is not expected, and neither is a reference tickers date that returns no tickers while the days around it return a full list. Report either with the steps in How should I go about reporting a possible Massive data discrepancy?. Check the time zone first: crypto daily bars are UTC days, and a forex bar dated Sunday is expected.

A day that looks truncated is often an early close rather than a gap. The early-close record gives the real closing time.

There is no historical holiday endpoint today, so a backfill has to derive past holidays from the days with no trading data.

Related


Was this article helpful?

Modernizing Wall St.

Reimagining financial market data for the 21st century.

Schedule a demo

Talk with our market data experts

Recommended

Can't find the answer you're looking for? Contact our team.
  • Title
    Are all indices available through the basic subscription tier?
    Data Coverage Category

    Data Coverage

    Indices Category

    Indices

    Description
    No, and the ones it withholds are the famous ones: SPX, DJI, RUT and VIX all need a paid Indices tier. Basic still reaches more than 10,000 of the 13,000-odd indices Massive publishes, and NDX and the Nasdaq Composite are among them.
  • Title
    Does Massive offer dark pool data?
    Data Coverage Category

    Data Coverage

    Stocks Category

    Stocks

    Description
    Yes. Off-exchange prints, which include dark pool executions, arrive on the ordinary trades feed and are identified by an exchange ID of 4. There is no separate dark pool endpoint, and no way to tell which individual venue a print came from.
  • Title
    Does Massive offer pre-market and after-hours data?
    FAQ Category

    FAQ

    Stocks Category

    Stocks

    Description
    Yes. Every extended-hours trade and quote is published, from 04:00 to 20:00 Eastern. There is no session parameter, so you select a session with timestamps, and expect far fewer aggregate bars outside regular hours because many extended-hours trades are odd lots that cannot set a price.