Skip to content
Net flow Fri 16 Oct:−$166.8MCumulative:+$74.3BNAV:$124.3BCEFI:34 · FearFunds:58Assets:16
data for Fri 16 Oct · published Sat 17 Oct 05:47 UTC · T+1
App
Free · JSON · OpenAPI 3

Crypto ETF Flows API

Daily net inflows and outflows of US spot Bitcoin, Ethereum, Solana, XRP and twelve more crypto ETF complexes, as JSON, for each asset and for every fund behind it. Plus CEFI, the crypto ETF sentiment index, coin prices and weekly totals. One free key, no card.

Base URL https://api.cryptoetf.today/api/v1
16assets
8endpoints
30days of history
120requests / min
GET /v1/flows/summary
curl https://api.cryptoetf.today/api/v1/flows/summary \
  -H "Authorization: Bearer $CRYPTOETF_KEY"
200 application/jsonabridged
{
  "assets": [
    { "symbol": "BTC", "asset": "bitcoin",
      "date": "2026-10-16", "netFlowUsdM": -82.4 },
    { "symbol": "ETH", "asset": "ethereum",
      "date": "2026-10-16", "netFlowUsdM": -69.7 },
    { "symbol": "SOL", "asset": "solana",
      "date": "2026-10-16", "netFlowUsdM": -12.7 },
    … 13 more
  ],
  "updatedAt": "2026-10-19T20:24:50Z"
}
API and MCP operational · data for Fri 16 Oct, published Sat 17 Oct 05:47status.cryptoetf.today ↗

Your first request in three steps

01

Get a free API key

Sign in and open your profile. The key (cetf_live_…) is created there. No card, no plan.

Create my key
02

Send it in a header

Either header works:

Authorization: Bearer <key>
X-API-Key: <key>
03

Read the JSON

Flows are net, in US$ millions, rounded to 0.1. Positive is an inflow. Every row carries its UTC date; series run oldest → newest.

Endpoints

8 read-only GET endpoints. Open one to see a real response.

GET/v1/flows/summaryLatest net flow for every one of the 16 assets in one call.Response ▾
{
  "assets": [
    { "symbol": "BTC", "asset": "bitcoin",
      "date": "2026-10-16", "netFlowUsdM": -82.4 },
    { "symbol": "ETH", "asset": "ethereum",
      "date": "2026-10-16", "netFlowUsdM": -69.7 },
    { "symbol": "SOL", "asset": "solana",
      "date": "2026-10-16", "netFlowUsdM": -12.7 },
    … 13 more
  ],
  "updatedAt": "2026-10-19T20:24:50Z"
}
GET/v1/flows/{asset}Daily net flows for one asset, last 30 days, oldest → newest.Response ▾
{
  "symbol": "BTC",
  "asset": "bitcoin",
  "windowDays": 30,
  "days": [
    …,
    {"date": "2026-10-15", "netFlowUsdM": 5},
    {"date": "2026-10-16", "netFlowUsdM": -82.4}
  ],
  "updatedAt": "2026-10-19T20:24:50Z"
}
GET/v1/flows/{asset}/fundsThe same 30 days for one asset, fund by fund: IBIT, FBTC, ETHA and the rest.Response ▾
{
  "symbol": "BTC",
  "asset": "bitcoin",
  "windowDays": 30,
  "days": [
    …,
    { "date": "2026-10-16", "totalUsdM": -82.4,
      "funds": [
        {"ticker": "IBIT", "issuer": "BlackRock", "netFlowUsdM": -71.8},
        {"ticker": "FBTC", "issuer": "Fidelity", "netFlowUsdM": -10.6},
        …
      ] }
  ],
  "updatedAt": "2026-10-19T20:24:50Z"
}
GET/v1/fundsEvery fund with its issuer, fee and listing date, plus current net assets (AUM) and coins held.Response ▾
{
  "assets": [
    {"symbol": "BTC", "asset": "bitcoin", "totalNetAssetsUsdM": 104443.3, "date": "2026-10-16"}
  ],
  "funds": [
    { "ticker": "IBIT", "name": "iShares Bitcoin Trust ETF",
      "issuer": "BlackRock", "sponsorFeePct": 0.25,
      "netAssetsUsdM": 65340.6, "coinsHeld": 802987.6066, "netAssetsDate": "2026-10-16", … },
    …
  ],
  "updatedAt": "2026-10-19T20:24:50Z"
}
GET/v1/index/cefiCEFI, the 0–100 Crypto ETF Flow Index, with flow, trend and breadth.Response ▾
{
  "index": "CEFI-Composite",
  "current": 34,
  "date": "2026-10-16",
  "components": {"flow": 32, "trend": 64, "breadth": 7},
  "windowDays": 30,
  "history": [ { "date": "…", "value": … }, … ]
}
GET/v1/pricesSpot price and 24-hour change for all 16 coins.Response ▾
{
  "prices": [
    { "symbol": "BTC", "priceUsd": …, "change24hPct": … },
    …
  ],
  "updatedAt": "…"
}
GET/v1/analytics/weeklySeven-day totals per asset: net flow, average day, up and down days.Response ▾
{
  "from": "2026-10-13", "to": "2026-10-19",
  "assets": [
    {"symbol": "BTC", "asset": "bitcoin", "netFlowUsdM": -163.2, "avgDailyUsdM": -40.8, "positiveDays": 2, "negativeDays": 2},
    …
  ]
}
GET/v1/tickersDirectory of the 16 tracked assets: symbol, id and name.Response ▾
[
  { "symbol": "BTC", "asset": "bitcoin", "name": "Bitcoin" },
  { "symbol": "ETH", "asset": "ethereum", "name": "Ethereum" },
  …
]
GET /v1/index/cefi

Crypto ETF sentiment index API

CEFI, the Crypto ETF Flow Index, turns the whole market’s ETF flows into one number from 0 to 100. Every trading day it adds up the net flows of all spot ETFs on the 16 assets, in dollars, and scores three parts against the past year.

Flow · 40%The day’s net flow, smoothed.
Trend · 30%Net flow over the last 20 trading days.
Breadth · 30%The share of funds taking in money.

Zero flow scores 50. A typical inflow day scores about 69, a typical outflow day about 31. One composite index, no per-asset variants. The response carries 30 days of history.

CEFI · Fri 16 Oct"current": 34
34Fear
Flow
32
Trend
64
Breadth
7

A chart in eight lines

Bitcoin ETF flows for the last 20 trading days, drawn from one call to /v1/flows/btc.

import os, requests
import matplotlib.pyplot as plt

r = requests.get("https://api.cryptoetf.today/api/v1/flows/btc",
    headers={"X-API-Key": os.environ["CRYPTOETF_KEY"]})
days = [d for d in r.json()["days"] if d["netFlowUsdM"] != 0]
plt.bar([d["date"] for d in days], [d["netFlowUsdM"] for d in days])
plt.show()

Bitcoin, Ether, Solana, XRP and Hyperliquid list every calendar day with weekends as 0; the other assets list trading days only.

Bitcoin spot ETFs · daily net flowUS$ M
21 Sep16 Oct
Largest inflow+$998.9MMon 21 Sep
Largest outflow−$491.5MWed 7 Oct
Trading days2013 in, 7 out

What developers build with it

Dashboards and charts

Daily flows next to price, a 30-day bar chart per asset, a market-wide total.

/flows/{asset}/prices

Morning bots

A Telegram, Discord or Slack post when yesterday’s numbers land, before the US open.

/flows/summary

Newsletters and notes

A weekly ranking of assets with totals, average day and up/down days.

/analytics/weekly/index/cefi

AI agents

Claude, Cursor or your own agent reads the same data through the MCP server, no key.

MCP · 7 tools

Three ways in, all free

Same numbers everywhere, the same 30-day window.

REST API

free key
Auth
Bearer · X-API-Key
Limit
120 / min / key
Over limit
429 + Retry-After
For
apps, bots, scripts
Get a free API key

MCP server

no key
Transport
Streamable HTTP
Limit
60 / min / IP
Tools
7, read-only
For
Claude, Cursor, agents
MCP setup guide

Embed widget

no key
Format
HTML iframe, 360 or 600 px
Updates
every morning
Themes
light, dark, auto
For
blogs and sites
Build a widget

Embed a widget

The latest day’s flow on your site or blog. Updates itself every morning; no key needed.

Theme
Width

HTML

<iframe src="https://cryptoetf.today/embed/flows?asset=all&amp;theme=light"
  width="360" height="220" loading="lazy" style="border:0"
  title="Crypto ETF flows — CryptoETF"></iframe>

Preview · 360 × 220

The widget links back to the day’s issue. Figures are the same as on this site and in the API.

About the data

What the numbers are, before you build on them.

T+1A trading day appears the next morning (UTC), before the US open. The newest day can be revised once later that day. SUI funds arrive a day later.
Assets and fundsEvery asset comes as a daily total and, at /v1/flows/{asset}/funds, fund by fund (IBIT, FBTC, ETHA…). A fund with no figure for the day yet is null, not 0. Current net assets and coins held per fund are at /v1/funds.
30-day windowEvery key reads the last 30 days; windowDays in the response says so. Long-range charts are on cryptoetf.today.
PricesFrom exchange tickers, cached for 60 seconds. Check updatedAt in /v1/prices.
SourceIssuer filings and public fund disclosures. The same figures as on cryptoetf.today.
UptimeREST, MCP and the daily publish are monitored at status.cryptoetf.today.

Crypto ETF API — FAQ

Questions about keys, limits and data freshness. Anything else — Support

Is there a free Bitcoin ETF flows API?

Yes. The API is free with a key from your profile: no card, no paid plan. It covers Bitcoin and 15 more spot crypto ETF complexes.

Which assets are covered?

Bitcoin, Ethereum, Solana, XRP, Hyperliquid, Dogecoin, Chainlink, Avalanche, Hedera, Litecoin, BNB, Polkadot, Sui, NEAR, Tron and Zcash — every US-listed spot crypto ETF complex.

Does the API return per-fund flows, like IBIT or FBTC?

Yes. /v1/flows/{asset}/funds returns the daily net flow of every fund on an asset, such as IBIT, FBTC or ETHA, for the same last 30 days. Longer fund-by-fund history is on the asset pages of the site, for example Bitcoin ETF flows.

Can I get the AUM of each crypto ETF?

Yes. /v1/funds lists every spot crypto ETF with its issuer, sponsor fee and listing date, its current net assets (AUM) and the coins it holds, plus the total for each asset. It is a current snapshot, not a history. Fidelity, Grayscale, Franklin Templeton, Canary and WisdomTree do not publish holdings in coins, so for their funds coinsHeld is null.

How often is the data updated?

Once per trading day. A day’s flows appear the next morning (UTC), before the US market opens. The newest day can be revised once later that day.

Is there an API for crypto ETF sentiment?

Yes: /v1/index/cefi returns CEFI, a 0–100 index built from the net flows of all spot crypto ETFs, with its flow, trend and breadth components and 30 days of history.

How much history can I get?

The last 30 days on every endpoint. Longer series are on the site’s charts.

What are the rate limits?

120 requests per minute per key. Over the limit the API returns 429 with a Retry-After header. The MCP server allows 60 requests per minute per IP, no key.

Is there an OpenAPI spec?

Yes, OpenAPI 3 at api.cryptoetf.today/v1/openapi.json. The interactive reference lives at docs.cryptoetf.today.

Can I use it from Claude or Cursor?

Yes, through the MCP server at mcp.cryptoetf.today/api/mcp. It needs no key and returns the same numbers.

Yesterday’s ETF flows, before the US open.

GET https://api.cryptoetf.today/api/v1/flows/summary