GET /symbols/reference.csv | /symbols/reference.json 

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 Specifications

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:
  • Base version: returned to accounts with base reference access. Includes symbol_id, ticker, exchange, country, asset_class, and delisted.
  • Version with alternative identifiers: returned to accounts additionally granted access to alternative identifiers. Includes everything in the base version, plus isin and cusip where available.
Contact your Stocktwits account representative if you need access to the alternative-identifiers version.
Important notes
  • This is a current-state snapshot — it does not include historical/point-in-time ticker changes. A symbol's row always reflects its current ticker and lifecycle status.
  • Symbols that are still delisted (not fully removed) are included, with delisted set accordingly.
  • Symbols that were merged into another symbol and fully removed as part of that merge will not appear in this dataset at all — this is expected, not an error.
  • Not all fields are available for every symbol (e.g. isin/cusip/country/asset_class may be blank/null where Stocktwits doesn't have that data).

Responses

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.

Example request using curl

The following example request is accomplished using cURL on the command line.

  • The 'username':'password' will need to be replaced with your user login and password in order to download the file.
  • -JLO option L: Follows redirects. The url used to download the file is a temporary link that is presigned with your authorization.
  • -JLO option J: Use the remote file name. This lets curl use the file name on the server instead of the redirecting url as the file name being saved.
  • -JLO option O: Save the response as a 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"

Example request using python

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)
          

Data Format 

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"
}