Discovery and markets API
What do Bitcoin's on-chain holder and address metrics say?
Active and new addresses, long- and short-term holder supply and realized prices, SOPR, NUPL, reserve risk or RHODL ratio for bitcoin, daily since 2009-2011. One metric per call.
/api/external/discovery/bitcoin-onchain-metricsWhat it returns
One bitcoin on-chain metric as a daily series, one point per closed UTC day, over the last 30, 90, 365 or 1825 days or its whole history (days=all). The newest point is usually yesterday. Each point carries bitcoin's USD price that day (priceUsd, the day's open; the day's close for nupl) and the figure in values, named in valueNames:
active-addresses:activeAddresses;new-addresses:newAddresses— addresses seen, and seen for the first time, that day.long-term-holder-supply:lthSupplyBtc;short-term-holder-supply:sthSupplyBtc— BTC held by long- and short-term holders; the two add up to the supply issued.lth-realized-price:lthRealizedPriceUsd;sth-realized-price:sthRealizedPriceUsd— the average price each cohort acquired its coins at.lth-sopr:lthSopr;sth-sopr:sthSopr— spent output profit ratio, above 1 when coins moved at a profit.nupl:nupl— net unrealized profit/loss, a signed share of market value.reserve-risk:reserveRisk;rhodl-ratio:rhodlRatio— long-horizon valuation ratios.
Some days are missing (a few gaps of 1 to 4 days in 2025-2026); they stay gaps. A figure the source has none for is null, never 0 — nupl and its price before bitcoin had a market (2009), newAddresses on a few days.
Chains
This endpoint is not tied to a chain: it takes no chain in its request.
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/discovery/bitcoin-onchain-metrics?metric=active-addresses"
| Parameter | Description |
|---|---|
metricquery · string · required | The metric.active-addressesnew-addresseslong-term-holder-supplyshort-term-holder-supplylth-realized-pricesth-realized-pricelth-soprsth-soprnuplreserve-riskrhodl-ratio |
daysquery · string · optional | Trailing window in days back from the newest point, or all. Defaults to 365.30903651825all |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
metric | string | The metric answered. |
days | string | The window answered. |
valueNames | string[] | The keys of every point's values, in order. |
points | object[] | Oldest first, one per day; the last is the newest closed day. |
points[].timestamp | integer | Unix seconds, 00:00 UTC of the day. |
points[].priceUsd | number | null | Bitcoin's USD price that day. |
points[].values | object | The figure that day, keyed by valueNames; null where there is none. |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key