Context
This is product/API + docs feedback for the Massive REST stocks snapshot (not an SDK bug). Filing here per Massive’s data-discrepancy guidance (support email + GitHub). Also emailed support@massive.com.
Summary
After the documented daily snapshot clear (3:30 AM EST), GET /v2/snapshot/locale/us/markets/stocks/tickers/{ticker} often returns day and min objects with all numeric fields set to 0 and updated: 0 when there is no current session activity, instead of omitting those objects (or using JSON null).
This is surprising because:
- Single ticker snapshot docs never document
0 as “unset”
- Aggregates / missing aggregates KB omit bars when there are no eligible trades
- In the same snapshot payload,
lastTrade / lastQuote are omitted when unavailable
Clients using nullish coalescing (??) treat 0 as a real price and never fall through.
Repro
- Endpoint:
GET /v2/snapshot/locale/us/markets/stocks/tickers/CHKP
- Observed:
2026-08-10T11:42:00Z (US premarket)
request_id: 13acbb2342e8b650464494f4099af50a
status: OK
{
"ticker": {
"ticker": "CHKP",
"todaysChangePerc": 0,
"todaysChange": 0,
"updated": 0,
"day": { "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 },
"min": { "av": 0, "t": 0, "n": 0, "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 },
"prevDay": {
"o": 126.15, "h": 127.84, "l": 124.43, "c": 127.82,
"v": 582977.1251, "vw": 126.9216
}
},
"status": "OK",
"request_id": "13acbb2342e8b650464494f4099af50a"
}
Liquid names with premarket prints (e.g. NVDA) populate min.c with a real price while day.* can still be zero before RTH — so zeros act as sentinels for “no bar yet,” not as a $0 trade.
Request
- Document that snapshot
day/min numeric zeros (and updated: 0) mean “no current session aggregate,” not a traded price of $0.
- Prefer omitting empty
day/min (or null) for consistency with aggregates and omitted lastTrade/lastQuote.
- If zero-fill must stay for compatibility, call it out explicitly in the snapshot docs.
Thanks!
John Solly (github@jsolly.com)
Context
This is product/API + docs feedback for the Massive REST stocks snapshot (not an SDK bug). Filing here per Massive’s data-discrepancy guidance (support email + GitHub). Also emailed
support@massive.com.Summary
After the documented daily snapshot clear (3:30 AM EST),
GET /v2/snapshot/locale/us/markets/stocks/tickers/{ticker}often returnsdayandminobjects with all numeric fields set to0andupdated: 0when there is no current session activity, instead of omitting those objects (or using JSONnull).This is surprising because:
0as “unset”lastTrade/lastQuoteare omitted when unavailableClients using nullish coalescing (
??) treat0as a real price and never fall through.Repro
GET /v2/snapshot/locale/us/markets/stocks/tickers/CHKP2026-08-10T11:42:00Z(US premarket)request_id:13acbb2342e8b650464494f4099af50astatus:OK{ "ticker": { "ticker": "CHKP", "todaysChangePerc": 0, "todaysChange": 0, "updated": 0, "day": { "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 }, "min": { "av": 0, "t": 0, "n": 0, "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 }, "prevDay": { "o": 126.15, "h": 127.84, "l": 124.43, "c": 127.82, "v": 582977.1251, "vw": 126.9216 } }, "status": "OK", "request_id": "13acbb2342e8b650464494f4099af50a" }Liquid names with premarket prints (e.g. NVDA) populate
min.cwith a real price whileday.*can still be zero before RTH — so zeros act as sentinels for “no bar yet,” not as a $0 trade.Request
day/minnumeric zeros (andupdated: 0) mean “no current session aggregate,” not a traded price of $0.day/min(or null) for consistency with aggregates and omittedlastTrade/lastQuote.Thanks!
John Solly (github@jsolly.com)