Skip to main content
Loading market data…
GET/api/v1/etf/grayscaleHobbyist tier+ · 30 req/min

Grayscale product family rollup (GBTC, ETHE, mini trusts).

The Grayscale family has a unique shape — GBTC bled out tens of billions post-ETF-conversion, the mini trusts (BTC, ETH) launched from scratch, and ETHE is mid-reshuffle. This endpoint pulls all four from the shared `etf_flow` table so the numbers reconcile 1:1 with the per-asset routes.

Query parameters

This endpoint takes no query parameters.

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; ... }
// }

{
  family: "grayscale";
  tickers: string[];              // the canonical list
  cumulativeUsdM: number;         // signed, across all products
  holdings: Array<{
    ticker: string;
    asset: string;                // "BTC" | "ETH"
    cumulativeUsdM: number;
    lastDate: string | null;
  }>;
}

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/grayscale" \
  -H "Authorization: Bearer cg_live_YOUR_KEY"
Responsejson
{
  "data": {
    "family": "grayscale",
    "tickers": ["GBTC", "BTC", "ETHE", "ETH"],
    "cumulativeUsdM": -14850.2,
    "holdings": [
      { "ticker": "BTC", "asset": "BTC", "cumulativeUsdM": 1210.5, "lastDate": "2026-04-17" },
      { "ticker": "ETH", "asset": "ETH", "cumulativeUsdM": 140.8, "lastDate": "2026-04-17" },
      { "ticker": "ETHE", "asset": "ETH", "cumulativeUsdM": -820.4, "lastDate": "2026-04-17" },
      { "ticker": "GBTC", "asset": "BTC", "cumulativeUsdM": -15381.1, "lastDate": "2026-04-17" }
    ]
  },
  "meta": { "total": 4 }
}

Notes

  • Negative `cumulativeUsdM` for GBTC is expected — post-conversion outflows dominate its history.

Next

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