ISIN → structured JSON · funds, ETFs, money market

The fund data API that turns any ISIN into a complete factsheet

Key facts, holdings, sector and country exposure, risk metrics, fees and performance versus benchmark, normalised into one JSON schema and refreshed every 24 hours. One REST call. No enterprise data licence.Free plan included · no credit card · GET /api/v1/funds/{isin}
Wealth managers & advisorsGenerate client-ready fund comparisons and factsheets from a list of ISINs.
Fintechs & robo-advisorsPower fund detail pages, screeners and portfolio look-through with one endpoint.
Research & data teamsPull consistent holdings, exposure and performance into notebooks and pipelines.

Everything on the factsheet, none of the PDF parsing

Built for wealth managers, robo-advisors, fintechs and research teams who need reliable fund data without negotiating enterprise data licences.

Factsheet-grade fields

Objective, asset class, fund size, inception, distribution policy, manager, benchmark, TER, SRRI risk rating and style box: the same key facts a PDF factsheet shows, as typed JSON.

Holdings & exposure

Top holdings with weights, country, region and sector breakdowns, credit quality and maturity buckets for bond funds, instrument mix for money-market funds.

Performance you can chart

Calendar-year returns, trailing annualised returns and a full cumulative series for fund and benchmark, plus a ready-to-plot version rebased to 100.

Risk statistics

3-year volatility and Sharpe ratio, maximum drawdown, P/E, income yield, yield to maturity, duration and equity correlation where they apply.

Always under 24 hours old

Each ISIN is crawled on demand and cached for one day. Responses tell you exactly when the data was generated and when it expires.

One endpoint, any fund

GET /api/v1/funds/{isin} covers UCITS funds, ETFs, money-market and open-end funds worldwide. No provider contracts, no per-field pricing.

One request in, a full factsheet out

This is a real response for iShares Core MSCI World ETF USD Acc (IE00B4L5Y983), produced by our crawler. Only the performance series are shortened here; the live API returns all 204 monthly points.
Request
curl https://fundfactsapi.com/api/v1/funds/IE00B4L5Y983 \
-H "Authorization: Bearer ffk_live_your_api_key"
What you getIdentity and key facts, SRRI risk rating and style box, top holdings, country and sector exposure, calendar and annualised returns versus the benchmark, TER, volatility, Sharpe, P/E, yield, drawdown, plus the as-of date of every figure.Cold ISINs are crawled live (this one took 86s); after that every call is served from cache for 24 hours.
Response200 OK · application/json
{
"isin": "IE00B4L5Y983",
"name": "iShares Core MSCI World ETF USD Acc",
"cached": true,
"generatedAt": "2026-09-02T13:21:56.645Z",
"expiresAt": "2026-09-03T13:21:56.645Z",
"plan": "pro",
"quota": {
"limit": 100,
"remaining": 99,
"resetAt": "2026-09-03T13:21:56.645Z"
},
"data": {
"investmentObjective": "The investment objective of the Fund is to provide investors with a total return, taking into account both capital and income returns, which reflects the return of the MSCI World Index. In order to achieve this investment objective, the investment policy of this Fund is to invest in a portfolio of equity securities that as far as possible and practicable consists of the component securities of the MSCI World Index, this Fund’s Benchmark Index.",
"securityType": "ETF",
"structure": "ETF",
"keyFacts": {
"assetClass": "Equities",
"currency": "USD",
"aum": "USD 151.7bn",
"inception": "Sep 25, 2009",
"subAsset": "Global Large-Cap Blend Equity",
"distribution": "Accumulating",
"holdings": 1344,
"manager": "Not Disclosed"
},
"riskRating": 4,
"managerTenure": "Lead manager · since 2009",
"topHoldings": [
{
"name": "NVIDIA Corp",
"weight": 5.43
},
{
"name": "Apple Inc",
"weight": 5.08
},
{
"name": "Microsoft Corp",
"weight": 3.92
},
{
"name": "Amazon.com Inc",
"weight": 2.79
},
{
"name": "Alphabet Inc Class A",
"weight": 2.18
},
{
"name": "Broadcom Inc",
"weight": 1.79
},
{
"name": "Alphabet Inc Class C",
"weight": 1.71
},
{
"name": "Meta Platforms Inc Class A",
"weight": 1.37
},
{
"name": "Micron Technology Inc",
"weight": 1.14
},
{
"name": "Tesla Inc",
"weight": 1.06
}
],
"geography": [
{
"label": "North America",
"weight": 75.54
},
{
"label": "Europe Developed",
"weight": 12.26
},
{
"label": "Japan",
"weight": 5.78
},
{
"label": "United Kingdom",
"weight": 3.34
},
{
"label": "Australasia",
"weight": 1.66
}
],
"sector": [
{
"label": "Technology",
"weight": 30.5
},
{
"label": "Financial Services",
"weight": 16.34
},
{
"label": "Industrials",
"weight": 10.83
},
{
"label": "Healthcare",
"weight": 9.27
},
{
"label": "Consumer Cyclical",
"weight": 8.79
}
],
"creditQuality": [],
"assetAllocation": [],
"region": [
{
"label": "North America",
"weight": 75.54
},
{
"label": "Europe Developed",
"weight": 12.26
},
{
"label": "Japan",
"weight": 5.78
},
{
"label": "United Kingdom",
"weight": 3.34
},
{
"label": "Australasia",
"weight": 1.66
}
],
"instrument": [],
"maturity": [],
"strategy": [],
"exposure": [],
"calendarReturns": {
"years": [
"2021",
"2022",
"2023",
"2024",
"2025",
"2026"
],
"fund": [
21.9,
-18,
23.9,
18.7,
21.2,
13.5
],
"benchmark": [
null,
null,
null,
null,
null,
null
]
},
"headlineMetrics": {
"yieldToMaturity": "0.0%",
"modifiedDuration": "",
"ter": "0.20%",
"aum": "USD 151.7bn",
"volatility3y": "11.9%",
"sharpe3y": "1.21"
},
"metrics": {
"peRatio": "18.7x",
"incomeYield": "1.62%",
"volatility3y": "12.24%",
"sharpe3y": "1.21",
"yieldToMaturity": "0.0%",
"effectiveDuration": "",
"effectiveMaturity": "",
"averageRating": "",
"sevenDayYield": "0.0%",
"wam": "",
"wal": "",
"maxDrawdown": "-9.29%",
"equityCorrelation": "0.98",
"equityBondSplit": ""
},
"styleBox": {
"row": 0,
"col": 1
},
"cumulativePerformance": [
{
"date": "2026-03",
"fund": 406.901429,
"benchmark": 409.855785
},
{
"date": "2026-04",
"fund": 455.496433,
"benchmark": 458.76036
},
{
"date": "2026-05",
"fund": 480.725749,
"benchmark": 484.195739
},
{
"date": "2026-06",
"fund": 476.541758,
"benchmark": 480.003871
},
{
"date": "2026-07",
"fund": 479.577257,
"benchmark": 482.980334
},
{
"date": "2026-08",
"fund": 496.644182,
"benchmark": 498.003528
}
],
"indexedPerformance": {
"points": [
{
"date": "2026-03",
"fund": 506.9,
"index": 509.86
},
{
"date": "2026-04",
"fund": 555.5,
"index": 558.76
},
{
"date": "2026-05",
"fund": 580.73,
"index": 584.2
},
{
"date": "2026-06",
"fund": 576.54,
"index": 580
},
{
"date": "2026-07",
"fund": 579.58,
"index": 582.98
},
{
"date": "2026-08",
"fund": 596.64,
"index": 598
}
],
"hasIndex": true
},
"annualisedReturns": [
{
"label": "1 Year",
"fund": 19.68,
"index": 19.548757
},
{
"label": "3 Years p.a.",
"fund": 17.11,
"index": 19.781362
},
{
"label": "5 Years p.a.",
"fund": 11.45,
"index": 10.981489
},
{
"label": "10 Years p.a.",
"fund": 12.82,
"index": 12.900739
},
{
"label": "Since Inception",
"fund": 11.01,
"index": null
}
],
"benchmarkName": "MSCI World NR USD",
"dataAsOf": "",
"generatedAt": "2026-09-02T13:21:56.645Z"
}
}

Every field a factsheet needs, already normalised

The data object follows one schema for every fund, whatever the asset class or provider. Panels that do not apply are simply empty.

Identity & key facts

Who issues the fund, what it invests in, how large it is and how it is structured.
investmentObjectivesecurityTypestructureshareClasskeyFacts.assetClasskeyFacts.subAssetkeyFacts.currencykeyFacts.aum+6 more

Risk rating & style

Regulatory risk indicator and the 3×3 equity/bond style box.
riskRatingstyleBox

Portfolio breakdowns

Every breakdown is an array of { label, weight } where weight is a percentage (0–100). Arrays are empty when the panel does not apply to the asset class.
topHoldingsgeographyregionsectorcreditQualityassetAllocationinstrumentmaturity+2 more

Performance

Calendar-year, cumulative, indexed and annualised returns for the fund and its benchmark.
calendarReturns.yearscalendarReturns.fundcalendarReturns.benchmarkcumulativePerformanceindexedPerformance.pointsindexedPerformance.hasIndexannualisedReturns

Headline metrics & risk statistics

Values are strings formatted as published (with % or units) so nothing is lost in conversion. Fields that do not apply to the asset class are empty strings.
headlineMetrics.terheadlineMetrics.aumheadlineMetrics.volatility3yheadlineMetrics.sharpe3yheadlineMetrics.yieldToMaturityheadlineMetrics.modifiedDurationmetrics.peRatiometrics.incomeYield+12 more

Freshness

When the underlying figures are dated and when the payload was produced.
dataAsOfgeneratedAt

Simple pricing that scales with your usage

Every plan returns the same complete factsheet JSON. Pick the request volume you need; upgrade or cancel any time.

Free

$0

forever
1 request / hourExplore the data model and prototype your integration.
  • 1 request per hour
  • Full structured factsheet JSON
  • 24-hour fresh data cache
  • Personal API key
  • Complete field documentation
Start for free

Pro

Most popular

$49

/ month
100 requests / dayFor advisors, analysts and small product teams.
  • 100 requests per day
  • Full structured factsheet JSON
  • 24-hour fresh data cache
  • Multiple API keys
  • Usage dashboard
  • E-mail support
Get Pro

Scale

$299

/ month
1,000 requests / dayFor platforms that screen and monitor whole fund universes.
  • 1,000 requests per day
  • Full structured factsheet JSON
  • 24-hour fresh data cache
  • Multiple API keys
  • Usage dashboard
  • Priority support
Get Scale
Prices in USD, billed monthly via Stripe. A request is any authenticated call to the funds endpoint, cached or not. Need more volume? Ask us about metered enterprise pricing.

Frequently asked questions

An ISIN is the 12-character International Securities Identification Number that uniquely identifies a security, for example IE00B4L5Y983. FundFacts API supports UCITS funds, ETFs, money-market funds and most open-end funds that are covered by public fund data providers, worldwide.

Each ISIN is crawled on demand and stored for 24 hours. Requests within that window return the cached payload instantly and are flagged with cached: true. After 24 hours the next request triggers a fresh crawl, so you never receive data older than a day.

Cached responses return in well under a second. A cold request has to collect the underlying documents and run structured extraction, which typically takes 1 to 3 minutes. Keep your HTTP timeout generous (we recommend 300 seconds) or pre-warm the ISINs you care about.

We aggregate publicly available fund information (fund documents, factsheets and market data) and normalise everything into a single JSON schema. Every payload carries the 'as of' date of the underlying figures so you know exactly how current each number is.

Yes. A request is any authenticated call to the funds endpoint, whether it is served from cache or freshly crawled. Invalid-key and rate-limited responses do not consume quota.

Yes, all paid plans allow commercial use inside your own applications and reports. Redistribution of the raw dataset as a competing data feed is not permitted. The data is informational and does not constitute investment advice.

You receive a 404 with code fund_not_found and an empty data skeleton, so your integration can handle equities, bonds or delisted securities gracefully.

Yes. For volumes above 1,000 requests a day we offer a metered plan billed monthly on invoice, with dedicated support. Contact us from the billing page.

Start with one ISIN. Scale to your whole universe.

Create a free account, grab an API key and make your first request in under a minute.Create free account