Yes. For US stocks Massive publishes every trade and quote from 04:00 to 20:00 Eastern, which covers pre-market and after-hours as well as the regular session. Currencies do not stop at all: forex runs around the clock on weekdays and crypto every day including weekends. What Massive does not have is a parameter that selects a session, so an extended-hours request is made with epoch timestamps.
Applies to
- Plans: any subscription for the asset class. The tier decides how recent the data can be.
- Endpoints: /v3/trades, /v3/quotes, /v2/aggs/..., the flat files, and the T, Q, A and AM WebSocket channels.
- Asset classes: US stocks and ETFs for the extended session, and a set of US options from 07:30 Eastern; forex and crypto for continuous coverage; futures follow their own exchange sessions.
When each market produces data
When each market produces data outside normal hours is not one answer, it is one per asset class:
| Asset class | When data flows |
|---|---|
| US stocks and ETFs | 04:00 to 20:00 Eastern on trading days |
| US options | 09:30 to 16:00 Eastern for most options, to 16:15 for broad ETF and index options, and to 17:00 for Cboe index options such as SPX. A set of single-stock and ETF options also trades from 07:30, and the single stocks in that set until 16:15. Cboe's overnight session for index options is not covered beyond some early-morning trades |
| Indices | While the index provider calculates, which broadly follows the underlying market |
| Forex | Continuously from Sunday evening to Friday evening Eastern |
| Crypto | Continuously, every day |
| Futures | The contract's own session, which typically opens the evening before it settles |
How to query an extended-hours window
Pass epoch timestamps in place of dates. Both millisecond and nanosecond values are accepted:
curl -X GET "https://api.massive.com/v2/aggs/ticker/AAPL/range/1/minute/1788508800000/1788528599999?limit=5000&apiKey=YOUR_API_KEY"
Response
{ "ticker": "AAPL", "queryCount": 282, "resultsCount": 282, "status": "OK" }
Those bounds are 04:00:00 and 09:29:59.999 Eastern on 2026-09-04, so this is the whole pre-market session and nothing else. Both bounds are inclusive, so ending at 09:30 would add the opening minute of the regular session, which is usually the largest bar of the morning. Set the limit above the number of minutes in the window, because it counts minutes scanned rather than bars returned.
Why extended-hours bars are thinner than the trades
For US stocks, extended-hours bars are thinner because eligibility is separate from coverage. Many extended-hours prints carry sale conditions that do not update a bar's open, high, low or close, so the trade appears on the trades feed and never in an aggregate. Volume is often updated even when price is not. So a quiet-looking pre-market chart usually means ineligible trades rather than no trading, and /v3/trades is where the real activity is. Options in the 07:30 session are covered in Does Massive have options data before 9:30 AM ET?.
If you see an error
For stocks, an empty aggregate result for an extended-hours window, where trades exist, is eligibility rather than a gap.
An empty result for a date rather than a timestamp range may be the whole day: call grouped daily (/v2/aggs/grouped/locale/us/market/stocks/{date}) for that date: resultsCount 0 means no session. /v1/marketstatus/upcoming lists future holidays only.
Forex or crypto returning nothing over a weekend is expected for forex, which closes, and not for crypto, which does not.

