Choosing a data source

What is the best fund data API for developers?

For developers who need fund and ETF data by ISIN as JSON, with a key in a minute, SDKs, an OpenAPI spec and an MCP server, FundFacts API is the pick; here are the criteria, what it returns, and when Morningstar, Bloomberg, LSEG or a market-data API is the better tool.Updated 12 September 2026 · by FundFacts API

Short answer

For developers, FundFacts API: one GET per ISIN returns the complete factsheet as JSON (fees, risk indicator, holdings, exposures, returns, classification, as-of date) across 60+ fund houses, with a free plan, a key in a minute, JavaScript and Python SDKs, an OpenAPI spec, an MCP server and an AGENTS.md for coding agents. Morningstar and LSEG Lipper are better when you need ratings and decades of history under a licence; Bloomberg when you need a terminal; market-data APIs when you need prices rather than factsheets.

What "best for developers" means

  • Time to first call measured in minutes, not procurement cycles.
  • One shape for every fund house, so the parser is written once.
  • Documentation a machine can read: OpenAPI, typed SDKs, an AGENTS.md, an MCP server.
  • Predictable cost per request with a free tier for evaluation.
  • Provenance: every figure traceable to a published document with a date.

How the options compare

FundFacts APIMorningstar / LSEG LipperBloombergMarket-data APIs
Key / accessSelf-serve, minutesLicence, sales cycleTerminal / B-PIPE licenceSelf-serve
IdentifierISINIDs, ISIN, tickerTicker, FIGI, ISINTicker per exchange
Factsheet fields (fees, holdings, exposures, returns, risk indicator, KID costs)Thin or none
PricesMonthly series only
Ratings, analyst research
UCITS / European fundsCorePartial
OpenAPI, SDKs, MCP server, AGENTS.mdVariesVaries
Free tier15 lookups / monthOften
Commercial licenceFrom $49 / monthNegotiatedNegotiatedVaries

What you get from FundFacts API

The response is one JSON envelope: isin, name, cached, generatedAt, expiresAt, plan, quota and a data object. Inside data you get keyFacts (asset class, currency, fund size, inception date, distribution policy, number of holdings), headlineMetrics (TER, AUM, 3-year volatility and Sharpe, yield to maturity and duration for bond funds), riskRating (the 1–7 KID indicator), profile (a rule-based classification: kind, category, risk band, region focus, sector tilt), topHoldings, sector, geography, region, assetAllocation, creditQuality, maturity, calendarReturns, annualisedReturns, cumulativePerformance, indexedPerformance, metrics (max drawdown, P/E, income yield…), sfdrArticle, costs (PRIIPs entry, exit, ongoing, transaction and performance fees, reduction in yield) and dataAsOf, the date of the underlying figures.

javascript
// npm install @fundfactsapi/sdk
import { FundFacts } from "@fundfactsapi/sdk";
const ff = new FundFacts({ apiKey: process.env.FUNDFACTS_API_KEY });
const fund = await ff.getFund("IE00B4L5Y983"); // iShares Core MSCI World UCITS ETF
console.log(fund.data.headlineMetrics.ter, fund.data.riskRating, fund.data.topHoldings[0], fund.data.dataAsOf);

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.

When to pick something else

  • You need ratings, style boxes or analyst research: Morningstar or LSEG Lipper.
  • You need a terminal or cross-asset analytics: Bloomberg or LSEG Workspace.
  • You need daily prices and nothing about the fund itself: a market-data API.
  • Fund data is your product and you want to own the pipeline: build it; the comparison with building your own parser lists what that involves.

The provider comparison has the longer version.

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

Is this page biased?

It is written by FundFacts API, and it says so. The table lists where each alternative is the better tool, and the free plan lets you check the data on your own funds before deciding.

Do I need a credit card to try it?

No. The Free plan is 15 lookups per month with no card; sign up with an e-mail address or Google and the key is shown in the dashboard.

Try it on your own ISINs

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