Thinking global, living local

How to use global-ticker-universe: look up exchange-qualified tickers for 34 markets

October 19, 2026

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

Skip to article content
Text Size

Revised · v1.0.0 · what changed

74,239tickers in the committed universe file
34markets
16tests passed in 0.05 s
0duplicate symbols (checked)

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
Not for.
  • 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

RequirementWhyHow to get it
Python 3runs the helperpython.org or brew install python
pytest (optional)runs the bundled testspip install pytest
Not neededno API key, no network, no GPU for the lookup helperthe 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:

ToolWhat you needBest for
GitHubFree account to fork or star; git to clone, or the green Code button, then Download ZIP, or open in CodespacesGetting the code and keeping up with updates
Claude CodeClaude subscription or API key; run claude inside the cloned folderLetting the AI read and run the whole repo
Gemini CLIGoogle account; run gemini inside the cloned folderThe same hands-on workflow with Gemini
Claude.ai, Gemini or ChatGPT in the browserA 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 firstEditing and extending the code
git clone https://github.com/herrrickshaw/global-ticker-universe.git
cd global-ticker-universe
claude      # or: gemini

Install

  1. Get the code
    git clone https://github.com/herrrickshaw/global-ticker-universe.git
    cd global-ticker-universe
  2. 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

MethodHow it works
Python importtickers_for('IN','JP') returns a list of Yahoo-style symbols to feed a downloader.
Flat CSVdata/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 assistantClone 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.

Revision history.
  • 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.

Umashankar Triplicane Dwarakanathan
Contact Us
Umashankar Triplicane Dwarakanathan
Investment Promotion & Energy-Sector Leader · Chennai, Tamil Nadu, India
LinkedIn → GitHub → Email +91 78273 81696
How this site works

Data-led analysis of India's trade, currency and industrial policy. Every article is built from primary official sources, and every figure links back to the release, table or filing it came from.

Sources. DGCI&S TradeStat (imports/exports, HSN-wise) · PIB (government press releases, January 2017 to today, refreshed daily) · RBI (circulars, balance of payments) · MoSPI (CPI/WPI, IIP) · PARIVESH (environmental clearances) · CCIL (bond yields) · BIS (policy rates) · SEBI, NSE/BSE and SEC filings for company data.

Interpretation. Figures carry their vintage and retrieval date; estimates and press-reported numbers are labelled as such; where sources disagree, both are shown. Corrections are made visibly, never silently. Articles are written with AI assistance from the cited sources — AI-generated text can misstate figures even when working from real material, so verify any number that matters to a decision against the linked primary source.

footer

Browse all articles by topic

Every piece on this blog, grouped. Or read the full index.

Agriculture & FertilisersAI ToolsChemicalsClimate & CarbonEnergy & FuelsGas & LNGImport SubstitutionIndustrial PolicyMarkets & FinanceMobility & EVPrices & InflationTextilesTrade & Tariffs

Each topic is a live archive page that updates itself as pieces are labelled. It replaces a hand-kept list that had fallen 18 articles behind.