ETF Flows
Daily spot-ETF net flows for BTC, ETH, SOL and XRP — the latest day, the per-fund breakdown, and the trailing trend it has to be read against.
What it does
Recent daily spot-ETF net flows (USD) for an underlying asset (BTC, ETH, SOL, XRP; defaults to BTC): latest day total, per-fund breakdown, and the trailing daily trend. Positive means net inflows. Flows settle behind spot and skip weekends, so the latest row is routinely a day or more old — its age is reported next to the date, and the price it carries is the price on THAT date, not spot. 'symbol' is accepted as an alias for 'asset'.
Parameters
| Name | Type | Description |
|---|---|---|
assetquery | string | Underlying asset symbol, e.g. "BTC" or "ETH". Defaults to BTC. |
symbolquery | string | Alias for 'asset'. |
Call it
One API key works for MCP, REST and WebSocket; each call uses one unit. Agents without an account can pay per call with x402.
curl "https://mcp.f1ow.com/v1/catalysts/etf-flows?asset=BTC" \
-H "Authorization: Bearer $F1OW_API_KEY"{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "catalysts_etf_flows",
"arguments": {
"asset": "BTC"
}
}
}const res = await fetch("https://mcp.f1ow.com/v1/catalysts/etf-flows?asset=BTC", {
headers: { Authorization: `Bearer ${process.env.F1OW_API_KEY}` },
});
const data = await res.json(); // the tool's result as JSON, typed in the OpenAPI spec
console.log(data);import os, requests
res = requests.get(
"https://mcp.f1ow.com/v1/catalysts/etf-flows?asset=BTC",
headers={"Authorization": f"Bearer {os.environ['F1OW_API_KEY']}"},
)
data = res.json() # the tool's result as JSON, typed in the OpenAPI spec
print(data)// wss://mcp.f1ow.com/v1/ws — subprotocol "jsonrpc-2.0", Authorization: Bearer <key>
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "catalysts_etf_flows",
"arguments": {
"asset": "BTC"
}
}
}
// Or push a fresh result whenever it changes (minimum interval 15 s)
{
"jsonrpc": "2.0",
"id": 2,
"method": "subscriptions/subscribe",
"params": {
"name": "catalysts_etf_flows",
"arguments": {
"asset": "BTC"
},
"intervalSeconds": 60
}
}# No account: the first call answers 402 with a PAYMENT-REQUIRED challenge;
# an x402 client pays it in USDC on Base and retries.
curl "https://mcp.f1ow.com/x402/v1/catalysts/etf-flows?asset=BTC"Sample response
A real response captured 2026-11-13. Interactive is the tool's MCP App rendering it, as Claude, ChatGPT and other MCP Apps hosts show it; here it is read-only. JSON is what REST and WebSocket return, and the structuredContent of an MCP call (trimmed for length), with generatedAt for freshness. Text is the report an MCP client hands to a model.
BTC ETF flows — latest 2026-11-12 (32.1h old)
net -47.7M | price $73980
recent daily (newest first): -47.7M, -299.8M, -95.0M, -201.0M, -411.9M, -430.2M, +74.6M
top funds: BITB -26.4M, ARKB -18.5M, HODL -6.1M, MSBT +3.3M, IBIT +0.0M{
"asset": "BTC",
"days": [
{
"byTicker": [
{
"flowUsd": 0,
"ticker": "IBIT"
},
{
"flowUsd": 0,
"ticker": "FBTC"
},
{
"flowUsd": -26400000,
"ticker": "BITB"
},
{
"flowUsd": -18500000,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": 0,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-12",
"dateMs": 1794441600000,
"netFlowUsd": -47700000,
"priceUsd": 73979.9
},
{
"byTicker": [
{
"flowUsd": -269700000,
"ticker": "IBIT"
},
{
"flowUsd": 0,
"ticker": "FBTC"
},
{
"flowUsd": 0,
"ticker": "BITB"
},
{
"flowUsd": 0,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": 0,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-11",
"dateMs": 1794355200000,
"netFlowUsd": -299800000,
"priceUsd": 73762.9
},
{
"byTicker": [
{
"flowUsd": -78200000,
"ticker": "IBIT"
},
{
"flowUsd": -36800000,
"ticker": "FBTC"
},
{
"flowUsd": 0,
"ticker": "BITB"
},
{
"flowUsd": 0,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": 0,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-10",
"dateMs": 1794268800000,
"netFlowUsd": -95000000,
"priceUsd": 75327.1
},
{
"byTicker": [
{
"flowUsd": -213200000,
"ticker": "IBIT"
},
{
"flowUsd": 0,
"ticker": "FBTC"
},
{
"flowUsd": 0,
"ticker": "BITB"
},
{
"flowUsd": -9900000,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": 0,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-09",
"dateMs": 1794182400000,
"netFlowUsd": -201000000,
"priceUsd": 74823.4
},
{
"byTicker": [
{
"flowUsd": -403000000,
"ticker": "IBIT"
},
{
"flowUsd": 42800000,
"ticker": "FBTC"
},
{
"flowUsd": -20500000,
"ticker": "BITB"
},
{
"flowUsd": -20100000,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": 0,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-06",
"dateMs": 1793923200000,
"netFlowUsd": -411900000,
"priceUsd": 76050
},
{
"byTicker": [
{
"flowUsd": -105000000,
"ticker": "IBIT"
},
{
"flowUsd": -199900000,
"ticker": "FBTC"
},
{
"flowUsd": 0,
"ticker": "BITB"
},
{
"flowUsd": -18900000,
"ticker": "ARKB"
},
{
"flowUsd": 0,
"ticker": "BTCO"
},
{
"flowUsd": -32900000,
"ticker": "EZBC"
},
"… 6 more"
],
"date": "2026-11-05",
"dateMs": 1793836800000,
"netFlowUsd": -430200000,
"priceUsd": 80466.4
},
"… 24 more"
],
"generatedAt": "2026-11-12T00:00:00.0000000+00:00"
}Related tools
events_prediction_oddsWhat real money says about a question: per-outcome probabilities, the volume standing behind them, and when the market resolves.
catalysts_calendarCrypto events landing inside the next seven days, filterable to a single coin when only its own catalysts matter.
catalysts_economic_calendarCPI, FOMC, jobs and GDP — the macro releases that move crypto anyway — from two days back to a week ahead, filtered by importance.
catalysts_exchange_listingsOfficial venue notices for new listings, delistings and other trading changes, with scheduled times, recent history, and coin or venue filters.
Call ETF Flows from your agent
Sign in, get an API key and make your first call in under a minute. No card required.
For agents: this page as Markdown · all docs