Crypto ETF Flows - Bitcoin & Ether Spot ETF Daily Flows
Pricing
from $2.00 / 1,000 result rows
Crypto ETF Flows - Bitcoin & Ether Spot ETF Daily Flows
BTC and ETH spot-ETF flow tracker: daily net inflows and outflows per issuer plus daily totals over a lookback window, with latest-day snapshot, window aggregates and reconciliation in the run summary. The institutional-demand signal for bitcoin and ether. Fresh data every run.
Pricing
from $2.00 / 1,000 result rows
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Features
Share
Crypto ETF Flows: Bitcoin and Ether Spot ETF Daily Flows
Collect daily net inflows and outflows for the US spot Bitcoin and Ether ETFs, per issuer (IBIT, FBTC, ETHA and the rest) plus each day's total, from Farside Investors' published flow tables. Built for traders, analysts and bot builders who track institutional demand on a schedule and pipe the JSON into dashboards, alerts or models. No account or API key is needed.
Data only, not financial advice.
Use cases
- Institutional-demand dashboards: chart daily BTC or ETH ETF net flows and the issuer split, refreshed every trading day.
- Flow alerts: get a Telegram message when a day's total net flow passes your threshold (for example ±$500M).
- Issuer comparison: see which funds lead inflows or outflows over a week, a month or a year.
- Model features: add daily ETF flows as an input next to price, funding or on-chain data in your own research.
Quick start
- Open the Actor and click Start. The form is prefilled with Bitcoin ETFs and the last 30 calendar days.
- Read the rows in the Output tab, or export them as JSON, CSV or Excel.
For Ether ETFs over the last 90 days:
{"asset": "eth", "days": 90}
An empty input ({}) runs the same defaults as the prefilled form: Bitcoin
ETFs, last 30 calendar days.
Input
| Name | Type | Default | What it does |
|---|---|---|---|
asset | string | btc | Which flow table to read: btc (12 issuers) or eth (11 issuers). |
days | integer | 30 | Calendar days of history to return (1–1,096), counted back from the newest published day. 30 days is about 21–22 trading-day rows. |
alertAbsTotalFlowM | number | 0 | When above 0, each day whose total net flow is at least this many USD millions (inflow or outflow) sends one Telegram alert. Each crossing day alerts once, ever. 0 turns alerts off. |
telegramBotToken | string | empty | Secret bot token for alerts; if empty, the TELEGRAM_BOT_TOKEN secret environment variable is used. |
telegramChatId | string | empty | Chat that receives the alerts. |
A misspelt input field stops the run with an error that names it.
Output
One dataset record per trading day, oldest to newest: recordKey, source,
kind, asset, date, one flow field per issuer in USD millions (negative =
outflow), totalNetFlowM, sourceUrl, collectedAt.
- Bitcoin issuer fields:
flowIBIT,flowFBTC,flowBITB,flowARKB,flowBTCO,flowEZBC,flowBRRR,flowHODL,flowBTCW,flowMSBT,flowGBTC,flowBTC. - Ether issuer fields:
flowETHA,flowETHB,flowFETH,flowETHW,flowTETH,flowETHV,flowQETH,flowEZET,flowMSSE,flowETHE,flowETH.
The run summary (key-value store OUTPUT) reports the latest-day snapshot,
window aggregates (inflow, outflow and zero days), a totals reconciliation,
the alert report and any warnings. records counts only rows saved to the
dataset; if your maximum charge per run stops the run early, stoppedBy is
chargeLimit and the status message says how many rows were stored.
Output example
A real record from a run with {"asset": "btc", "days": 30}:
{"recordKey":"farside:btc:2026-09-23","source":"farside.co.uk","kind":"etf_flow","asset":"BTC","date":"2026-09-23","flowIBIT":166.3,"flowFBTC":143.2,"flowBITB":0,"flowARKB":5,"flowBTCO":0,"flowEZBC":0,"flowBRRR":0,"flowHODL":0,"flowBTCW":0,"flowMSBT":32.4,"flowGBTC":0,"flowBTC":0,"totalNetFlowM":346.9,"sourceUrl":"https://farside.co.uk/bitcoin-etf-flow-all-data/","collectedAt":"2026-10-21T06:06:58.773239+00:00"}
Pricing
- $0.002 per result row (one trading day).
- $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no rows.
You pay only for rows actually saved to the dataset; if fetching or validation fails, no rows are saved and none are charged. Platform usage is included.
Worked cost: the default 30-day run returns about 22 rows, so it costs about
$0.005 + 22 × $0.002 = $0.049. A one-year window (days: 365, about 250
trading days) costs about $0.505.
Scheduling and monitoring
- Schedule a daily run after the US market close with a short window (for
example
days: 7) to keep a rolling table; de-duplicate onrecordKey(asset plus date) in your own store. - Alerts never repeat: the Actor remembers which crossing days it has already
sent, so a daily schedule only messages new crossings. A failed or skipped
send is a warning in
OUTPUT, never a failed run.
FAQ
How fresh is the data? Flows are published per US trading day. Weekends and US holidays have no rows, and the newest row can lag today by a business day. Each run reads the published table at run time.
How far back does history go? Bitcoin ETFs since 2024-01-11 and Ether ETFs
since 2024-07-23. Set days up to 1,096.
What if an issuer has no figure for a day? It is returned as an explicit
null, never guessed.
Are the figures in dollars? Yes, in USD millions, as published.
Export formats? JSON, CSV, Excel, XML or RSS from the dataset, or read it through the Apify API in your own pipeline.
Limits
- US spot Bitcoin and Ether ETFs only; one asset per run.
- Daily granularity; no intraday flows.
- Figures are as published by the source and can be revised there after the first print.
For support, contact Apify support and include the Actor run ID.