Choose a Free Fund Holdings API
for Mutual Funds and ETFs
A free fund holdings API can support prototypes when it provides suitable coverage, dated portfolio records, clear usage terms, and verifiable JSON.
Free fund holdings API: the short answer
Match fund types, complete or top holdings, asset-class detail, historical depth, revisions, quota, and license to the intended analysis.
Check legal fund and share-class IDs, portfolio and publication dates, pagination, asset types, currencies, signs, weights, and completeness.
Store raw and normalized records, source filings, first-known dates, revision IDs, parsing version, retrieval logs, and provider terms.
What a fund holdings API must cover
A useful evaluation starts with one real fund, one dated portfolio, and one intended product workflow. The decision depends on mutual fund and ETF coverage, legal identifiers, portfolio dates, weights, history, pagination, rate limits, JSON quality, and reuse terms. A free allowance is useful only when the returned scope matches the data the product is expected to explain.
The word “holding” can describe a disclosed security position, a derivative exposure, collateral, cash, a receivable or liability, or a look-through position inferred from another fund. A useful API keeps reported rows and derived exposure separate, identifies the legal share class, and states whether the response is a complete portfolio, regulatory filing, top-holdings subset, or provider reconstruction.
Compare free mutual fund and ETF holdings APIs
| Source type | Good for | Check before use |
|---|---|---|
| Public filings | Direct provenance and custom databases. | Coverage, parsing, amendments, lag, and issuer IDs. |
| Free-tier REST API | Prototypes needing normalized JSON. | Quota, full or top holdings, history, and reuse. |
| Fund or exchange feed | Official detail for a fund family or market. | URL stability, format, schedule, and normalization. |
| Regulatory filing transform | Point-in-time history with direct filing provenance. | Form scope, amendments, confidential or omitted rows, taxonomy, publication lag. |
| Look-through analytics | Exposure and overlap across funds, derivatives, or nested vehicles. | Methodology, double counting, dates, proxy mapping, derived-data license. |
Concrete data routes to evaluate
These routes solve different problems. Regulatory data favors provenance and history, normalized APIs favor speed of integration, and issuer files favor the latest official detail for a limited fund family. Do not rank them only by request quota.
| Route | What you receive | Best use | Main limitation |
|---|---|---|---|
| SEC Form N-PORT data | Structured portfolio information reported by registered investment companies, with filing provenance and filing-period context. | Building a U.S. fund research database, audit trail, or point-in-time historical pipeline. | Disclosure and publication lag, amendments, complex instruments, form taxonomy, and the engineering work needed to normalize records. |
| Alpha Vantage ETF Profile | A documented ETF profile response that includes fund characteristics and holdings-related data through a familiar API request model. | A quick ETF prototype that wants normalized JSON without first building a filing parser. | Confirm exact holding depth, portfolio date, market coverage, endpoint entitlement, update cadence, and whether history is available. |
| Financial Modeling Prep ETF holdings | Normalized ETF constituent or holdings records within a wider financial-data API family. | Applications already using the same provider for prices, profiles, or fundamentals and wanting a consistent schema. | Check current endpoint path and plan, full versus partial holdings, dates, identifiers, pagination, and redistribution terms. |
| Issuer holdings downloads | Official CSV, spreadsheet, or page-level holdings for a specific ETF family, often with a clear as-of date. | Displaying or checking a small set of funds where official, recent detail matters more than broad coverage. | Formats and URLs can change; fields differ by issuer; historical files, automation rights, and redistribution may be limited. |
Form 13F is not a substitute for a fund holdings feed. It reports certain positions of qualifying institutional investment managers, not a complete, current portfolio for every mutual fund or ETF share class. Use N-PORT, issuer disclosures, or a fund-specific provider when the product claims to show the fund itself.
Score access, data, and permitted use together
Free plans may cap requests, omit history, return only top positions, or prohibit redistribution. Prioritize reliable dates, source IDs, documentation, and licensing; a successful response does not grant reuse rights.
Prefer the issuer's dated file or a normalized API that returns a verifiable source and clear as-of date. Show whether the list is complete or only top holdings, display the published portfolio date prominently, and avoid labeling retrieval time as “last updated holdings.”
Require stable security identifiers, complete-enough portfolios, weights on the same basis, and aligned dates. Normalize share classes and currencies before calculating overlap. Report unmapped and omitted weight so a clean-looking percentage does not hide missing positions.
Use filing-sourced or revision-aware snapshots with first-known timestamps. Keep amendments instead of replacing old files, and make the simulation wait until the data was publicly available. Today's reconstructed portfolio cannot safely answer what an investor knew six months ago.
Return fund and share-class identity, scope, portfolio date, publication date, source, position count, top holdings, total reported weight, residual, and license status. The agent should distinguish disclosed holdings from look-through estimates and cite the dated source behind the summary.
How to use a free fund holdings API
1. Define the fund universe and required fields
Specify the market, full or top holdings, history, currencies, sectors, and identifiers.
2. Inspect authentication, dates, and pagination
Record key placement, quota headers, pagination, as-of date, filing date, and timezone. Retrieval time is not the portfolio date.
3. Make a bounded request and inspect JSON
GET /v1/funds/{ticker}/holdings?limit=100 is an illustrative REST shape, not a real provider URL. Before loading data, validate types, nulls, currency, weights, IDs, and page counts.
4. Store raw payloads and normalized records
Keep the raw response and provider codes. Normalize fund_id, security_id, market_value, weight_pct, currency, as_of_date, filing_date, and source_url. Key snapshots by provider, fund, and as-of date.
5. Reconcile asset types and portfolio totals
Calculate long, short, cash, derivative, liability, and unexplained residual totals separately. Keep raw sign and units, deduplicate by stable ID and position context, and quarantine ambiguous bond or derivative identifiers instead of forcing them into equity rows.
6. Build revision-aware history
Key versions by fund, share class, portfolio date, filing or source publication time, provider processing time, and amendment. Preserve superseded rows and change reasons so backtests use only records available at the simulated time.
Validate fund holdings data before analysis
Why portfolio weights may not total exactly 100%
Top-holdings endpoints omit small positions. Complete portfolios can vary because of cash, derivatives, liabilities, rounding, currencies, or classification. Treat the total as a warning, not proof.
Worked reconciliation: why 94% can be valid and 108% can be valid
Suppose an endpoint labels its response “holdings” and the returned rows sum to 94%. That may represent the largest disclosed securities while 3% sits in cash, 1% in receivables, and 2% in smaller omitted positions. Rescaling the 94% to 100% would make every displayed security too large and erase the fact that the endpoint is incomplete.
A different portfolio can show 108% gross exposure because long securities, futures, swaps, short positions, cash, and liabilities use different bases. Gross exposure may exceed net assets while net exposure remains near 100%. Reconcile at least four totals separately: reported long market value, reported short market value, cash and other net assets, and derivative notional or delta-adjusted exposure. Only compare fields that share the same denominator.
Do not auto-fix a residual. First label the endpoint as top-only, complete, filing-derived, or reconstructed; then inspect cash, liabilities, derivatives, shorts, omitted rows, rounding, currency conversion, and the weight denominator. Publish the residual as a quality field until its cause is known.
How often are mutual fund holdings updated?
Freshness depends on disclosure and processing. Separate as-of, filing, and retrieval dates. Backtests need point-in-time snapshots and amendment history to avoid look-ahead bias.
Test edge cases before production
Test share classes, missing tickers, derivatives, currencies, amendments, and empty pages. Separate schema changes from network failures. Check U.S. fund results against SEC EDGAR filings.
Separate reported holdings from look-through exposure
A fund-of-funds row is a reported holding; expanding it into the underlying portfolio creates derived exposure. Label the transformation, align both portfolio dates, disclose unmapped weight, and prevent the parent fund and underlying positions from being counted together unless the metric intentionally requires it.
How QVeris helps with fund holdings APIs
QVeris helps agents discover and inspect capabilities; it does not own or certify provider data.
- Open the QVeris provider details to inspect relevant financial-data capabilities.
- Inspect fund and share-class identity, complete-versus-top scope, asset types, dates, revisions, pagination, methodology, and license before a call.
- Require completeness metadata, weight totals by asset type, residuals, missing identifiers, and reported-versus-derived labels in the result.
- Preserve provider URLs, raw rows, source and retrieval dates, amendment IDs, parser version, licenses, and logs.
Free fund holdings API questions
Yes, through free tiers or public-filing workflows. Verify coverage, quotas, freshness, and reuse terms.
Yes. Confirm whether the endpoint returns the full portfolio or only top holdings and retain its report date.
Fund and security identifiers, name, shares, market value, weight, currency, asset class, as-of date, filing date, and source.
Some providers offer point-in-time history, often outside the free tier. Check retention depth and amendment handling.
Top-holdings endpoints return only the largest positions. Complete-holdings endpoints aim to include the full disclosed portfolio, including smaller positions and sometimes cash or derivatives.
That depends on the provider's license and the underlying source. API access does not automatically grant redistribution or commercial-display rights.
Top-only coverage, cash, derivatives, shorts, liabilities, rounding, currency treatment, and missing rows can create a residual. Inspect the portfolio basis before rescaling or declaring an error.
Map nested funds to their own dated portfolios, multiply parent and child weights, preserve unmapped exposure, and label the result derived. Align dates and prevent double counting between the wrapper and expanded positions.
Portfolio as-of, source filing or publication, provider processing, retrieval, and amendment times serve different purposes. Historical research needs all material dates, not one generic timestamp.
