Getting started

What does a fund factsheet look like as JSON?

The envelope and every section of the data object: key facts, fees, risk indicator, profile, holdings, breakdowns, returns, series, metrics, KID costs and as-of date, with a real example.Updated 12 September 2026 · by FundFacts API

Short answer

One object per ISIN: an envelope (isin, name, cached, generatedAt, expiresAt, plan, quota) around a data object with keyFacts, headlineMetrics, riskRating, profile, topHoldings, sector, geography, region, assetAllocation, creditQuality, maturity, calendarReturns, annualisedReturns, cumulativePerformance, indexedPerformance, metrics, sfdrArticle, costs, investmentObjective, benchmarkName and dataAsOf. Breakdowns are arrays of { label, weight }; money and percentages are strings as printed.

Envelope

KeyMeaning
isin, nameCanonical ISIN and official share-class name
cachedWhether this call reused the stored payload
generatedAt, expiresAtWhen it was produced and when it will be re-read (24 h)
plan, quotaYour plan and the monthly / burst allowance left
dataThe factsheet

The data object

SectionKeysShape
IdentityinvestmentObjective, securityType, structure, shareClass, benchmarkNamestrings
Key factskeyFacts.{assetClass, subAsset, currency, aum, inception, distribution, holdings, manager}strings / number
Fees & riskheadlineMetrics.{ter, aum, volatility3y, sharpe3y, yieldToMaturity, modifiedDuration}, riskRatingstrings, number 1–7
Profileprofile.{kind, category, riskBand, concentration, regionFocus, regionTilt, sectorTilt, valuation, creditQuality, rateSensitivity, equityShare, rules}derived labels
BreakdownstopHoldings[], sector[], geography[], region[], assetAllocation[], creditQuality[], maturity[], instrument[]{ label, weight } (name for holdings)
ReturnscalendarReturns.{years, fund, benchmark}, annualisedReturns[], cumulativePerformance[], indexedPerformance.points[]numbers in percent; series { date, fund, index }
Metricsmetrics.{peRatio, incomeYield, maxDrawdown, effectiveDuration, averageRating, sevenDayYield, wam, wal, …}strings as printed
RegulationsfdrArticle, costs.{entry, exit, ongoing, transaction, performanceFee, riy1y, riyRhp, recommendedHoldingPeriod}number, strings
FreshnessdataAsOf, generatedAtdates

Money and percentages arrive as the fund house prints them, as strings such as "0.20%" or "USD 151.7bn". Breakdown weights and return series are plain numbers in percent. Fields that do not apply to the fund's asset class are empty strings, null or empty arrays, never missing keys; treat empty as "not disclosed", not as zero.

A real one

GET https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 returns the live payload for iShares Core MSCI World UCITS ETF without a key. The field reference documents every key with type, meaning and example, and the OpenAPI spec carries the same as a schema for code generation.

Bond and money-market funds

The shape is identical; the sections that apply differ. Bond funds populate creditQuality, maturity, instrument, headlineMetrics.yieldToMaturity and modifiedDuration; money-market funds metrics.sevenDayYield, wam and wal; equity funds metrics.peRatio and sector. Unused sections are empty, never absent.

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]}'

Frequently asked questions

Is there a JSON Schema?

The OpenAPI 3.1 document at /openapi.json contains the schemas for every endpoint's request and response, and the TypeScript SDK ships the generated types.

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.