Alternatives
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.Updated 12 September 2026 · by FundFacts APIShort answer
Scrape if fund data is your product and you need something the API does not return; otherwise use the API. A pipeline that reads factsheets, KIDs and holdings files across dozens of fund houses is a per-issuer adapter set that breaks whenever a layout changes, plus PDF table parsing, share-class resolution and freshness tracking. FundFacts API runs exactly that pipeline and returns one JSON shape per ISIN, refreshed daily, from $0 for 15 lookups a month.
What the pipeline contains
- Resolution. ISIN → fund house → product page. Every issuer has its own URL scheme, search form or JSON endpoint, often behind a cookie or investor-type gate.
- Documents. The factsheet PDF (monthly, per share class), the KID PDF (per class and language), the holdings file (CSV, XLSX, sometimes JSON) and the NAV history. Formats and locations differ per issuer and change without notice.
- Parsing. Tables in PDFs are not tables; they are positioned text. Top-ten, sector and country tables need per-layout extraction; the KID cost table needs per-language labels.
- Normalisation. "0,20 %" vs "0.20%", "USD 151.7bn" vs "151,700 Mio. USD", dates in three locales, sector taxonomies, accumulating vs distributing conventions.
- Derivation. Series rebased to 100, volatility, Sharpe, drawdown, a classification you can filter on.
- Operations. Refresh scheduling, change detection, retries, monitoring the adapters that broke this month.
The comparison with building your own parser puts numbers on the effort.
When scraping is right
- The data you need is not in the payload (analyst commentary, intraday prices, a proprietary field) and no vendor has it.
- Fund data *is* your product and the pipeline is your moat.
- You need one fund house only and its site is stable.
When the API is right
- You are building a screener, a reporting tool, a chatbot, a CRM enrichment or a research notebook and fund data is an input, not the product.
- You need many fund houses in one shape.
- You need it this week.
bashcurl -s --max-time 300 https://fundfactsapi.com/api/v1/funds/IE00B4L5Y983 -H "Authorization: Bearer $FUNDFACTS_API_KEY"
The middle path
POST /extract (Pro and above) runs the KID and factsheet parsers on a PDF you supply and returns the same JSON, so a fund outside the covered issuers does not force you to write a parser either.
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]}'
Frequently asked questions
Is scraping fund-house sites allowed?
Documents published for investors are public, but each site's terms differ and many block automated access. The API's terms cover your use of the resulting data; check the fund house's terms if you crawl yourself.Try it on your own ISINs
One request returns key facts, holdings, risk and performance as JSON. Free plan, no card.Related questions
Workflows
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.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.Workflows
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.Alternatives
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.Guides
AutomationWealth management
Automating fund factsheets: from PDF scraping to structured JSON
Why parsing factsheet PDFs breaks, what a normalised fund data schema looks like, and how wealth managers and fintechs generate client-ready factsheets automatically.ComparisonFund data