Download the current Stocktwits symbol reference dataset (symbol_id to ticker mapping, plus additional reference data). This dataset is kept up to date automatically — there is no need to re-request a one-off export as new symbols are added or existing ones are delisted.
| Request Method | HTTP GET |
| URL | Two routes are available, one per file format:
https://firestream.stocktwits.com/symbols/reference.csv https://firestream.stocktwits.com/symbols/reference.json |
| Content versions |
There are two possible versions of the data behind each route above, and which one you receive depends on your account's access grant — there is no separate URL or parameter to request one version over the other:
|
| Important notes |
|
The following responses may be returned by the API for these requests. Most error codes are returned with a string with additional details in the body. For non-200 responses, clients should attempt to reconnect.
| Status | Text | Description |
|---|---|---|
| 302 | Success | The request is authorized and a redirect to a temporary (15 minute) download link is being returned. The download link is not cacheable — request the endpoint again if it expires before you've downloaded the file. |
| 401 | Unauthorized | HTTP authentication failed, or your account doesn't have access to this endpoint. Verify that your stocktwits login is correct and that your account has been granted symbol reference access. |
The following example request is accomplished using cURL on the command line.
'username':'password' will need to be replaced with your user login and password in order to download the file.curl -JLO -u 'username':'password' "https://firestream.stocktwits.com/symbols/reference.csv"
If you are working on Windows, you may need to use double quotes instead of single quotes for the username and password.
curl -JLO -u "username":"password" "https://firestream.stocktwits.com/symbols/reference.json"
The following example request is accomplished using a python script with the requests library.
'''
This script downloads the symbol reference file, following the
redirect to the temporary presigned download link.
'''
import requests
from requests.auth import HTTPBasicAuth
url = "https://firestream.stocktwits.com/symbols/reference.csv"
username = "myusername"
password = "mypassword"
resp = requests.get(url, auth=HTTPBasicAuth(username, password), stream=True)
if resp.status_code != 200:
print(f"Error response: {resp.status_code} {resp.reason}")
exit()
with open("reference.csv", 'wb') as f:
for chunk in resp.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
The .csv and .json routes return the same fields — the CSV as a header row plus one row per symbol, the JSON as a flat array of objects using the same field names.
| symbol_id | Stocktwits' internal symbol ID.
"symbol_id": 125625 |
| ticker | The symbol's current ticker.
"ticker": "AAPL" |
| exchange | The exchange the symbol trades on, where available.
"exchange": "NASDAQ" |
| country [Optional] | Where available.
"country": "US" |
| asset_class [Optional] | Where available.
"asset_class": "equity" |
| delisted | Whether the symbol is currently delisted.
"delisted": false |
| isin [Optional, alternative-identifiers version only] | Only present for accounts granted access to alternative identifiers, where available.
"isin": "US0378331005" |
| cusip [Optional, alternative-identifiers version only] | Only present for accounts granted access to alternative identifiers, where available.
"cusip": "037833100" |
Example JSON row (base version):
{
"symbol_id": 125625,
"ticker": "AAPL",
"exchange": "NASDAQ",
"country": "US",
"asset_class": "equity",
"delisted": false
}
Example JSON row (alternative-identifiers version):
{
"symbol_id": 125625,
"ticker": "AAPL",
"exchange": "NASDAQ",
"country": "US",
"asset_class": "equity",
"delisted": false,
"isin": "US0378331005",
"cusip": "037833100"
}