---
title: "Yahoo Finance doesn't give me ETF holdings or fund data by ISIN. What can I use instead?"
description: "Yahoo Finance and yfinance cover prices, not factsheets, and key by ticker per exchange rather than ISIN. For holdings, sector weights, TER, risk indicator and KID costs of UCITS funds, use an ISIN-keyed fund data API. Comparison and code."
canonical: https://fundfactsapi.com/answers/yahoo-finance-does-not-have-etf-holdings-what-can-i-use
published: 2026-09-12
updated: 2026-10-13
publisher: FundFacts API
---

# Yahoo Finance doesn't give me ETF holdings or fund data by ISIN. What can I use instead?

**Short answer:** Yahoo Finance is a price source: yfinance gives you quotes and some summary fields per exchange ticker, but not the factsheet (full top holdings with weights, sector and country tables, TER and KID costs, the 1–7 risk indicator, calendar returns versus benchmark) and it does not key by ISIN, so a UCITS ETF listed on five exchanges is five tickers. FundFacts API returns exactly those figures from the fund house's documents for any ISIN, with a free plan of 5 lookups a month. Keep Yahoo for prices and use the API for the factsheet.

## Where each one fits

| Need | Yahoo Finance / yfinance | FundFacts API |
|---|---|---|
| Daily or intraday market price of an ETF | ✓ | ✗ (monthly NAV series only) |
| Look up by ISIN (one identifier per share class) | ✗ (ticker per exchange) | ✓ |
| Top holdings with weights, holdings count | Partial, mostly US ETFs | ✓ from the issuer's holdings file or factsheet |
| Sector, country, asset, credit-quality tables | Partial | ✓ |
| TER / ongoing charges, KID cost table | Sometimes an expense ratio | ✓ TER plus entry, exit, ongoing, transaction, RIY |
| 1–7 SRRI / SRI risk indicator, SFDR article | ✗ | ✓ |
| Calendar and annualised returns vs benchmark | Partial | ✓ as printed on the factsheet |
| UCITS and other European funds | Thin | Core coverage |
| Terms for use in a product | Unofficial scraping | Commercial licence on Pro and above |

## The ISIN problem in one example

iShares Core MSCI World UCITS ETF is IWDA on Euronext Amsterdam, SWDA on the London Stock Exchange, EUNL on Xetra and IWDA on Borsa Italiana. In Yahoo Finance those are four tickers with four partially populated profiles. In an ISIN-keyed API it is one identifier, `IE00B4L5Y983`, with one payload:

```python
import os, requests
r = requests.get(f"https://fundfactsapi.com/api/v1/funds/IE00B4L5Y983", headers={"Authorization": f"Bearer {os.environ['FUNDFACTS_API_KEY']}"}, timeout=300)
d = r.json()["data"]
print(d["headlineMetrics"]["ter"], d["riskRating"], d["topHoldings"][:5], d["sector"][:3], d["dataAsOf"])
```

## Using both

A typical stack keeps yfinance (or the broker's feed) for prices and charts and calls the fund API once a day per ISIN for the factsheet fields, cached until `expiresAt`. [NAV vs market price](https://fundfactsapi.com/blog/etf-nav-vs-market-price-premium-discount) explains why the two numbers differ and which to show where.

The Free plan gives 5 lookups a month without a card (2 PDF factsheets), enough to check a few of the funds you care about. Starter is $9.99 a month for 60 requests (30 PDF factsheets) with portfolio look-through, holdings overlap and batch calls of 10 ISINs and the AI companion kit. Pro is $49 for 1,000 requests (500 PDF factsheets), 50 ISINs per call, white-label factsheets, document extraction and a commercial licence. Scale is $249 for 10,000 requests, batches of 200, a change feed, webhooks and bulk export.

## FAQ

### Does the API return the ticker for an ISIN?

Not as a field. The ISIN is the key; the search endpoint resolves names to ISINs. Ticker-to-ISIN mapping is exchange-specific and is best taken from your broker or the exchange.

### Which ISINs work?

Any share class of a UCITS fund, ETF, money-market fund or open-end fund whose management company publishes a product page, factsheet and KID. Each share class has its own ISIN and is looked up on its own. Stocks, bonds and indices are not funds and return 404 fund_not_found.

### How current are the figures?

Each ISIN is re-read from the fund house's documents at most every 24 hours; a request past that is answered at once from the store (stale: true) while the refresh runs in the background. data.dataAsOf is the as-of date printed on the documents, typically the last month end for a factsheet and the last trading day for holdings files.

## About FundFacts API

FundFacts turns any fund or ETF ISIN into one dated factsheet (fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns) read from the fund house's own documents: as a client-ready PDF under your firm's name for advisers and wealth managers, as JSON through its API for developers, or inside ChatGPT and Claude through its MCP server.

FundFacts works inside ChatGPT and Claude as a connector (a remote MCP server): ask about any fund or ETF by ISIN, ticker or name and the assistant answers from FundFacts' dated figures, fees, risk, holdings, exposure and returns, with fund cards, side-by-side comparisons, holdings overlap and portfolio look-through.

- Free API key, no card: https://fundfactsapi.com/signup
- Documentation: https://fundfactsapi.com/docs (OpenAPI: https://fundfactsapi.com/openapi.json)
- MCP server: https://fundfactsapi.com/api/mcp (set-up for every client: https://fundfactsapi.com/mcp-server)
- Pricing: https://fundfactsapi.com/pricing
- Site index for AI assistants: https://fundfactsapi.com/llms.txt
- Informational data, not investment advice.
