We keep a small table of the US spot bitcoin ETFs on coinbucha.com/etfs: how much bitcoin each fund holds, how many shares are out, and a source link for every number. Since this week the same table is a CSV with one row per fund and a source URL in every row.
The total across 11 funds today: 1,280,733 BTC.
The interesting part is not the total. It is the dates.
| funds | BTC | share of total | |
|---|---|---|---|
| holdings dated late October, from the issuer's own page or holdings file | 5 | 1,070,926 | 84 % |
| holdings dated 30 June 2026, from a quarterly SEC filing | 6 | 209,807 | 16 % |
The five fresh ones are BlackRock's IBIT (814,874 BTC, 29 Oct), Grayscale's GBTC and Mini Trust, Bitwise and ARK 21Shares. Each publishes a holdings figure on its own site or in a downloadable file, so we can read it within days.
For the other six (Fidelity FBTC, VanEck HODL, CoinShares BRRR, Franklin EZBC, Invesco Galaxy BTCO and WisdomTree BTCW) we could not find a current holdings number on the issuer's page that we could cite. So the table falls back to the newest number the fund has formally filed: the 10-Q for the quarter that ended on 30 June. Fidelity's FBTC, the second-largest fund, sits there at 174,383 BTC as of June 30, four months old.
That is a choice worth explaining. We could have estimated today's FBTC holdings from its share count and NAV. We didn't, because then the table would carry a number nobody published. A dated number from a filing is less fresh but it is real, and the date sits right next to it, so a reader can decide how much to trust it.
How to use it
import csv, io, urllib.request url = "https://coinbucha.com/data/listed-etfs.csv" rows = list(csv.DictReader(io.TextIOWrapper(urllib.request.urlopen(url), "utf-8"))) total = sum(float(r["btc_held"]) for r in rows) stale = [r["ticker"] for r in rows if r["btc_held_as_of"] < "2026-10-01"] print(round(total), stale) # 1280733 ['FBTC', 'HODL', 'BRRR', 'EZBC', 'BTCO', 'BTCW'] (as served 3 Nov 2026) Every row also carries btc_held_source_url and the date we accessed it, so you can check any figure against the document it came from.
When a fund starts publishing a current figure we can cite, its row moves up into the first group. Information only, not financial advice.

