Free ETF Flows API
Spot bitcoin and ether ETF holdings from the issuers' own daily files, with each day's net flow derived from the change in reported holdings: iShares, Bitwise and ARK 21Shares for bitcoin, iShares and Bitwise for ether. History starts 20 August 2026.
Endpoints
/api/markets/etf-flows?asset=btc|eth&days=90Per-fund daily rows, newest first.
/api/markets/etf-flows/csvEverything as CSV.
Limits
- Issuer files only: iShares, Bitwise and ARK 21Shares for bitcoin; iShares and Bitwise for ether. Funds without a published daily holdings file show no flows.
- Flow is derived from the change in each fund's reported holdings, valued in USD: computed, not reported by the issuer.
- No weekend rows; issuer files update on trading days.
- History starts 20 August 2026.
Response shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| date | string (date) | The as-of date of the issuer file |
| ticker | string | Fund ticker (IBIT, ETHA...) |
| issuer | string | Issuer name |
| asset | string | btc or eth |
| holdings | string | null | Coins held per the issuer file |
| flowUsd | string | null | Net flow for the day in USD, derived from the change in the fund's reported holdings |
| aumUsd | string | null | Holdings valued in USD |
Rows update daily on US trading days, as each issuer posts its holdings. A null flow means there's no earlier file to compare with yet.
Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.
A free account key raises the limit; send it in an X-API-Key header.
Frequently Asked Questions
Which funds are covered?
How is the flow number computed?
When does it update?
What are the rate limits?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.