A stock quote condition code is a number in the conditions array of a quote from /v3/quotes/{stocksTicker}, and the same number can mean something else on a trade: code 1 is Regular Two-Sided Open on a quote and Acquisition on a trade. The indicators array on the same quote is a separate set of codes again, and the conditions endpoint does not return its limit up-limit down (LULD) or NBBO indicator codes.
Applies to
- Plans: the conditions endpoint is included in all Stocks plans (condition codes docs). The quotes themselves are included in Stocks Advanced and the Stocks Business plans (quotes docs).
- Endpoints: conditions and indicators on /v3/quotes/{stocksTicker}, and /v3/reference/conditions.
- Asset classes: US stocks.
How to look up a quote condition code
- Read the code from the quote's conditions array.
- Look the code up by id with asset_class=stocks and no data_type.
- Keep the record whose data_types list bbo or nbbo. A record whose data_types is trade is the trade code with the same number.
What do Massive's stock trade condition codes mean? says to pass data_type because data_type=trade covers every trade code. Quote codes have no single data type, so look them up by id and read data_types.
This is the last quote before 10:00 Eastern on 22 September 2026 for a Nasdaq-listed stock:
curl -X GET "https://api.massive.com/v3/quotes/AAPL?timestamp.lte=1790085600000000000&order=desc&limit=1&apiKey=YOUR_API_KEY"
Response
{
"results": [
{
"ask_price": 340.82,
"bid_price": 340.73,
"conditions": [1],
"indicators": [1],
"sip_timestamp": 1790085599997812549,
"tape": 3
}
],
"status": "OK"
}
1790085599997812549 is 09:59:59.998 Eastern on 22 September 2026, in nanoseconds. The quote carries condition 1 and indicator 1, which are two different codes.
Look up condition 1:
curl -X GET "https://api.massive.com/v3/reference/conditions?asset_class=stocks&id=1&apiKey=YOUR_API_KEY"
Response
{
"results": [
{
"id": 1,
"type": "sale_condition",
"name": "Acquisition",
"sip_mapping": { "UTP": "A" },
"data_types": ["trade"]
},
{
"id": 1,
"type": "quote_condition",
"name": "Regular Two-Sided Open",
"sip_mapping": { "CTA": "R", "UTP": "R" },
"data_types": ["bbo", "nbbo"]
}
],
"status": "OK",
"count": 2
}
The second record is the quote code: condition 1 on this quote is Regular Two-Sided Open, which both securities information processors (SIPs), CTA and UTP, send as R. The sip_mapping field gives the letter each SIP uses, which is what to search for in that SIP's own specification.
Why data_type=quote returns nothing
data_type=quote returns nothing because quote is not one of the values the filter takes. The conditions endpoint's data_type accepts trade, bbo and nbbo (API specification), and a value outside that list is not refused with an error. It returns an empty list:
curl -X GET "https://api.massive.com/v3/reference/conditions?asset_class=stocks&data_type=quote&id=1&apiKey=YOUR_API_KEY"
Response
{
"results": [],
"status": "OK"
}
Quote codes are filed under two data types, bbo (best bid and offer) and nbbo (national best bid and offer), and some codes carry only one of them. Regular One-Sided Open, code 2, is nbbo only, and Closing, code 14, is bbo only. That split is why looking the code up by id with no data_type is the reliable route. To list every quote code, call the endpoint twice, with data_type=bbo and then data_type=nbbo, each with limit=1000.
What the indicators array is
The indicators array on a stock quote holds indicator codes, which are not quote conditions. Indicator 1 is NBB NBO Executable, an LULD indicator, and 601 to 605 are NBBO indicators. The conditions endpoint returns neither set, so look indicator codes up in the conditions and indicators glossary.
If you see an error
An empty results list with "status": "OK" from the conditions endpoint means a filter matched nothing. One cause is a data_type value the filter does not take, such as quote, quotes or NBBO; the accepted values are lowercase. Fix: drop data_type and look the code up by id.
Two records for one id is expected, not a duplicate. Trade and quote codes share the same numbers. Fix: keep the record whose data_types match the data you are reading.
A listing with no quote codes in it may be the first page. The endpoint returns 10 records by default, and with asset_class=stocks and no other filter the first 10 are trade codes. Fix: pass limit=1000, or look the code up by id.

