Is there a Morningstar API alternative for developers and small teams?
Morningstar's data is licensed through enterprise agreements. For a self-serve, per-request API that returns the factsheet of any UCITS fund or ETF by ISIN, with a free plan and a commercial licence from $49, here is what FundFacts API does and does not replace.Updated 12 September 2026 · by FundFacts APIShort answer
Yes, for the factual layer. Morningstar licenses its database, ratings and analytics through enterprise agreements; FundFacts API is self-serve, keyed by ISIN, and returns the factsheet figures the fund house itself publishes (TER, risk indicator, holdings, exposures, returns, KID costs) with a free plan and a commercial licence from $49 a month. It does not replace Morningstar's proprietary ratings, style boxes or analyst research; it replaces the part where you need the published numbers as JSON without a contract.
What is comparable and what is not
| Morningstar | FundFacts API | |
|---|---|---|
| Access | Enterprise licence, sales process | Sign up, key in a minute, per-request plans |
| Key | Morningstar IDs, tickers, ISIN | ISIN |
| Factual data (fees, holdings, exposures, returns, risk indicator, KID costs) | ✓ | ✓, from the fund house's documents, with as-of date |
| Proprietary ratings (stars, medalist), style box, analyst reports | ✓ | ✗ |
| Category system | Morningstar Category | Rule-based profile (kind, category, risk band, region, sector tilt, valuation, credit quality) with published rules |
| Coverage | Global, decades of history | Document-driven; deepest for UCITS and European fund houses; monthly series as far back as the fund house publishes |
| Terms | Negotiated | Commercial use from Pro ($49); Enterprise metered with DPA and SLA |
The full comparison states where Morningstar remains the right choice: ratings, long history, global reach and regulatory data services.
What the API gives you instead
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.
The profile block is the closest thing to a category: derived from the disclosed exposures with rules that are the same for every fund house, so it can be used as a filter facet without a licence.
Typical switch
Teams that used a Morningstar feed only to populate fund pages, screeners or client reports with the factsheet figures move those fields to the API and keep (or drop) the ratings subscription separately. The use cases describe the common builds.
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.bashcurl -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]}'