A plain-data ticker list for 34 markets with a tiny Python helper, so you can pull every Yahoo-style symbol for India, Japan, Germany or any other covered market in one line. Not investment advice: this is research and education material built from public-source or derived data; it is not a recommendation to buy or sell anything.
Open-Source Tools · How-To · Markets research
How to use global-ticker-universe: look up exchange-qualified tickers for 34 markets
Revised
· v1.0.0 · what changed
Code: github.com/herrrickshaw/global-ticker-universe
Watch the walkthrough
Watch on YouTube: youtu.be/hnP2Q4nRgdE
Why it is useful
- Who benefits: anyone who needs a list of tradable symbols per country before downloading prices or fundamentals, such as students, analysts and hobby quants.
- What it replaces: scraping each exchange website or hand-typing watch lists. One call, tickers_for('JP'), returns the Japan list.
- Symbols carry the exchange: India comes as RELIANCE.NS or .BO, Japan as 7203.T, Germany as SAP.DE. In the run, 7203.T was found in JP only, 005930.KS in KR only and SAP.DE in DE only, so the suffix tells you the venue.
- Evidence from the run: the helper loaded 74,239 symbols across 34 markets in well under a second, all unique, and the 16 bundled tests passed.
What it is for
The repository stores one JSON file, data/global_universe.json, with a list of Yahoo-Finance-style symbols per market, plus a helper module, global_tickers.py. You import the helper and ask for a market, several markets, or everything.
It is a universe list, not a price or fundamentals source. Use it as the input to a screener or data collector. Not investment advice: this is research and education material built from public-source or derived data; it is not a recommendation to buy or sell anything.
Who it is for
- Students and analysts building multi-country screens
- Data engineers who need a seed list for a price or fundamentals collector
- Non-programmers who want an AI assistant to filter the CSV for them
- Live prices, fundamentals or trading signals. The repo holds symbols and names only.
- Treating the list as complete or current. It is a snapshot, and some markets are only partly covered (see limits).
- Investment decisions. Not investment advice: this is research and education material built from public-source or derived data; it is not a recommendation to buy or sell anything.
What you need
| Requirement | Why | How to get it |
|---|---|---|
| Python 3 | runs the helper | python.org or brew install python |
| pytest (optional) | runs the bundled tests | pip install pytest |
| Not needed | no API key, no network, no GPU for the lookup helper | the data files are in the repo |
Get the code and an AI assistant
You do not have to be a programmer. Get the repository, give it to an AI assistant, and ask in plain language. Any of these routes works:
| Tool | What you need | Best for |
|---|---|---|
| GitHub | Free account to fork or star; git to clone, or the green Code button, then Download ZIP, or open in Codespaces | Getting the code and keeping up with updates |
| Claude Code | Claude subscription or API key; run claude inside the cloned folder | Letting the AI read and run the whole repo |
| Gemini CLI | Google account; run gemini inside the cloned folder | The same hands-on workflow with Gemini |
| Claude.ai, Gemini or ChatGPT in the browser | A chat account; upload README.md and the files you care about (or paste the output of git ls-files) | Understanding the project and asking questions without installing anything |
| Other tools (Copilot Chat, Cursor, Codex CLI) | Open the cloned folder in the tool and point it at README.md first | Editing and extending the code |
git clone https://github.com/herrrickshaw/global-ticker-universe.git
cd global-ticker-universe
claude # or: gemini
Install
- Get the code
git clone https://github.com/herrrickshaw/global-ticker-universe.git cd global-ticker-universe - Optional: an environment for the tests
python3 -m venv .venv && source .venv/bin/activate pip install -r requirements-dev.txt
Quick start: commands and what you should see
Print the market summary table
python3 global_tickers.py
A table of market code, exchange and ticker count, then the first five tickers for India, the US and Japan.
Pull symbols in your own script
from global_tickers import tickers_for, market_codes
print(market_codes()[:5])
print(tickers_for('JP')[:3])
['IN', 'US', 'JP', 'KR', 'AU'] and ['1301.T', '1332.T', '1333.T'].
Run the tests
python3 -m pytest -q
16 passed.
Sample outputs
Real output from a run on the date shown in the sources line; trimmed to fit.
Market summary (first rows and total)
python3 global_tickers.py
Code Market Exchange Tickers
IN India NSE/BSE 5,981
US United States NYSE/NASDAQ/AMEX 7,726
JP Japan TSE 3,618
KR South Korea KRX 2,606
DE Germany Xetra + Frankfurt 17,121
AT Austria Vienna Stock Exchange 8,813
TOTAL 34 markets 74,239
Trimmed to six of the 34 rows.
Which market does a symbol belong to?
for q in ('7203.T','005930.KS','RELIANCE.NS','SAP.DE'):
print(q, [c for c in market_codes() if q in tickers_for(c)])
7203.T ['JP']
005930.KS ['KR']
RELIANCE.NS ['IN']
SAP.DE ['DE']
Exchange-qualified symbols resolve to exactly one market.
Suffix mix inside a market
Counter of symbol suffixes per market
IN: .NS 3,247 and .BO 2,734
DE: .F 16,080 and .DE 1,041
UK: .L 2,713
JP: .T 3,618
India is listed on both NSE and BSE, so some companies appear twice (once per exchange).
Asking for an unknown market
tickers_for('XX')
ValueError: Unknown market 'XX'. Run universe_builder.py first.
A clear error rather than an empty list.
Ways to use it
| Method | How it works |
|---|---|
| Python import | tickers_for('IN','JP') returns a list of Yahoo-style symbols to feed a downloader. |
| Flat CSV | data/validated_universe_flat.csv has market_code, market_name, exchange and yf_symbol columns; open it in a spreadsheet or load it with pandas. |
| Ask an AI assistant | Clone the repo, run your assistant inside it, and ask for counts, filters or a deduplicated list. |
Sample prompts for your AI assistant
Copy, paste and edit the parts in [brackets].
- Claude: Read global_tickers.py and data/global_universe.json in this repo, then list every market code with its ticker count and exchange.
- Gemini: Using tickers_for from global_tickers.py, write a script that saves all German and Austrian symbols to a CSV, one column per suffix.
- ChatGPT: I uploaded validated_universe_flat.csv. How many Indian symbols end in .NS and how many in .BO? Show a small table.
- GitHub (Copilot Chat): Add a function that returns symbols for a market filtered by suffix, with a test in tests/test_global_tickers.py.
- Claude: Which markets in global_universe.json look partly covered, based on ticker counts versus the real exchange size? Explain how you decided.
Limits and honest caveats
- Snapshot only. The README says the validated flat file is as of July 2026; nothing refreshes it automatically.
- Mismatch found in the run: the README says the universe was widened to 75,815 symbols, with Taiwan 1,958 and Singapore 854 after the TPEX and SGX merge. The committed global_universe.json loaded in this run gives 74,239 symbols, Taiwan 1,065 and Singapore 171, and the README itself says the 60,971 flat file is separate from the later additions. Treat counts in the README and in the JSON as different snapshots.
- US symbols are bare (for example 'A', 'AA'); the exchange (NYSE, NASDAQ, AMEX) is not in the symbol. Do not infer an exchange from the ticker shape.
- Some markets are small samples (Poland 20, Belgium 20, Greece 25), and China is flagged in the README as a coverage gap.
- The SGX list has no published reuse licence; check the exchange terms before redistributing. The TPEX list needs attribution.
- Symbols are not validated for being tradable today. Not investment advice: this is research and education material built from public-source or derived data; it is not a recommendation to buy or sell anything.
Sources: Ran global_tickers.py, a symbol lookup script and pytest from a fresh clone of github.com/herrrickshaw/global-ticker-universe (commit 6bcdbe5) in a throwaway virtualenv on 19 October 2026. README and data files as committed. No network calls.
- v1.0.0 — 22 October 2026 — first published.
About this article: Researched, written and edited by Umashankar Triplicane Dwarakanathan, with AI research assistance; every figure is meant to trace to the primary source cited. See the Editorial Policy for how sourcing, AI use and corrections work.