# where can I get a list of all yahoo finance stocks symbols

I remember having seen that somewhere, I can't find it any more. Anyone knows how can I get all the list of stocks on Yahoo finance.

Or even all american stocks, maybe Russell 1000/2000/3000...

## 8 Answers

BATS has a nice downloadable file: http://batstrading.com/market_data/listed_symbols/

There's a CS and XML. They have 7,000 stocks in that list. Good stocks, not OTC.

• that's a cool one, it doesn't have non US, or I couldn't find non-us. But I still accepted the answer since I only mentioned Russell index. Anything similar for the rest of the world? (UK, Australia ...) – Charbel May 25 '16 at 15:38
• No that I've found. US Markets have the best data sources due to popularity. – Allen Maxwell May 26 '16 at 21:30
• After downloading the csv I only have 359 symbols though – hipoglucido May 4 '20 at 17:42

For American stocks: if you are using Python 3, you can first, from a terminal, do

pip install get-all-tickers


then

from get_all_tickers import get_tickers as gt

list_of_tickers = gt.get_tickers()
# or if you want to save them to a CSV file
get.save_tickers()


Alternatively, you can clone the file from https://github.com/shilewenuw/get_all_tickers/blob/master/get_all_tickers/tickers.csv

I have found this tool: https://github.com/Benny-/Yahoo-ticker-symbol-downloader

You can get a list of tickers for free using Finnhub's API.

You just need to request a free API key.

Check out the following documentation: https://finnhub.io/docs/api#stock-symbols

Yahoo Closed its API, we are also downloading manually all the symbols for our use. Also we are sharing it wil all on https://github.com/stockdatalab/YAHOO-FINANCE-SCREENER-SYMBOLS-AND-HISTORICAL-DATA. you can download from above link.

Google Yahoo both not providing symbol list any more also Google providing historical data only for one year of any company.

YQL seems to fail at queries with like '%AM%' and also there is no other way to get list of all stock symbols. but i think this can do the trick..

select * from yahoo.finance.industry where id in (1,2,3....260)

this will give you list of companies and there symbols. start with select * from yahoo.finance.industry where id in (112) and see if it works.

For common equities, you the find the list in here.

There are 69k stocks from 49 exchanges.

Also, these tickers comply with Yahoo Finance's standard.

I have tried the above the code to scrape Bursa Malaysia stock exchange. Bursa Malaysia has about 968 stocks but the code below only scrape 40 of it. Any amendment to the code?

Hope for help. Thanks in advance.

import requests
import json
import time

BASE_URL = "https://in.finance.yahoo.com/screener/unsaved/4a033d87-0423-46a6-9b83-5565629ef366?dependentField=sector&dependentValues="

cnt = 100
offset = 0
flag = 1
temp  = 10
name_to_symbol = dict()

while flag > 0:
url = BASE_URL.replace("OFFSET", str(offset))
url = url.replace("COUNT",str(cnt))
offset += cnt

response = requests.get(url)
s = str(response.text)
jsonArrayStart = s.find('"results":{"rows"') + 18
jsonArrayEnd = jsonArrayStart + 1

while s[jsonArrayEnd] != ']':
jsonArrayEnd += 1

jsonArrayString = s[jsonArrayStart: jsonArrayEnd+1]
jsonArray = json.loads(jsonArrayString)
print(len(jsonArray))
if len(jsonArray) != cnt:
flag = 0

for obj in jsonArray:
if 'longName' in obj:
name_to_symbol[obj['symbol']] = obj['longName']
elif 'shortName' in obj:
name_to_symbol[obj['symbol']] = obj['shortName']
else:
name_to_symbol[obj['symbol']] = obj['symbol']

time.sleep(10)

name_to_symbol
$$$$
`