A symbol that returns nothing from Massive reads as missing data and is almost always a spelling difference. An unrecognised symbol comes back as an empty results array with HTTP 200, not an error, so nothing tells you the symbol was wrong. Massive uses a different convention from most other sources for two families of ticker, and both are easy to translate once you know.
Applies to
- Plans: every plan. This is a symbol convention, not an entitlement.
- Endpoints: every stocks endpoint, and /v3/reference/tickers for looking a symbol up.
- Asset classes: US stocks, including preferred shares, warrants, rights and units.
The conventions
The conventions are three rules, and they cover nearly every case:
| What you have | What Massive uses | Example |
|---|---|---|
| A dash or slash before a class letter | A dot | BRK-A and BRK/A are both BRK.A |
| A capital P before a preferred series | A lowercase p | ABRpD, ACPpA, ACRpC |
| A suffix for warrants, rights or units | A dot and a letter | Look it up rather than guessing |
The lowercase p matters because symbols are otherwise upper case, so it is easy to normalise away with a .upper() call and then wonder why the ticker vanished.
How to find a symbol you are unsure of
Search by name rather than guessing at punctuation:
curl -X GET "https://api.massive.com/v3/reference/tickers?search=Berkshire&limit=5&apiKey=YOUR_API_KEY"
Response
{
"results": [
{ "ticker": "BDVG", "name": "IMGP Berkshire Dividend Growth ETF", "type": "ETF", "active": true },
{ "ticker": "BRK.A", "name": "Berkshire Hathaway Inc.", "type": "CS", "active": true },
{ "ticker": "BRK.B", "name": "BERKSHIRE HATHAWAY Class B", "type": "CS", "active": true }
],
"status": "OK"
}
The search matches names, so it returns funds with the word in their title as well. Read the type field: CS is a common share, ETF is a fund.
You can also filter by type=PFD to list preferred shares, which is the quickest way to see the lowercase-p pattern applied to a whole family of symbols.
Why the punctuation differs at all
The punctuation differs because there is no single standard. The exchanges, the SIPs and the data vendors each chose a way to write a class share, and a symbol has to be unambiguous within one namespace rather than portable across all of them. Massive uses the dot form consistently, so the rule to apply when you are importing symbols from elsewhere is to translate once at the boundary rather than in every query.
If you see an error
An empty results array with "status": "OK" is what an unrecognised symbol looks like. It is not a permissions problem and not a data gap.
A symbol that works elsewhere and not here is almost always the dash. Try the dot.
A preferred share that disappears after you upper-case your inputs is the lowercase p. Preserve the case of symbols end to end.

