US ETF Holdings — Top 500 ETFs By AUM (Current Snapshot)
Current holdings for the top 500 US-listed ETFs by AUM — 623,253 ETF-position rows covering 434 ETFs. Each row carries the parent ETF's symbol, name, AUM (market cap), sector and exchange, alongside the held asset's ticker, full name, ISIN, CUSIP, share count, weight percentage, and market value. Rows pre-sorted by ETF symbol then weight descending, so top holdings per fund appear first. Pairs naturally with the existing ETF Master List for fund-level metadata. Read with pandas.read_csv(path, compression='gzip', parse_dates=['updatedAt']). Useful for: flow analysis (who's buying / dumping a stock at the ETF level), factor-exposure decomposition (roll up positions across multiple ETFs), copycat strategies for active ETFs, sector/factor overlap analysis, and identifying liquidity sources for specific names.
Use Cases
- Aggregate ETF flow / exposure analysis per underlying stock
- Factor exposure decomposition across multiple ETFs
- Copycat strategies for thematic and active ETFs
- Sector / factor overlap detection between funds
- Identifying ETF-side liquidity sources for specific tickers
Methodology
Two-phase build. Phase 1: discovered ETFs via FMP's /stable/company-screener?isEtf=true endpoint, paginated, kept the top 500 by market-cap (AUM proxy). Phase 2: pulled current holdings via /stable/etf/holdings for each ETF. Rows pre-sorted by ETF symbol then weight descending so top holdings come first per fund. Note: FMP does not expose a historical-holdings endpoint at the listing level — this listing ships a single point-in-time snapshot. Re-running captures a new snapshot.
Update Schedule
Snapshot as of build date. Re-run monthly for fresh holdings.
Attribution
Source: ETF holdings data via Financial Modeling Prep.
Schema
| name | type |
|---|---|
| etfSymbol | string |
| etfName | string |
| etfMarketCap | number |
| etfSector | string |
| etfIndustry | string |
| etfExchange | string |
| asset | string |
| assetName | string |
| isin | string |
| securityCusip | string |
| sharesNumber | number |
| weightPercentage | number |
| marketValue | number |
| updatedAt | datetime |
Sample Data
| isin | asset | etfName | assetName | etfSector | etfSymbol | updatedAt | etfExchange | etfIndustry | marketValue | etfMarketCap | sharesNumber | securityCusip | weightPercentage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TW0002330008 | 2330.TW | iShares MSCI All Country Asia ex Japan ETF | TAIWAN SEMICONDUCTOR MANUFACTURING | Financial Services | AAXJ | 2026-05-17 10:05:02 | NASDAQ | Asset Management | 648383020.78 | 4629924183.0 | 9001670.0 | S68891068 | 15.657 |
| KR7005930003 | 005930.KS | iShares MSCI All Country Asia ex Japan ETF | SAMSUNG ELECTRONICS LTD | Financial Services | AAXJ | 2026-05-17 10:05:02 | NASDAQ | Asset Management | 343152733.49 | 4629924183.0 | 1728458.0 | 700593000 | 8.287 |
| KR7000660001 | 000660.KS | iShares MSCI All Country Asia ex Japan ETF | SK HYNIX INC | Financial Services | AAXJ | 2026-05-17 10:05:02 | NASDAQ | Asset Management | 263312344.48 | 4629924183.0 | 199282.0 | S64502677 | 6.359 |
Get this via API
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'US ETF Holdings — Top 500 ETFs by AUM (Current Snapshot)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urls
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'US ETF Holdings — Top 500 ETFs by AUM (Current Snapshot)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urlsone time · open license
Details
Available formats