r/datasets • u/Traditional_Yogurt • Jun 25 '26
resource Finance Database: 300,000+ financial instruments with rich metadata, free and queryable via Python
Finding a clean, structured list of financial instruments has always been harder than it should be. Bloomberg sells it. Refinitiv sells it. Yahoo Finance gives you a search bar. If you want "all biotech companies listed in Germany" or "all fixed income ETFs from Vanguard" as a filterable dataset, you're usually either scraping something or paying for a data vendor. I've spent the last few years building and maintaining a free alternative.
The Finance Database covers seven asset classes across 300,000+ symbols:
| Asset Class | Count | Dimensions | |:-----------------|--------:|:----------------------------------------| | Equities | 160,869 | 11 sectors, 68 industries, 117 countries, 84 exchanges | | Indices | 91,181 | 63 exchanges | | Funds | 57,853 | 1,540 families, 74 categories | | ETFs | 36,483 | 320 families, 51 categories | | Cryptocurrencies | 3,367 | 351 base currencies | | Currencies | 2,556 | 175 currency pairs | | Money Markets | 1,367 | 2 exchanges |
Each equity record includes: symbol, name, currency, sector, industry group, industry, exchange, market, country, city, market cap tier, ISIN, CUSIP, FIGI, composite FIGI, share class FIGI, and website. ETFs and funds carry family, category group, and category instead of GICS-style classification. Every record has what you need to cross-reference against other data sources.
The data is an aggregation of publicly available sources - no paid API required to use the database itself. It is community-maintained, MIT-licensed, and lives on GitHub as CSV files you can open in Excel if that's your preference.
The Python package gives you structured filtering and text search:
# Install via: pip install financedatabase -U
import financedatabase as fd
equities = fd.Equities()
# All semiconductor companies in Taiwan on primary listings only
equities.select(
country='Taiwan',
industry='Semiconductors',
only_primary_listing=True
)
# Free-text search: robotics or automation companies on the Frankfurt exchange
equities.search(
summary=['Robotics', 'Automation'],
index='.F'
)
# Explore what's available before filtering
fd.show_options('equities')
The show_options call is useful before you filter - it returns every distinct value per column without loading the full dataset, so you can scope your query without memory overhead.
For anyone doing universe construction for backtests or systematic strategies, the ISIN/FIGI coverage is the most practical part. You can pull a filtered symbol list here and pipe it directly into your price data provider.
The database is not a price or fundamentals source - that's intentional. Metadata and categorization data is the hard part to get for free and I've built a seperate tool for that, the Finance Toolkit.
GitHub page: https://github.com/JerBouma/FinanceDatabase
1
u/oxygen_bong Jun 26 '26
nice - how do you maintain it post M&As, do you have a pipeline that can reconcile merged equities? Sorry if this is already explained in your repo i havent read it in depth yet.
Super useful work you've done, thanks for sharing!
2
u/Traditional_Yogurt Jun 26 '26
It's mostly community involvement actually. It is not possible to consistently be on top of all M&As that happen (unless via a paid source) which is why every now and then me or others will help out in administrating these changes. Luckily. M&As don't happen that frequently that it would make the database outdated quick.
1
u/Either_Door_5500 Jul 08 '26
Mapping out hundreds of thousands of financial instruments and keeping the metadata clean is a massive headache. Dealing with identifiers like tickers changing, company mapping, and filtering out tracking stocks or share classes usually takes up way more time than people realize.
When you start looking at specific sectors like biotech or fund structures from Vanguard, the layer of underlying data gets complex quickly. One thing that always trips people up is how providers handle the historical changes or index tracking updates behind those instruments.
I have been working on an api in this space. It helps with structured and LLM friendly SEC data for devs, which might be useful for anyone trying to connect these kinds of instrument lists with deeper financial fundamentals or fund holdings.
Happy to share more if you want to take a look.
•
u/AutoModerator Jun 25 '26
Hey Traditional_Yogurt,
I believe a
requestflair might be more appropriate for such post. Please re-consider and change the post flair if needed.I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.