Where does the fund data come from, and can I trust it?
Every figure is read from the documents the fund's management company publishes: product page, monthly factsheet, PRIIPs KID, holdings and NAV files. No third-party vendor, no estimates, an as-of date on every payload.Updated 12 September 2026 · by FundFacts APIShort answer
From the fund house itself. For each ISIN the API reads the management company's product page, monthly factsheet, PRIIPs KID and, where published, the holdings file and NAV history, and normalises them into one JSON shape. Nothing comes from a third-party data vendor and nothing is estimated: fields the fund does not disclose come back empty, every payload carries data.dataAsOf, and the figures are re-read every 24 hours.
The documents, per fund house
| Document | What is read from it | Typical age |
|---|---|---|
| Product page | Name, share class, currency, AUM, inception, distribution policy, TER, benchmark, objective | Days |
| Monthly factsheet | Top holdings, sector / country / asset tables, calendar and annualised returns, portfolio characteristics (P/E, duration, YTM, ratings) | Month end |
| PRIIPs KID | 1–7 risk indicator, cost table (entry, exit, ongoing, transaction, performance fee, reduction in yield), SFDR article, objective text | Annual, updated on change |
| Holdings file (CSV / XLSX) | Full constituents where the issuer publishes one | Previous trading day |
| NAV history | Monthly series, volatility, Sharpe, max drawdown | Previous trading day |
The coverage pages list, per fund house, which of these documents exist and therefore which sections of the payload are populated. The freshness page describes how each series is computed.
What "trust" means here
- Provenance is single-source. A figure in the payload is the figure printed by the fund house at
dataAsOf. When two documents disagree (a factsheet TER and a KID ongoing-charges figure) both are returned in their own fields rather than merged. - No inference into gaps. Fields that do not apply to the fund's asset class are empty strings,
nullor empty arrays, never missing keys; treat empty as "not disclosed", not as zero.. - Derived fields are labelled.
profile(kind, category, risk band, concentration…) is computed from the disclosed figures with published rules and carries arulesversion; the raw values it was derived from are in the payload next to it. - Refreshed daily. Each ISIN is re-read at most every 24 hours;
expiresAtsays when the next request will do so.
What it is not
It is not a licensed feed from an index provider or a ratings agency, and it does not include analyst ratings, fund flows, intraday prices or anything the fund house does not publish. It is the factsheet, as data.
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]}'