Choosing a data source

Where can I get mutual fund data as JSON?

Mutual funds have no ticker feed; their data lives in factsheets and KIDs. FundFacts API returns it as JSON per ISIN for UCITS and other open-end funds from 60+ managers: fees, risk indicator, holdings, exposures, returns, objective, as-of date. Coverage and code.Updated 12 September 2026 · by FundFacts API

Short answer

FundFacts API. Mutual funds (open-end funds, active or index) are identified by ISIN and documented by factsheets and KIDs rather than exchange feeds, and the API reads exactly those: GET /funds/{isin} returns name, share class, category, TER and KID costs, the 1–7 risk indicator, top holdings, sector, country, asset and credit-quality breakdowns, calendar and annualised returns, the objective and dataAsOf as JSON. Coverage is deepest for UCITS managers; try any ISIN on the Free plan.

Why mutual funds are harder than ETFs

ETFs are listed, so price APIs know them by ticker and issuers publish daily holdings files. Most mutual funds are not listed: no ticker, no exchange page, data only in the manager's monthly factsheet and the KID. That is why equity-market APIs return nothing for them, and why an ISIN-keyed, document-reading source is needed.

What the API returns for a mutual fund

  • Identity: name, shareClass, structure, keyFacts.manager, managerTenure, investmentObjective.
  • Costs: headlineMetrics.ter, costs.* from the KID.
  • Risk: riskRating, profile.riskBand, headlineMetrics.volatility3y, sharpe3y, metrics.maxDrawdown.
  • Composition: topHoldings (the top ten most factsheets print), sector, geography, assetAllocation, creditQuality, maturity.
  • Performance: calendarReturns, annualisedReturns, cumulativePerformance, indexedPerformance versus benchmarkName.
  • Regulation: sfdrArticle, dataAsOf.
python
import os, requests
r = requests.get("https://fundfactsapi.com/api/v1/funds/LU1681043599", # an active fund share class
headers={"Authorization": f"Bearer {os.environ['FUNDFACTS_API_KEY']}"}, timeout=300)
f = r.json(); d = f["data"]
print(f["name"], d["keyFacts"]["manager"], d["headlineMetrics"]["ter"], d["riskRating"], d["topHoldings"][:5], d["dataAsOf"])

Coverage

Active and index funds from managers such as Fidelity, J.P. Morgan, Schroders, Pictet, Nordea, Robeco, Carmignac, Flossbach von Storch, Franklin Templeton, Capital Group, T. Rowe Price, Morgan Stanley IM, Vontobel, Union Investment, Raiffeisen, Erste, Generali, Baillie Gifford, Artemis, Jupiter and Liontrust are covered; the coverage pages list each with the sections it populates. Funds from managers without an adapter return 404; POST /extract turns their factsheet PDF into the same JSON.

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

Verify it yourself

The demo endpoint returns the live payload for a fund that is already in the store, without a key. Everything on this page can be checked against it.
bash
curl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, asOf: .data.dataAsOf, ter: .data.headlineMetrics.ter, risk: .data.riskRating, top: .data.topHoldings[:3]}'

Reference

Frequently asked questions

Do you cover US mutual funds ('40 Act)?

Only where the manager publishes documents the adapters read; coverage is built around UCITS and European managers. Try the ISIN on the Free plan; a 404 means not covered.

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.

Try it on your own ISINs

One request returns key facts, holdings, risk and performance as JSON. Free plan, no card.