Getting started

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 API

Short 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

DocumentWhat is read from itTypical age
Product pageName, share class, currency, AUM, inception, distribution policy, TER, benchmark, objectiveDays
Monthly factsheetTop holdings, sector / country / asset tables, calendar and annualised returns, portfolio characteristics (P/E, duration, YTM, ratings)Month end
PRIIPs KID1–7 risk indicator, cost table (entry, exit, ongoing, transaction, performance fee, reduction in yield), SFDR article, objective textAnnual, updated on change
Holdings file (CSV / XLSX)Full constituents where the issuer publishes onePrevious trading day
NAV historyMonthly series, volatility, Sharpe, max drawdownPrevious 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, null or 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 a rules version; 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; expiresAt says 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.
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

Do you scrape websites?

The API reads public documents that the management company publishes for investors: product pages, PDFs, holdings and NAV files. Per-issuer adapters know where each fund house publishes them; the crawler honours the rate any site can serve.

What if a fund house changes its factsheet layout?

The adapter for that issuer is updated; until then the fields that could not be read come back empty rather than wrong. Coverage is measured continuously and published on the coverage pages.

How current are the figures?

Each ISIN is re-read from the fund house's documents at most every 24 hours. data.dataAsOf is the as-of date printed on the documents, typically the last month end for a factsheet and the last trading day for holdings files.

Try it on your own ISINs

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