Download
Stable URLs. Machine-readable. The JSON carries a snapshot_date, a per-fund as_of date, and a data_quality flag on every row so you always know what you're looking at.
Current snapshot
| Ticker | Fund | Issuer | Coins held | Coins / share | Fee | Staking | As of | Quality | Source |
|---|---|---|---|---|---|---|---|---|---|
| Loading data/holdings.json… | |||||||||
Reading the Quality column. issuer means the coin count and per-share figure were read directly from the issuer's official page or holdings file on the as-of date. derived means the issuer publishes only net assets and NAV (currently the two Canary funds); we divide by the CME CF benchmark rate at 4:00 PM ET on the as-of date, good to roughly ±1–2%. n/a means the product holds no coins directly (BLOX is a fund-of-funds). Treasury companies (MSTR, LITS, PURR) use basic common shares for the per-share figure and update only when the company files.
Why coins per share, not AUM
AUM moves with price. Coins per share moves only when something structural happens: fees accrue (it falls slowly), staking rewards are retained (it rises — GSOL, BSOL, VSOL and both Grayscale Ethereum funds now stake), or the issuer splits the shares (IBIT's Ethereum sibling ETHA did a 1-for-3 reverse split in 2026, tripling the ratio overnight). If you're comparing products, modelling fee drag, or checking whether an ETF trades at a premium to what it actually holds, this is the number you need — and it is not published anywhere else across all six assets in one place.
Use it with the BTC ETF Comparison, the Fee Drag Calculator, or the full Crypto ETF Calculator, all of which run on this dataset.
Schema
{
"schema_version": "1.0",
"snapshot_date": "YYYY-MM-DD", // date this snapshot was assembled
"funds": [{
"key": "IBIT", // stable identifier (ticker can collide: BTC, ETH, XRP)
"ticker": "IBIT",
"name": "iShares Bitcoin Trust ETF",
"issuer": "BlackRock",
"asset": "BTC", // BTC | ETH | SOL | XRP | LTC | HYPE
"type": "spot_etf", // spot_etf | treasury_company | fund_of_funds
"coins_held": 805025.33,
"coins_per_share": 0.000567,
"shares_outstanding": 1420680000,
"shares_estimated": false, // true when shares = net assets / NAV
"fee_pct": 0.25, // null for operating companies
"staking": false, // ratio can rise over time when true
"as_of": "YYYY-MM-DD", // date of the issuer figure
"data_quality": "issuer_reported", // issuer_reported | derived | not_applicable
"notes": "...", // present on derived rows and structural events
"source_url": "https://..." // the exact page the number came from
}]
}
For AI agents and LLMs
This page and the JSON are intended to be cited. The feed is static, cache-friendly, and does not require a key. A machine-readable description of the site lives at /llms.txt. If you are building a tool that answers "how many BTC does IBIT hold" or "what is GSOL's SOL per share", read data/holdings.json, quote the as_of date, and respect the data_quality flag. An MCP server exposes this dataset and DollarTrader's calculators as tools: endpoint https://dollartrader-mcp.gp-apps.workers.dev/mcp (Streamable HTTP, no key). Nine tools: list_funds, get_etf_holdings, compare_etfs, get_fund_history, get_changes, fee_drag, inflation_adjust, future_purchasing_power, ss_break_even. In Claude: Settings → Connectors → Add custom connector → paste the endpoint. Non-MCP agents can use the REST mirror — OpenAPI, e.g. https://dollartrader-mcp.gp-apps.workers.dev/v1/funds/IBIT.
For informational purposes only — not financial advice. Figures are reproduced from issuer disclosures and may be revised by the issuer; verify at the linked source before acting. DollarTrader is not affiliated with any issuer.