QVeris

Finance & Market Data

ETF Holdings API Benchmark

Compare ETF holdings APIs by full-list coverage, as-of date, weight integrity and invalid-symbol handling; inspect benchmark conditions.

Published: April 20, 2026 · By the QVeris Team

An analyst reviewing financial charts and source data
An analyst reviewing financial charts and source data

The answer first: which ETF holdings API fits?

For an AI agent that needs constituent-level ETF data, the strongest observed fits were Alpha Vantage for the tested US workflow and Gildata for the tested China workflow. FIU and Wind both returned useful top-holdings slices, but neither returned a complete portfolio in the tested path.

This ETF data API comparison does not assign a blended score. Qualified means the endpoint met the complete response and holdings-integrity requirements in at least 75% of its rounds. Not qualified means it was applicable and tested but missed that requirement. N/A means the product was not applicable to that market workflow.

48completed observations
4providers and access paths
3×independent rounds per case
2market workflows tested
ProviderUS holdingsChina holdingsObserved median latency
Alpha Vantage
View provider in QVerisView provider in QVeris
QualifiedN/A11.4 s
FIU
View provider in QVerisView provider in QVeris
Not qualifiedN/A6.4 s
Gildata
View provider in QVerisView provider in QVeris
N/AQualified4.8 s
Wind
Native MCP test · No QVeris ETF connector in this snapshot
N/ANot qualified5.9 s

Access-path note: The access paths are deliberately separated in the evidence and shown together in the charts: Alpha Vantage, FIU, and Gildata were tested through their QVeris connectors, while Wind was tested directly through the official Wind MCP. All four providers appear in both charts, with Wind labeled as the native-MCP track; its row has no QVeris execution link because the dated QVeris ETF Capability snapshot contained no Wind connector.

An analyst reviewing financial charts and source data

What AI agents can build with ETF holdings data

ETF holdings data turns a fund ticker into an explainable set of underlying positions. That supports several practical agent workflows:

  • ETF look-through and portfolio exposure: expand a portfolio of ETFs into underlying securities, then aggregate the effective exposure to each company.
  • Overlap and concentration analysis: find duplicated holdings across funds and show whether a seemingly diversified portfolio is concentrated in the same issuers.
  • Compliance and restricted-list screening: check whether an ETF creates indirect exposure to a restricted security. This requires a full constituent list and reliable identifiers.
  • Rebalancing and substitution research: compare two ETFs by underlying exposure before proposing a replacement or tax-loss candidate. Portfolio actions still require human review and current pricing.
  • Holdings-change monitoring: detect additions, removals, and weight changes between reporting dates. This requires an as-of date and historical snapshots, not just a current response.
  • Top-holdings cards and fund briefs: summarize the largest positions for research or client reporting. A clearly labeled top-10 endpoint can support this narrower use even when it cannot support full look-through.

The data contract depends on the job. Look-through, overlap, and compliance need broad holdings coverage, constituent identifiers, and numeric weights. Change monitoring additionally needs dates and history. Shares, market value, sector, and rank make position cards and exposure explanations richer, but they do not substitute for a full constituent list.

Benchmark method: 48 observations, one strict contract

Each provider was tested on three valid ETFs and one invalid symbol, with three independent rounds per case. That produced 48 completed observations: 36 QVeris connector invocations and 12 direct Wind MCP invocations. The same completeness gates were applied to both tracks, but results from the native MCP track were not treated as QVeris connector results.

The live run was completed on August 6, 2026.

MarketProviderAccess pathValid ETF inputsNegative controlRounds / input
USAlpha VantageQVeris connectorSPY, QQQ, IWMZZZZ_INVALID3
USFIUQVeris connectorSPY.US, QQQ.US, IWM.USZZZZ_INVALID.US3
ChinaGildataQVeris connector510050, 510300, 1599159999993
ChinaWindOfficial Wind MCP510050.SH, 510300.SH, 159915.SZ999999.SH3
What counted as a valid full-list response

A valid holdings response had to clear a case-specific constituent floor based on the fund or tracked index's expected scale, preserve the requested fund identity, provide usable constituent identifiers and numeric weights, and avoid duplicate complete identifiers. Stable fixed-size top-10 responses failed the full-list contract even when their fields were clean. Invalid inputs had to close deterministically as either an explicit empty result or a provider rejection. The US contract allowed up to 2% missing constituent identifiers so that cash or derivative placeholders did not masquerade as duplicate securities; missing identifiers still reduced completeness.

Why weight totals were diagnostic, not a hard gate

We report the observed unit and decimal precision of weights instead of using their aggregate as a hard completeness gate. A provider may round every line before returning it; on a high-cardinality fund, those small per-row differences can accumulate materially. Cash, derivatives, and fund-accounting conventions can add further differences. Aggregate weight remains a useful diagnostic when the provider documents its normalization and precision, but it is not evidence by itself that rows are missing.

Latency is reported separately and never compensates for incomplete holdings. Prices, redistribution rights, and service-level commitments were not scored.

Holdings completeness by ETF

The table below reports one stable payload shape observed in all three rounds for each valid input. “Full-list response (tested)” means the endpoint cleared the case-specific record floor and integrity contract in every round; it does not establish the fund administrator's exact point-in-time book. “Top-10 slice” means the request for all holdings still returned only 10 rows. “Reported weight precision” is the maximum decimal precision observed in the response, not a vendor guarantee. dp means decimal places and pp means percentage points.

No complete identifier was duplicated in the observed Alpha Vantage, FIU, or Gildata payloads. Wind returned stable constituent identifiers in all valid runs, but the native MCP response did not expose an as-of date and remained fixed at 10 rows.

ProviderETFRecordsResponse scopeReported weight precisionAdditional fields observedIntegrity rounds
Alpha Vantage
View provider in QVerisView provider in QVeris
SPY505Full-list response (tested)4 dp fraction (0.01 pp)name, weight3/3
QQQ105Full-list response (tested)4 dp fraction (0.01 pp)name, weight3/3
IWM1,795Full-list response (tested)4 dp fraction (0.01 pp)name, weight3/3
FIU
View provider in QVerisView provider in QVeris
SPY.US10Top-10 slice5 dp percentname, weight, as-of date0/3
QQQ.US10Top-10 slice5 dp percentname, weight, as-of date0/3
IWM.US10Top-10 slice5 dp percentname, weight, as-of date0/3
Gildata
View provider in QVerisView provider in QVeris
51005072Full-list response (tested)4 dp percentshares, value, as-of date, sector3/3
510300342Full-list response (tested)4 dp percentshares, value, as-of date, sector3/3
159915118Full-list response (tested)4 dp percentshares, value, as-of date, sector3/3
Wind
Official native MCP
510050.SH10Top-10 slice4 dp percentname, shares, value, weight, rank0/3
510300.SH10Top-10 slice4 dp percentname, shares, value, weight, rank0/3
159915.SZ10Top-10 slice4 dp percentname, shares, value, weight, rank0/3
Negative-control behavior

This matters for agents: an empty portfolio and a rejected request are different states. Both can close a negative control safely when the connector distinguishes them deterministically, so downstream logic does not mistake an error for a real zero-holdings fund.

ProviderInvalid-input behaviorResult
Alpha VantageDeterministic request rejection with parameter guidance3/3 passed
FIUEmpty constituent result3/3 passed
GildataEmpty holdings result3/3 passed
WindExplicit “no data found” result from the native MCP3/3 passed

Provider-by-provider findings

Alpha Vantage: the tested full-list US fit
Qualified · US

The live Alpha Vantage ETF profile calls returned broad constituent lists, weights, and descriptions. SPY, QQQ, and IWM all cleared the full-list contract in every round; IWM consistently returned 1,795 rows. Several cash or derivative rows used placeholder identifiers, which reduced identifier coverage without being misclassified as duplicate securities.

Alpha Vantage reported weights as fractions with at most four decimal places, equivalent to 0.01 percentage-point granularity. In IWM, 221 rows were reported with zero weight at that precision. That makes the aggregate unsuitable as a hard row-completeness test. The response also lacked an as-of date, so the benchmark supports “full-list response” but does not prove exact point-in-time completeness against the fund administrator's book.

The Alpha Vantage ETF profile documentation is the official contract reference. Editorially, this was the strongest observed fit in this test for a US agent that needs broad portfolio holdings in one response. The exact connector is available on the Alpha Vantage provider page in QVeris.

FIU: clean fields, but a top-10 slice is not a portfolio
Partial · US

The live FIU payloads were internally tidy: identifiers, names, weights, parent symbols, and publication dates were present for all returned rows. The limiting factor was scope. Each valid input returned exactly 10 constituents, far below the case-specific floors for SPY, QQQ, and IWM.

The FIU MCP server is the declared official source. Editorially, the observed endpoint may suit top-holdings summaries, but it should not be presented to an agent as a full holdings API without pagination or a broader constituent route. The tested connector is listed on the FIU provider page in QVeris.

Gildata: the most complete tested China payload
Qualified · China

The live Gildata responses passed all 12 applicable observations. Besides fund and constituent identities, names, and weights, every returned row included shares, market value, an as-of date, and sector information. The three portfolios returned 72, 342, and 118 records, clearing their case-specific floors rather than repeating an artificial fixed-size slice.

The Gildata official site describes its financial-data offering. Editorially, Gildata was the strongest observed China fit in this test when an agent needs both composition and position-level depth. The connected entry is available on the Gildata provider page in QVeris.

Wind: rich top-10 fields, but not a complete portfolio
Partial · China

The official Wind MCP get_fund_holdings tool returned exactly 10 rows for each valid ETF in all nine positive observations, even though every request explicitly asked for all holdings rather than only the top 10. The rows were information-rich: constituent codes and names, shares, market values, weights, and ranks were all present. The fixed 10-row shape, requested-all mismatch, and failure to reach the case-specific record floors identify these as top-holdings slices. No as-of date was included in the response.

The Wind AI financial data marketplace is the official access point, and Wind publishes the MCP integration in its official Wind skills repository. Editorially, this tool fits top-holdings summaries and position cards, but it should not be used as a complete ETF allocation feed without a separate full-holdings route.

How to choose an ETF portfolio API for an agent

  • For US look-through, overlap, or compliance screening, Alpha Vantage was the tested full-list fit; add your own freshness control because the response did not expose an as-of date.
  • For a top-holdings card, FIU's compact response may be useful if the product explicitly labels it as partial.
  • For mainland China composition plus shares, value, date, and sector fields, Gildata had the strongest observed contract fit.
  • For a China top-10 holdings card that benefits from shares, market value, weight, and rank, Wind's native MCP is useful; do not treat the tested response as the full portfolio.

For implementation patterns beyond this comparison, see Portfolio monitoring agent and Financial data for AI agents.

Limitations and retesting rules

This edition covers constituent holdings for six named funds across US and China workflows. It does not establish complete exchange coverage or evaluate NAV, AUM, flows, corporate-action handling, survivorship bias, point-in-time corrections, pricing, redistribution rights, or contractual SLAs. The Alpha Vantage, FIU, and Gildata observations describe QVeris-connected behavior on August 6, 2026; the Wind observations describe the official native MCP on the same date. Provider plans, connectors, or later responses may differ.

Suppliers can submit a correction or propose a reproducible test case. Inclusion and placement cannot be purchased. Browse the QVeris Provider Hub or browse QVeris tools.

FAQ

Which tested API returned complete US ETF portfolios?

Alpha Vantage qualified. SPY, QQQ, and IWM passed all three full-list rounds, and the invalid control closed deterministically. IWM returned 1,795 rows; its four-decimal fractional weights were treated as reported precision, not as a hard aggregate completeness test.

Why did FIU not qualify if all fields were present?

Field presence is not portfolio completeness. FIU returned exactly 10 rows per valid ETF, below the case-specific record floors needed for a full holdings workflow.

Which provider exposed the deepest China fields?

Gildata returned weights, shares, market values, as-of dates, and sectors for all tested rows. Wind returned shares, market values, weights, and ranks for the top 10, but no response-level as-of date or complete portfolio.

Why is there no overall numeric score?

A single score would hide whether an endpoint returns a complete portfolio or only a partial list. The qualification states and per-ETF evidence keep those trade-offs visible.

Official references

A verified profile link does not guarantee entitlement, field availability, price or current execution success; inspect the current contract before calling.

ETF Holdings API Benchmark | QVeris Guides