Skip to main content
Loading market data…
GET/api/v1/etf/{asset}Hobbyist tier+ · 30 req/min

Unified ETF summary — accepts bitcoin|ethereum|btc|eth in one route.

Mirrors the shape of `/api/v1/etf/bitcoin` and `/api/v1/etf/ethereum` but takes the asset as a path segment, so a single client implementation can serve both. Case-insensitive — `bitcoin`, `BTC`, `btc`, and `Bitcoin` all resolve the same. The legacy static routes remain for backwards compatibility; prefer this dynamic route for new integrations.

Path parameters

Segments of the URL path, validated server-side.

NameTypeRequiredDefaultDescription
assetenumrequired
Which ETF cohort to return. Canonicalised to BTC or ETH server-side.
bitcoinethereumbtceth

Query parameters

All query parameters are optional unless marked required.

NameTypeRequiredDefaultDescription
daysnumberoptional30
Trailing window of daily flow rows. Max 365.

Response shape

Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.

data payloadtypescript
// Wrapped in the standard envelope:
// {
//   data: /* shape below */,
//   meta?: { total?: number; limit?: number; offset?: number; ... }
// }

{
  asset: "BTC" | "ETH";
  flows: Array<{ date: string; tickerFlows: Record<string, number>; total: number }>;
  cumulative: number;
  rolling7d: number;
  biggestInflow: { date: string; totalUsdM: number } | null;
  biggestOutflow: { date: string; totalUsdM: number } | null;
  topIssuers: Array<{ ticker: string; cumulativeUsdM: number; share: number }>;
}

Example

Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.

Requestbash
curl -sS "http://localhost:3000/api/v1/etf/btc?days=30" \
  -H "Authorization: Bearer cg_live_YOUR_KEY"
Responsejson
{
  "data": {
    "asset": "BTC",
    "flows": [
      {
        "date": "2026-04-17",
        "tickerFlows": { "IBIT": 112.4, "FBTC": 64.2 },
        "total": 176.6
      }
    ],
    "cumulative": 43210.55,
    "rolling7d": 920.12,
    "biggestInflow": { "date": "2026-03-05", "totalUsdM": 1045.3 },
    "biggestOutflow": { "date": "2026-02-19", "totalUsdM": -385.7 },
    "topIssuers": [
      { "ticker": "IBIT", "cumulativeUsdM": 24100.0, "share": 0.56 }
    ]
  },
  "meta": { "total": 1, "days": 30, "asset": "BTC" }
}

Notes

  • Invalid `asset` returns 404 `UNKNOWN_ASSET`. Use `bitcoin|ethereum|btc|eth`.
  • Back-compat: the static `/api/v1/etf/bitcoin` and `/api/v1/etf/ethereum` routes still work.

Next

Check the error code reference, or get an API key to try the request against your own account.