Skip to content
All library documents

Sources and Caveats for Building a Yahoo Finance Ticker Universe

Article Quant Q&A · Author: Charbel

Summary

The document collects approaches for finding broad lists of stock symbols compatible with Yahoo Finance or covering US and international markets. Suggested sources include exchange symbol files, downloadable ticker datasets, financial data APIs, community-maintained repositories, and scripts that query or scrape screeners. Some options focus on American listings, while others claim wider exchange or instrument coverage.

The answers reflect changing availability: they report that older Yahoo and Google data routes were no longer available, while newer community tools and APIs might still provide lists. The examples offer different levels of coverage and access, from static files to API requests and paginated scraping. Their counts, formats, and compatibility are claims made by individual answers, not a verified comparison; ticker universes can also change over time and may include differing security types or exchange coverage. Researchers should check source freshness and licensing before using a list in market-data workflows.

Key ideas

  • Ticker universes can be sourced from exchange files, APIs, repositories, and screener queries.
  • Some resources target US listings, while others claim international exchange coverage.
  • The availability and completeness of Yahoo Finance symbol sources changes over time.
  • Check update dates, instrument types, exchange coverage, and access terms before relying on a list.

Tags

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


# 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...

## Answer by Allen Maxwell (score 11, accepted)

https://quant.stackexchange.com/a/26177

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.

## Answer by Shile Wen (score 9)

https://quant.stackexchange.com/a/52909

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

## Answer by user2723329 (score 4)

https://quant.stackexchange.com/a/54802

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

```
#pip install finnhub-python
import pandas as pd
import finnhub

#list of available exchanges

df=pd.read_html("https://docs.google.com/spreadsheets/d/1I3pBxjfXB056-g_JYf_6o3Rns3BV2kMGG1nCatb91ls/edit#gid=0")
df1=df[0]
exc=df1.loc[:,"A"].dropna()

exclist=[]
for i in exc:
    exclist.append(str(i))
exclist=exclist[1:] #take out "name" from the list

#retrieve tickers from every exchange available
tickers=[]
finnhub_client = finnhub.Client(api_key="c46qn9iad3iagvmhdk7g")
for exchange in exclist:
    listofdicts=finnhub_client.stock_symbols(exchange)
    for dicts in listofdicts:
        tickers.append(dicts['symbol'])

print("You just got a list of %s tickers worldwide." % len(tickers), tickers)
```

## Answer by KIC (score 3)

https://quant.stackexchange.com/a/58429

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

It uses the search api https://finance.yahoo.com/_finance_doubledown/api/resource/searchassist;searchTerm=s6s?device=console&returnMeta=true

## Answer by user8827751 (score 1)

https://quant.stackexchange.com/a/37234

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.

## Answer by Joe Shakely (score 1)

https://quant.stackexchange.com/a/68052

#### Here's the best link i've found

Best Link I've Found

## Answer by Mike Lapenna (score 1)

https://quant.stackexchange.com/a/70106

You can try this - it pulls down 400000 tickers. https://github.com/mlapenna7/yh_symbol_universe

## Answer by Waqas Memon (score 0)

https://quant.stackexchange.com/a/31708

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.

## Answer by Desmond830 (score 0)

https://quant.stackexchange.com/a/61393

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.

## Answer by Vipul Gupta (score 0)

https://quant.stackexchange.com/a/65802

Here is the code to scrape all symbols present in that yahoo-finance screener. You can simply create a screener here

I have modified the code a little bit because yahoo-finance was returning an empty 404 response when working with the python requests module. Similar to this issue / solution

Here is the complete working code.

```
import requests
import json
import time

# Modify BASE_URL accordingly
BASE_URL = "https://finance.yahoo.com/screener/unsaved/79fce2f7-82fe-49ec-8098-88add84138ec?dependentField=sector&dependentValues=&offset=OFFSET&count=COUNT"

cnt = 100
offset = 0
flag = 1
temp  = 10
name_to_symbol = []
total = 0

while flag > 0:
    url = BASE_URL.replace("OFFSET", str(offset))
    url = url.replace("COUNT",str(cnt))
    offset += cnt
    
    response = requests.get(url, headers={'User-Agent': 'Custom'})
    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)
    if len(jsonArray) != cnt:
        flag = 0
    
    total += len(jsonArray)
    for obj in jsonArray:
        if 'longName' in obj:
            name_to_symbol.append([obj['symbol'], obj['longName']])
        elif 'shortName' in obj:
            name_to_symbol.append([obj['symbol'], obj['shortName']])
        else:
            name_to_symbol.append([obj['symbol'], obj['symbol']])
    time.sleep(10)
    
name_to_symbol
```

P.S - Sorry for the late response. Also, I have rejected all the edits as they were irrelevant and I have fixed the code now. In future I would recommend commenting on the post instead of suggesting an improper edit

HTH

## Answer by Francesco Cassani (score 0)

https://quant.stackexchange.com/a/79298

I made my own excel with 87k+ tickers, updated on May 2024, taken from Yahoo Finance lookup, I thought that would be helpful for a lot of folks out there so i have built a website in which I will continue to update it.

https://yftickers.wordpress.com/

I am considering adding indexes, ETFs and so on if I receive enough donations, so keep an eye on that if U want :)

## Answer by Veliko (score 0)

https://quant.stackexchange.com/a/79329

This is also comprehensive, with a breakdown by instrument type (stock, ETC, etc.), exchange, country. Published 2017. https://investexcel.net/all-yahoo-finance-stock-tickers/

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.