Free ETF Holdings API
Data, Fields & Integration
Use a free ETF holdings API to retrieve constituents and weights by ticker, then verify coverage, as-of dates, fields, history, and limits before integration.
Free ETF holdings API: what to expect
Resolve an ETF to the correct fund and share class, then retrieve the complete portfolio represented by a stated as-of date—not merely the first page or top positions.
A useful JSON response includes stable constituent IDs, name, asset type, weight, quantity, market value, currency, country, sector, and portfolio date, plus cash and derivatives.
Separate a durable free tier from a time-limited trial. Check quotas, endpoint access, attribution, caching, and commercial-use rights.
Keep portfolio as-of, source publication, provider processing, and retrieval times separately. Later corrections must create a revision rather than silently rewriting the original snapshot.
ETF holdings data API fields and freshness
A useful ETF holdings API should expose the full constituent list, percentage weights, shares, market value, sector exposure, identifiers, pagination, and historical snapshots. “Latest” does not necessarily mean real time: the response should state the date represented by the portfolio.
Completeness also depends on the fund structure. Equity tickers may be only one part of the portfolio: bond identifiers, futures, swaps, options, collateral, receivables, payables, and cash can affect exposure and the weight total. Preserve the provider's asset-type labels and distinguish reported positions from look-through exposure inferred from another fund or derivative.
Full holdings versus top 10 holdings
Some free endpoints return only top holdings even when a fund owns hundreds or thousands of positions. Check total count, pagination, page limits, cash and derivative rows, and whether weights reconcile to the provider's documented basis.
Historical ETF holdings API snapshots
For backtests, use point-in-time snapshots with both as-of and filing or processed dates. This reduces look-ahead bias and makes revisions visible. Historical access is often priced separately from current holdings.
Weight reconciliation and overlap analysis
Before calculating concentration or overlap, align portfolio dates, normalize percentage versus decimal units, map securities by stable IDs, and define how cash, derivatives, short positions, and fund-of-fund rows are treated. Weight totals may differ from 100% for legitimate reasons, but the residual needs an explanation rather than automatic rescaling.
Where to get ETF holdings data for free
There is no single best source for every ETF workflow. Issuer files are often the closest view of a fund's current portfolio, while an API can provide a consistent schema across many issuers. Regulatory data is valuable for independently traceable history, but it follows a disclosure schedule rather than a daily portfolio feed. Choose the source by the decision your product must support.
| Source route | Best fit | Verify before use |
|---|---|---|
| Issuer holdings files | Current holdings for a known ETF, daily monitoring, and issuer-specific research. | Whether the download is the full portfolio, its as-of date, file stability, terms, and how cash or derivatives are represented. |
| Alpha Vantage ETF Profile | A convenient API response for ETF profile data and holdings when supported. | Fund coverage, returned holding depth, update date, current free allowance, and whether your commercial use is permitted. |
| Financial Modeling Prep ETF holdings | Developers who want a normalized provider interface alongside other market and fundamental datasets. | Endpoint availability on the current plan, pagination, fields, history, rate limits, and redistribution rights. |
| SEC Form N-PORT datasets | Auditable US registered-fund research and historical verification. | Reporting period versus publication date, series and class mapping, amended filings, and the reporting lag. |
Do not confuse portfolio holdings, creation baskets, and index constituents
Portfolio holdings describe assets held by the fund for a stated date. A creation or redemption basket is the set of securities and cash an authorized participant may deliver or receive for a creation unit; it can differ from the complete portfolio. Index constituents describe the benchmark methodology and membership, not necessarily the fund's exact positions. Sampling, cash management, derivatives, fees, corporate actions, and rebalance timing can all create differences.
Practical rule: if the product says “what this ETF owns,” use a dated portfolio-holdings source. Use basket data for creation/redemption operations and benchmark constituents for index research. Labeling one dataset as another can produce convincing but incorrect exposure and overlap results.
Worked example: compare two ETFs without top-10 bias
Suppose ETF A and ETF B share six names in their top 10. That does not establish high portfolio overlap: A may hold 500 securities while B holds 100, and the common names may have very different weights. Retrieve full portfolios for the same as-of date, map each security with a stable identifier, and calculate common weight as the sum of min(weight_A, weight_B) for every matched holding. Report excluded cash, unmatched derivatives, missing identifiers, and each portfolio's residual next to the result.
Choose by use case
Prefer the issuer file or a provider that clearly identifies the portfolio date. Show the date and coverage beside the holdings.
Require complete lists, stable IDs, consistent asset types, aligned dates, and an explicit overlap formula.
Store publication time and revisions in addition to the portfolio date. Regulatory history can validate what was knowable.
Return provenance, completeness, residuals, and warnings with the normalized rows so the Agent can qualify its answer.
How to evaluate a free ETF holdings API
| Check | Verify | Why it matters |
|---|---|---|
| Coverage | Markets, active and delisted ETFs, ticker and identifier lookup. | Avoids silent gaps. |
| Completeness | Full list, total count, pagination, cash, derivatives, weight basis. | Top holdings alone cannot support overlap or exposure analysis. |
| Freshness | As-of, filing, processed dates, update schedule, revisions. | Prevents stale data from appearing current. |
| Fields | Ticker, CUSIP/ISIN, name, weight, shares, value, sector, country. | Supports joining and normalization. |
| Free limits | Quota, rate limit, history, license, attribution, caching. | A trial may not support production. |
| Asset types | Equities, bonds, cash, derivatives, collateral, short positions. | Ticker-only rows can materially understate exposure. |
| Revision model | Publication time, processed time, correction ID, version history. | Makes changed snapshots auditable. |
| Weight quality | Unit, sign, residual, duplicates, fund-of-fund treatment. | Controls concentration and overlap calculations. |
Integrate an ETF holdings REST API with JSON
Step 1: test SPY and QQQ holdings by ticker
Create a free key if required, call the documented endpoint, and inspect HTTP status, authentication, rate-limit headers, total holdings count, pagination, and the resolved as-of date.
Step 2: normalize ETF constituent fields
Map provider fields into a stable model such as fund_ticker, as_of_date, holding_ticker, name, weight, shares, market_value, and identifiers. Preserve the raw response for audit.
Step 3: validate completeness and change handling
Follow every page, compare returned count with metadata, test missing tickers and rate limits, and alert on schema changes. Store snapshots by as-of date rather than overwriting the previous portfolio.
Step 4: reconcile weights and asset types
Normalize units without discarding the raw value, check duplicates by stable ID, and calculate reported long, short, cash, derivative, and unexplained residual totals separately. Quarantine rows with ambiguous signs or identifiers rather than forcing them into equity exposure.
Step 5: build revision-aware snapshots
Use fund ID, share class, portfolio date, source publication time, and provider revision as the snapshot key. If a corrected file arrives, preserve both versions and record what changed so a backtest can select only the version available at its simulated time.
Use QVeris to find ETF holdings data capabilities
QVeris helps developers and agents discover, inspect, and call available financial-data capabilities. Open the QVeris provider details to inspect ETF holdings providers, inspect inputs and outputs, and verify the current provider contract before integration.
- Search specifically for complete holdings, historical holdings, or constituents; price and profile APIs may not include them.
- Inspect fund identifiers, asset types, portfolio and publication dates, pagination, revision behavior, limits, and licensing before calling.
- Require a completeness report with returned rows, provider total, weight totals by asset type, residual, and missing identifiers.
- Keep provider-specific parsing and corrections behind a normalized, revision-aware application interface.
FAQ
Yes, some providers offer free tiers, trials, or free endpoints. Verify that holdings—not only prices or profiles—are included, and check quota, history, licensing, and commercial-use terms.
Call an ETF holdings API by ticker, then follow pagination until the returned count matches the endpoint metadata. Do not assume the first page or top holdings is complete.
Sometimes, but history depth is often limited or paid separately. Check snapshot dates, delisted-fund coverage, corrections, and point-in-time semantics.
Useful fields include fund ticker, as-of date, constituent ticker and name, weight, shares, market value, identifiers, sector, country, and source metadata.
It varies by fund and source. Some issuer files update daily, while regulatory disclosures may be less frequent. Trust the response's as-of date, not the request time.
No. QVeris can help discover and inspect capabilities, but provider availability, pricing, limits, and licensing remain provider-controlled and may change.
Cash, derivatives, short positions, accruals, rounding, leverage, and partial coverage can create a residual. Inspect asset types and the provider's weight basis before rescaling or treating the difference as an error.
Align portfolio dates, map securities by stable IDs, normalize weights, and define cash, derivatives, and look-through rules. Then calculate common weight or another disclosed overlap measure.
As-of identifies the portfolio represented; publication indicates when that snapshot became available. Backtests need both so they do not use a portfolio before it was knowable.
