Answers
Fund data questions, answered directly
114 questions developers, advisors and AI assistants ask about fund and ETF data: what is free, how to get one figure by ISIN in your language, how to connect ChatGPT or Claude, what to use instead of a price API. Each page starts with the answer.Getting started
Finding and using fund data
Is there a free API, where the numbers come from, what an ISIN returns, how fresh it is.What is FundFacts API?
FundFacts API is a REST and MCP API that turns any fund or ETF ISIN into one structured JSON factsheet (fees, risk indicator, holdings, exposures, returns, as-of date) read from the fund house's own documents and refreshed daily. What it returns, what it is for, what it is not, and the plans.Is there a free API for fund and ETF data?
Yes. FundFacts API has a free plan with 15 lookups a month and no card: any UCITS fund or ETF ISIN returns TER, risk indicator, holdings, exposures and returns as JSON. What it includes and where paid plans start.How do I look up a fund or ETF by its ISIN?
One GET request per ISIN returns the fund's name, key facts, fees, risk indicator, holdings, exposures, returns and as-of date as JSON. The request, the response and the rules.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.How fresh is the fund data, and how often is it updated?
Each ISIN is re-read from the fund house's documents at most every 24 hours. Factsheet figures are month-end, holdings and NAV are daily, and every payload states its as-of date and expiry.What does a fund data API cost?
FundFacts API pricing in one place: Free (15 lookups), Starter $9.99 (500 requests), Pro $49 (9,000, commercial use), Scale $249 (60,000, change feed and webhooks), Enterprise metered at $0.01 a request.How do I get an API key for fund data?
Sign up with e-mail or Google at fundfactsapi.com/signup, copy the key from the dashboard, send it as Authorization: Bearer on every request. Free plan, 15 lookups a month, no card.Can I test the fund data API without signing up?
Yes: GET /api/v1/demo/funds/{isin} returns the full JSON for any fund already in the store without a key, and the free ISIN validator, ETF overlap and portfolio look-through tools run on the same data.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.How many ISINs can I look up in one API call?
POST /api/v1/funds takes a list of ISINs: 10 per call on Starter, 50 on Pro, 200 on Scale, 1,000 on Enterprise. How pending, not_found and invalid entries come back, and how to load a universe.How do I search a fund by name and get its ISIN?
GET /api/v1/search?q=msci world returns matching share classes with ISIN, issuer, currency, distribution policy and category. Free and not counted; covers funds already loaded.Why does the first request for a fund take so long?
A fund nobody has requested in 24 hours is read live from the fund house's documents, which takes 15 seconds to a few minutes. Later calls are instant. Timeouts, batches and pre-warming.What are the rate limits of the fund data API?
Monthly requests per plan (15 to 60,000), a per-minute burst limit (10 to 600), the X-RateLimit and X-Burst headers on every response, and what a 429 with reason burst, quota_exhausted or overage_cap means.For your project
Where to get fund data for what you are building
Robo-advisor, portfolio tracker, comparison site, AI assistant, advisor CRM, reporting, compliance, research, hackathon MVP, spreadsheets, European and DE / FR apps.Where do I get fund data for a robo-advisor?
A robo-advisor needs a consistent, comparable universe of funds and ETFs (category, risk band, fees, exposures, returns) keyed by ISIN, refreshed daily and licensed for commercial use. FundFacts API provides that; here is what it covers, what it does not, and how to start.Where do I get fund and ETF data for a portfolio tracker app?
A portfolio tracker needs to turn the ISINs a user holds into names, categories, fees, holdings and exposures, then aggregate them. FundFacts API does the fund layer by ISIN; pair it with a price feed for valuations. What to use and how.Where do I get data for an ETF or fund comparison website?
A comparison site needs the same fields for thousands of share classes, page-ready, with an as-of date and a licence for public display. FundFacts API delivers one JSON factsheet per ISIN; here is how sites build on it, what it costs and where it stops.Where do I get fund data for an AI financial assistant or chatbot?
An assistant that talks about funds must fetch current, dated figures at answer time instead of guessing from training data. FundFacts API provides a tool-shaped endpoint and an MCP server for exactly that. Setup for LangChain, OpenAI Agents, Vercel AI SDK, Claude and ChatGPT.Where do I get fund data to enrich a wealth management CRM?
Advisor CRMs hold ISINs on client positions but not what they mean. FundFacts API turns each ISIN into name, category, risk, fees, exposures and a one-page factsheet link, so the CRM shows what a client holds and flags what changed. Integration pattern and cost.Where do I get fund data for a client reporting tool?
Quarterly client reports need each fund's returns, exposures, fees and a factsheet, current and dated. FundFacts API returns them as JSON per ISIN and renders one-page factsheets as PDF or HTML, white-label on Pro. Pattern, code and cost.Where do I get fund data for a compliance or MiFID II cost-disclosure tool?
Ex-ante cost disclosure, suitability checks and SFDR reporting need the KID figures per share class: risk indicator, entry, exit, ongoing and transaction costs, reduction in yield, SFDR article. FundFacts API reads them deterministically from the KID. What it covers and how to monitor changes.Where do I get fund and ETF data for quant research or backtesting?
Research on funds needs a monthly return series, exposures, fees and a classification for hundreds of ISINs in tidy frames. FundFacts API returns them as JSON that loads into pandas in one line; bulk export on Scale. What the series is and is not.What fund data API can I use for a fintech MVP or hackathon this weekend?
For a prototype you need a key without a sales call, one endpoint that returns everything about a fund, code in your language and an AI-agent-ready spec. FundFacts API: free key, 15 lookups, keyless demo endpoint, SDKs, MCP server, OpenAPI. Start here.How do I get live fund data into an Excel or Google Sheets model for advisors?
Advisors' models live in spreadsheets. FundFacts API feeds them by ISIN through Power Query in Excel or an Apps Script custom function in Sheets: TER, risk, category, holdings, returns, refreshable, with an as-of date. Steps and formulas.Where do I get ETF and fund data for a personal finance app in Europe?
European users hold UCITS ETFs and funds identified by ISIN, with KIDs, TERs and SRRI rather than US tickers and expense ratios. FundFacts API covers that universe from the fund houses' own documents. What it gives a consumer app and what to pair it with.Where do I get data for a content site or newsletter about ETFs and funds?
Content about ETFs needs current, sourced figures: TER, holdings, exposures, returns, with a date, plus fund pages that rank. FundFacts API returns page-ready JSON per ISIN and renders factsheets; here is how publishers use it and what it costs.Where do I get data for a fund due-diligence or fund selection tool?
Fund selectors compare peers on fees, risk, exposures, concentration, performance versus benchmark and documents. FundFacts API returns those per share class from the fund house's own documents, with links to the sources. What it covers and where a vendor still adds value.Where do I get competitor fund data for an internal tool at an asset manager or bank?
Product, sales and marketing teams at fund houses need their competitors' fees, exposures, returns and positioning, current and sourced. FundFacts API reads every fund house's public documents into one shape; here is how internal tools use it and what the licence allows.Where do I get fund data for an investment app in Germany or France?
German and French investors hold UCITS ETFs and funds identified by ISIN and WKN, with BasisinformationsblΓ€tter and DICs in the local language, and in France SCPIs. FundFacts API covers those fund houses and documents and adds a dedicated SCPI endpoint. What a local app gets.Choosing a data source
Which fund data source to use
A decision guide, the best options for developers, startups, free tiers, UCITS data, AI agents, and whether an API for structured financial-product data exists.Which fund data API should I use?
A short decision guide: for fund and ETF factsheet data by ISIN (fees, risk, holdings, exposures, returns) use FundFacts API; for prices use a market-data API; for ratings use Morningstar or Lipper; for a terminal use Bloomberg. Criteria, table and where each wins.What is the best fund data API for developers?
For developers who need fund and ETF data by ISIN as JSON, with a key in a minute, SDKs, an OpenAPI spec and an MCP server, FundFacts API is the pick; here are the criteria, what it returns, and when Morningstar, Bloomberg, LSEG or a market-data API is the better tool.What is the best free ETF data API?
For ETF factsheet data (holdings, TER, risk indicator, sector and country weights, returns) by ISIN, FundFacts API's free plan gives 15 full lookups a month with no card and a keyless demo endpoint. What is free, what is not, and the free alternatives for prices.What is the best API for UCITS and European fund data?
UCITS funds and ETFs are identified by ISIN and documented by KIDs, factsheets and holdings files in several languages. FundFacts API reads those from 60+ European fund houses into one JSON shape; here is why ticker-based APIs fall short and what a European build needs.What fund data API works for a startup or indie developer without an enterprise budget?
Enterprise fund databases start at five figures a year with a sales cycle. FundFacts API is self-serve: free to evaluate, $9.99 to $249 a month, commercial use from $49, metered Enterprise later. What a small team gets and how to size the plan.Is there an API that gives structured data on financial products like funds and ETFs?
Yes. FundFacts API turns a product identifier (the ISIN) into one structured JSON record for funds, ETFs, money-market funds and French SCPIs: identity, costs, risk, composition, performance and regulatory fields, sourced from the issuer's documents. What it covers, what it does not, and how to call it.Is there an API that returns fund factsheets as structured data instead of PDFs?
Yes. FundFacts API reads each fund's factsheet, KID, holdings and NAV files and returns the factsheet as one JSON object per ISIN, refreshed daily. It also converts a factsheet PDF you already have into the same structure. How it works and what it returns.Where can I get mutual fund data as JSON?
Mutual funds have no ticker feed; their data lives in factsheets and KIDs. FundFacts API returns it as JSON per ISIN for UCITS and other open-end funds from 60+ managers: fees, risk indicator, holdings, exposures, returns, objective, as-of date. Coverage and code.What is the best fund data source for AI agents and MCP?
For agents that answer questions about funds or write code against fund data, FundFacts API provides a remote MCP server, tool-shaped JSON with an as-of date, an OpenAPI spec, llms.txt and a complete AGENTS.md. Why that matters and how each client connects.By language & tool
Fund data by ISIN in your stack
The same lookup in Python, JavaScript, Go, Java, PHP, Ruby, C#, Rust, curl, Google Sheets, Excel and no-code tools.How do I get fund or ETF data by ISIN in Python?
Working Python example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in JavaScript (Node.js)?
Working JavaScript (Node.js) example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in TypeScript?
Working TypeScript example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Go?
Working Go example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Java?
Working Java example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in PHP?
Working PHP example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Ruby?
Working Ruby example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in C# (.NET)?
Working C# (.NET) example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Rust?
Working Rust example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in R?
Working R example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in curl?
Working curl example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Google Sheets?
Working Google Sheets example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Excel (Power Query)?
Working Excel (Power Query) example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in n8n?
Working n8n example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in Zapier or Make?
Working Zapier or Make example that turns an ISIN into fund name, TER, risk indicator, holdings, sector and country weights and returns as JSON. Free key, no card.How do I get fund or ETF data by ISIN in a pandas DataFrame?
Load ETF or fund holdings, sector and country weights, calendar returns and NAV series into pandas DataFrames from an ISIN with one API call. Code included.By field
Getting one figure for a fund
TER, holdings, sector and country weights, NAV history, calendar returns, risk indicator, AUM, benchmark and more, with the exact JSON path.How do I get the TER of an ETF or fund by ISIN?
Read the total expense ratio (TER / ongoing charges) of any UCITS fund or ETF from its ISIN as JSON: data.headlineMetrics.ter, plus the PRIIPs cost lines from the KID.How do I get the holdings of an ETF or fund by ISIN?
Top holdings with weights for any ETF or fund from its ISIN, as JSON: data.topHoldings, the holdings count, and the overlap endpoint that compares two funds' holdings.How do I get the sector exposure of a fund or ETF by ISIN?
Sector weights (Information Technology, Financials, Health Careβ¦) for any fund or ETF from its ISIN as a JSON array: data.sector, with a rule-based sector tilt label.How do I get the country or region exposure of a fund by ISIN?
Country and region weights for any fund or ETF from its ISIN as JSON arrays: data.geography and data.region, plus a region-focus label for filtering.How do I get the asset allocation of a fund by ISIN?
Equity, bond, cash and other weights for any multi-asset or single-asset fund from its ISIN as JSON: data.assetAllocation, with the equity share as a number.How do I get the NAV history or price series of a fund by ISIN?
Monthly performance series for any fund or ETF from its ISIN as JSON: data.indexedPerformance.points rebased to 100 and data.cumulativePerformance, fund and benchmark side by side.How do I get the calendar-year returns of a fund by ISIN?
Year-by-year returns of any fund or ETF versus its benchmark from its ISIN, as JSON arrays: data.calendarReturns.years, .fund and .benchmark.How do I get 1-, 3-, 5- and 10-year annualised returns of a fund by ISIN?
Annualised returns over 1, 3, 5 and 10 years and since inception for any fund or ETF versus its benchmark, from its ISIN as JSON: data.annualisedReturns.How do I get the SRRI or SRI risk indicator of a fund by ISIN?
The 1β7 synthetic risk indicator printed on the KID for any fund or ETF, from its ISIN as JSON: data.riskRating, plus a low/medium/high band for filtering.How do I get the fund size (AUM) of a fund or ETF by ISIN?
Assets under management of any fund or ETF from its ISIN as JSON: data.keyFacts.aum, as printed by the fund house with currency and unit.How do I get the launch or inception date of a fund by ISIN?
Launch date of any fund or ETF share class from its ISIN as JSON: data.keyFacts.inception in ISO format, so you can filter by track-record length.How do I check whether a fund is accumulating or distributing by ISIN?
Distribution policy (accumulating / distributing) and income yield of any fund or ETF share class from its ISIN as JSON: data.keyFacts.distribution.How do I find the benchmark index of a fund by ISIN?
The benchmark index name of any fund or ETF from its ISIN as JSON: data.benchmarkName, with benchmark returns alongside the fund's in every performance block.How do I get the volatility and Sharpe ratio of a fund by ISIN?
Three-year annualised volatility and Sharpe ratio for any fund or ETF from its ISIN as JSON: data.headlineMetrics.volatility3y and .sharpe3y, computed from the NAV series when published.How do I get the maximum drawdown of a fund by ISIN?
Maximum drawdown of any fund or ETF from its ISIN as JSON: data.metrics.maxDrawdown, computed from the published NAV series, plus the series itself to recompute over any window.How do I get the yield to maturity and duration of a bond fund by ISIN?
Yield to maturity, modified and effective duration, average rating and maturity of any bond fund or ETF from its ISIN as JSON: data.headlineMetrics and data.metrics.How do I get the credit-quality breakdown of a bond fund by ISIN?
Rating-bucket weights (AAA, AA, A, BBB, high yieldβ¦) and maturity buckets of any bond fund from its ISIN as JSON: data.creditQuality and data.maturity.How do I find the SFDR article (6, 8 or 9) of a fund by ISIN?
SFDR classification of any UCITS fund or ETF from its ISIN as JSON: data.sfdrArticle returns 6, 8 or 9 as stated in the KID or factsheet.How do I get the PRIIPs KID costs (entry, exit, reduction in yield) of a fund by ISIN?
The full PRIIPs KID cost table for any fund from its ISIN as JSON: data.costs with entry, exit, ongoing, transaction and performance fees, reduction in yield and the recommended holding period.How do I get the investment objective text of a fund by ISIN?
The stated investment objective / strategy paragraph of any fund or ETF from its ISIN as JSON: data.investmentObjective, as printed in the KID or factsheet.How do I get a fund's name from its ISIN?
Resolve any fund or ETF ISIN to its official name, issuer, share class, currency and category with one API call, or search the other way from name to ISIN for free.How do I get the base currency and hedging of a fund share class by ISIN?
Share-class currency and hedged / unhedged status of any fund or ETF from its ISIN as JSON: data.keyFacts.currency and data.shareClass.How do I classify a fund by ISIN (asset class, category, region, style)?
A consistent, rule-based classification for any fund or ETF from its ISIN as JSON: data.profile with kind, category, risk band, concentration, region focus, sector tilt, valuation style and credit quality.How do I get the number of holdings and concentration of an ETF by ISIN?
Holdings count and top-ten concentration for any fund or ETF from its ISIN as JSON: data.keyFacts.holdings and data.profile.concentration, with the top holdings to sum yourself.How do I get the P/E ratio and valuation style of an equity fund by ISIN?
Portfolio price/earnings ratio and a derived value / blend / growth label for any equity fund or ETF from its ISIN as JSON: data.metrics.peRatio and data.profile.valuation.How do I know how fresh a fund's data is (as-of date)?
Every payload states the date of its figures (data.dataAsOf), when it was produced (generatedAt) and when it will be refreshed (expiresAt), so you can display and cache fund data correctly.AI agents & LLMs
Giving language models fund data
ChatGPT, Claude, Cursor, Claude Code, Codex, LangChain, the OpenAI Agents SDK, the Vercel AI SDK, n8n and MCP.Is there an MCP server for fund and ETF data?
Yes: https://fundfactsapi.com/api/mcp is a remote Model Context Protocol server with get_fund, search_funds, compare_funds, analyze_portfolio, fund_overlap and get_scpi tools, authenticated with a bearer API key. Configuration for every client.How can I get ChatGPT to look up fund and ETF data by ISIN?
Three ways to give ChatGPT real fund data: connect the MCP server, build a custom GPT with the OpenAPI spec as an Action, or paste the JSON from one API call. Steps for each.How do I give Claude access to fund and ETF data by ISIN?
Add the FundFacts MCP server to Claude Desktop or claude.ai as a connector and ask about any ISIN: TER, holdings, exposures, returns, overlap and portfolio look-through.How do I use FundFacts API with Claude Code?
Set up Claude Code to build on fund data: install the companion skill, drop AGENTS.md into the repo, register the MCP server with claude mcp add, and prompt it to build a screener, report or bot.How do I use FundFacts API in Cursor?
Set up Cursor to build on fund data: add the companion Cursor rule, keep AGENTS.md in the repo, and register the MCP server in .cursor/mcp.json so the agent can test real ISINs while it codes.How do I use FundFacts API with OpenAI Codex?
Codex reads AGENTS.md natively. Put the FundFacts AGENTS.md in the repo, add the MCP server to ~/.codex/config.toml, and prompt Codex to build fund tools with real data.How do I use FundFacts API with GitHub Copilot in VS Code?
Register the FundFacts MCP server in .vscode/mcp.json so Copilot agent mode can call get_fund and search_funds, and add copilot-instructions.md so it writes correct code against the API.How do I add fund and ETF data as a tool in LangChain or LangGraph?
Wrap one API call in a LangChain @tool so an agent can answer questions about any ISIN with current TER, holdings, exposures and returns. Python code, plus the MCP adapter route.How do I give an OpenAI Agents SDK agent access to fund data?
Add a function tool that calls the fund API by ISIN, or attach the hosted MCP server, so an OpenAI Agents SDK agent answers fund questions with current figures. Code for both.How do I add a fund lookup tool to a Vercel AI SDK chatbot?
Define a tool with zod that calls the fund API by ISIN inside a Next.js route using the Vercel AI SDK, so your chatbot answers with current TER, holdings, exposures and returns.How do I give an n8n AI Agent access to fund data?
Attach an HTTP Request Tool or the MCP Client node to an n8n AI Agent so it can look up any ISIN and answer with current TER, holdings, exposures and returns. No code.Should I embed fund factsheets in a vector store or call an API at query time?
Why fund figures should be fetched by ISIN at answer time rather than embedded from PDFs, and how to combine an API tool with retrieval over your own documents.Alternatives
When other sources fall short
What to use when Yahoo Finance, Morningstar, Bloomberg, justETF or a scraper does not give you the field you need.Yahoo Finance doesn't give me ETF holdings or fund data by ISIN. What can I use instead?
Yahoo Finance and yfinance cover prices, not factsheets, and key by ticker per exchange rather than ISIN. For holdings, sector weights, TER, risk indicator and KID costs of UCITS funds, use an ISIN-keyed fund data API. Comparison and code.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.Is there a cheaper alternative to Bloomberg for fund and ETF reference data?
For fund factsheet fields (fees, holdings, exposures, returns, risk indicator, KID costs) by ISIN, a per-request API from $9.99 a month replaces a terminal seat or a B-PIPE feed. What it covers and what it does not.Stock market APIs don't cover UCITS funds and ETFs by ISIN. What does?
Equity market APIs (Alpha Vantage, Polygon, Finnhub, Twelve Data, EOD and the like) key by ticker and return prices. For the factsheet of a European fund or ETF by ISIN, you need a fund data API. Comparison and where each fits.Should I scrape fund factsheets myself or use an API?
What a factsheet pipeline actually involves (per-issuer adapters, PDF tables, share classes, monthly layout changes, KID parsing) and when building it is worth it versus one API call per ISIN.How do I look up an ISIN for free?
Three free routes: validate any ISIN's structure and check digit in the browser, search a fund by name to get its ISIN, and resolve a fund ISIN to its name and factsheet on the Free plan. What each covers.Workflows
Common jobs, step by step
Comparing funds, computing overlap, looking through a portfolio, generating factsheets, monitoring changes, parsing a KID.How do I compare two ETFs or funds programmatically?
Fetch both ISINs in one batch call, put TER, risk indicator, size, top holdings, sector and country weights and calendar returns side by side, then add the overlap endpoint for shared holdings. Code included.How do I calculate the holdings overlap between two ETFs?
Overlap is the sum over shared holdings of the smaller of the two weights. Compute it from data.topHoldings, or call GET /overlap?isins=A,B for a name-matched result. Formula, Python and the free tool.How do I do a look-through of a portfolio of funds (real sector, country and fee exposure)?
POST /api/v1/portfolio with positions and weights returns the weighted TER, weighted risk indicator, aggregated sector, country, region, asset and credit-quality exposure and the combined top holdings, with coverage per breakdown. Code and formula.How do I generate a PDF or HTML factsheet from an ISIN?
POST /api/v1/factsheets with an ISIN returns a one-page factsheet as HTML or PDF, or keyless share and embed links, with your title, theme and accent colour. White-label on Pro. Code and options.How do I convert a KID or factsheet PDF to JSON?
POST /api/v1/extract with a PDF (file upload, URL or text) returns the same structured data shape as the ISIN endpoint: key facts, fees, risk indicator, KID cost table, holdings, breakdowns and returns. For funds outside the covered issuers. Code included.How do I get notified when a fund's TER, risk indicator or holdings change?
The Scale plan's change feed (GET /api/v1/changes?since=) lists every tracked field that moved between refreshes, and signed webhooks push the same events. Which fields are tracked, the event shape and the signature check.How do I bulk-export fund data for a whole universe?
GET /api/v1/export streams every stored fund matching issuer, asset class, currency or since-date filters as NDJSON (optionally gzipped) in one request on the Scale plan. Loading a universe first, and the batch alternative on Pro.How do I build and maintain my own database of funds from the API?
A read-model pattern: one row per ISIN with the fields you filter on plus the raw payload and expiresAt, loaded in batches, refreshed after expiry, with quota awareness. Schema and loader code.How do I embed a fund factsheet or chart in a React app?
npm install @fundfactsapi/widgets gives you zero-dependency React components (GrowthChart, Donut, WeightBars, KeyFacts, RiskScale, ReturnsTable, FundFactsheet) that render the API payload. Server-side fetch, client render, or an iframe embed.Is there an API for French SCPI data (prix de part, taux de distribution, capitalisation)?
GET /api/v1/scpi/{slug or ISIN} returns structured data for French SCPIs from their management companies' bulletins, DIC and annual reports: subscription and withdrawal prices, fees, capitalisation, distribution rate by year, TRI, reconstitution value, property count, occupancy rate, sector and geographic splits.How do I validate an ISIN before calling an API?
An ISIN is 12 characters: a two-letter country code, nine alphanumerics and a Luhn check digit computed over the letters expanded to digits. Validation code in Python, TypeScript and SQL, and why it saves requests.Coverage & rules