π ETF Holdings Tracker β Constituents, Weights, AUM
Pricing
from $100.00 / 1,000 etf holding records
π ETF Holdings Tracker β Constituents, Weights, AUM
Track ETF constituent holdings, weights, AUM, sector exposure across 100+ major US ETFs including SPY, QQQ, VTI, ARKK, JEPI. Daily holdings data for asset allocators, ETF arbitrageurs, factor investors, index researchers. Bloomberg ETF analytics alternative β pay-per-result, no Bloomberg seat.
Pricing
from $100.00 / 1,000 etf holding records
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Pay-per-result ETF holdings data β $0.10 per constituent record. No Bloomberg seat, no FactSet contract, no per-symbol licensing wall.
Track the full constituent baskets of 100+ major US ETFs β SPY, QQQ, IWM, VTI, VOO, IVV, EFA, EEM, AGG, BND, GLD, SLV, the XL* sector SPDRs, the ARK family, JEPI, SCHD, VIG, VWO, VEA, IEMG, IEFA, TQQQ, SQQQ, ARKK, ARKQ, ARKW, ARKG, plus the long tail of iShares, Vanguard, State Street, Invesco, ProShares, First Trust, Direxion, Schwab, JPMorgan, WisdomTree, Global X, KraneShares, VanEck, Pacer and Fidelity products. Every constituent is emitted as a discrete record with ETF symbol, ETF name, ETF issuer, ETF AUM, holding symbol, holding name, weight %, shares held, market value, sector, and country.
This actor is purpose-built for the four buy-side workflows where ETF holdings data is mission-critical:
- Asset allocators decomposing thematic / sector / factor ETF exposure into underlying GICS sectors and country breakdowns
- ETF arbitrageurs computing NAV deltas vs the live constituent basket and surfacing intraday creation / redemption opportunities
- Factor investors reverse-engineering a fund's beta to value, momentum, quality, low-volatility and size factors from the holding list
- Indexers tracking constituent adds, drops and reweights week-over-week across iShares, Vanguard and SPDR sleeves to anticipate front-running flows
What you get per record
Each emitted record represents one ETF-constituent pair. Pull SPY and you'll get ~500 records; pull QQQ and you'll get ~100; pull ARKK and you'll get ~30. Records carry:
etf_symbolβ parent ETF ticker (SPY, QQQ, VTI, ARKK, JEPI, etc.)etf_nameβ full fund name as reported by the issueretf_issuerβ sponsor (iShares / Vanguard / State Street / Invesco / ARK / JPMorgan / Schwab / WisdomTree / ProShares / Direxion / Global X / KraneShares / VanEck / First Trust / Pacer / Fidelity)etf_aum_usdβ total net assets in raw USDetf_aum_billion_usdβ total net assets in USD billions (3-decimal precision)holding_symbolβ constituent tickerholding_nameβ constituent company nameholding_sectorβ best-effort GICS sector inference for the constituentweight_pctβ constituent weight as % of ETF AUM (e.g. NVDA = 8.17% of SPY)shares_heldβ share count held by the ETFmarket_value_usdβ derived dollar value = AUM Γ weight%holding_countryβ issuer country of incorporation (for international/global ETFs like EEM, EFA, KWEB, EWJ)as_of_dateβ issuer-reported holdings date (defaults to today if absent)etf_holdings_urlβ direct deep-link to the source holdings pagedata_sourceβ provenance flag
Input parameters
etf_symbolsβ array of ETF tickers to pull (default:["SPY", "QQQ", "VTI"])limitβ hard cap on total holding records returned across all ETFs (default 1000, max 50000). Use this to bound cost.max_holdings_per_etfβ cap per ETF (default 100, 0 = full holdings). SPY has ~500, VTI ~3700, ARKK ~30. Most analytics workflows need only the top 50-100 names by weight.min_weight_pctβ filter out long-tail holdings below this weight (default 0). Use 0.5 to keep only meaningful positions, 1.0 for top-decile names.countryβ filter holdings by issuer country of incorporation. Primarily useful for international / global ETFs (EEM, EFA, KWEB, EWJ, IEMG, IEFA, VWO).issuerβ filter the requested ETFs by sponsor when you pass a long ETF list but only want (e.g.) iShares funds.
How it works
The actor probes per-ETF holdings tables from stockanalysis.com/etf/{symbol}/holdings/ β clean server-rendered HTML with up to ~500 holdings per ETF and weight + share-count columns straight from the daily issuer disclosure. For each ETF symbol passed in, the actor also fetches the overview page at /etf/{symbol}/ to recover the fund's official name, total AUM, sponsor, and as-of date. Both pages are pulled concurrently per ETF so a 10-ETF run completes in seconds, not minutes.
We then merge per-ETF metadata into every constituent row, derive market_value_usd from AUM Γ weight%, infer the holding's GICS sector from a curated S&P 500 lookup table (with name-keyword fallback for off-index names), and tag the holding's country of incorporation from a known-name / suffix map. Final filtering by min_weight_pct, country, issuer and the global limit happens just before the push, so you only pay for records that match your spec.
Pricing & cost model
PAY_PER_EVENT:
Actor startβ $0.01 (charged once per run)ETF holding recordβ $0.10 per emitted dataset item (primary event)
Cost examples:
- Top-10 holdings of SPY β $0.01 + 10 Γ $0.10 = $1.01
- Top-100 holdings of SPY, QQQ, VTI (default input) β $0.01 + 300 Γ $0.10 = $30.01
- Full SPY constituent basket (~500 names) β $0.01 + 500 Γ $0.10 = $50.01
- Full top-100 of all 11 sector SPDRs (XLK, XLF, XLE, XLI, XLV, XLY, XLP, XLU, XLB, XLRE, XLC) β $0.01 + 1100 Γ $0.10 = $110.01
This pricing is deliberately positioned mid-premium β well below the IPO-tracker rate ($0.50/event) because holdings records are volume-heavy, but well above thin-ticker screener rates ($0.02-0.05) because each record carries six fund-level joins of metadata plus four constituent-level derivations.
How this compares to Bloomberg / FactSet / Refinitiv / etf.com Pro
| Platform | Coverage | Annual cost | Daily holdings refresh | Programmatic API |
|---|---|---|---|---|
| Bloomberg Terminal (ETF analytics) | All US + international ETFs | ~$24,000 / seat / year | Yes | Yes (BLPAPI, seat-locked) |
| FactSet ETF Solutions | 8000+ ETFs globally | ~$12,000 / seat / year | Yes | Yes (FactSet API) |
| Refinitiv Workspace ETF | Global ETFs | ~$22,000 / seat / year | Yes | Yes (Refinitiv Data Platform) |
| etf.com Pro | US ETFs | ~$2,400 / year | Daily | Limited (CSV export only) |
| ETF Holdings Tracker (this actor) | 100+ major US ETFs | Pay-per-record, no subscription | Yes (daily issuer disclosure) | Yes (Apify REST API + webhooks) |
If you need full global ETF coverage, real-time intraday holdings updates, and a full Bloomberg-grade analytics workspace, you're still going to pay for a terminal. But if your workflow is:
- A weekly rebalance check of 10-30 ETF baskets
- A factor decomposition pipeline that ingests holdings once per week
- A retail-facing ETF lookup tool that doesn't need a $24k/year per-seat data backend
- An academic / research workflow that needs holdings but not the rest of a terminal
β¦ then paying per holding record is the right cost model and this actor is a 90%+ savings vs the incumbents.
Sister actors in the NexGenData fleet
This actor is part of a financial-data fleet on Apify. Combine these to build a full data backend without a Bloomberg seat:
- Finviz Stock Screener β US equities filtered by sector, fundamentals, technicals (the equity universe behind every ETF)
- SEC Form 13F Holdings Tracker β quarterly institutional holdings (the buy-side counterpart to ETF holdings)
- Chinese ADRs Stock Screener β US-listed Chinese ADRs (the names you'll find inside KWEB, MCHI, FXI, ASHR)
- TSE Japan Stock Screener β Tokyo-listed names (constituent universe for EWJ, DXJ, BBJP)
- LSE UK Stock Screener β London-listed names (constituent universe for EWU, FLGB, HEWU)
- Finance MCP Server β model-context-protocol bridge so you can pull these screeners from Claude, GPT, Cursor and any other MCP-capable client
Output schema
Each record:
{"etf_symbol": "SPY","etf_name": "SPDR S&P 500 ETF Trust","etf_issuer": "State Street","etf_aum_billion_usd": 762.12,"etf_aum_usd": 762120000000.0,"holding_symbol": "NVDA","holding_name": "NVIDIA Corporation","holding_sector": "Technology","weight_pct": 8.17,"shares_held": 290262607,"market_value_usd": 62265204000.0,"holding_country": "United States","as_of_date": "2026-05-10","etf_holdings_url": "https://stockanalysis.com/etf/spy/holdings/","data_source": "stockanalysis.com"}
Common recipes
Top-10 sector SPDRs basket review: {"etf_symbols": ["XLK", "XLF", "XLE", "XLI", "XLV", "XLY", "XLP", "XLU", "XLB", "XLRE", "XLC"], "max_holdings_per_etf": 10} β 110 records, $11.01.
ARK family decomposition: {"etf_symbols": ["ARKK", "ARKQ", "ARKW", "ARKG", "ARKF", "ARKX"], "max_holdings_per_etf": 50, "min_weight_pct": 0.5} β gets every meaningful position across the entire ARK lineup for cross-fund overlap analysis.
Core 3-fund portfolio audit: {"etf_symbols": ["VTI", "VXUS", "BND"], "max_holdings_per_etf": 100} β the basket behind the Boglehead three-fund portfolio.
Income / dividend ETFs: {"etf_symbols": ["SCHD", "VIG", "VYM", "JEPI", "JEPQ", "DIVO", "SDY"], "max_holdings_per_etf": 50} β full breakdown of the high-yield ETF complex.
International decomposition by country: {"etf_symbols": ["EEM", "EFA", "IEMG", "IEFA", "VWO", "VEA"], "country": "China", "max_holdings_per_etf": 100} β isolates only the Chinese holdings inside each broad EM/DM ETF.
Leveraged / inverse: {"etf_symbols": ["TQQQ", "SQQQ", "SOXL", "SOXS", "UPRO", "SPXU"], "max_holdings_per_etf": 50} β the swap basket behind the 3x products.
Reliability & maintenance
The actor degrades gracefully β if stockanalysis.com returns non-200 for a single ETF, that ETF is skipped and the rest of the run continues. AUM and as-of date are best-effort; if either is unavailable the record still emits with the fund-level fields nulled and as_of_date defaulting to today. Sector and country inference are heuristic β they cover the S&P 500 universe directly and use name-keyword fallback for off-index names; consumers who need authoritative GICS classifications should join against Finviz or Refinitiv downstream.
Affiliate & support
Built and maintained by NexGenData on the Apify platform. Discover the full fleet of 50+ stock screeners, fundamentals trackers, SEC filing harvesters and financial-data MCP servers here: