Skip to main content
GET
/
indicator
/
demand-monitor
/
apparent-demand
Apparent Demand Growth 30-days
curl --request GET \
  --url https://api.cryptoquant.com/v2/indicator/demand-monitor/apparent-demand \
  --header 'Authorization: Bearer <token>'
{
  "status": {
    "code": 123,
    "message": "<string>"
  },
  "result": {
    "window": "<string>",
    "data": [
      {
        "date": "<string>",
        "apparent_demand": 123,
        "apparent_demand_1y": 123
      }
    ]
  }
}

What it measures

Net change in Bitcoin supply inactive for 1+ year, adjusted for daily block rewards, as a 30-day and 1-year rolling sum in BTC

How to interpret it

30-day. Positive = market absorbing more BTC than being released (bullish). Negative = supply outpacing demand (bearish). Sharp reversals from deep negative territory have historically preceded price rallies. 1-year. Rising = institutional/long-term capital accumulating structurally (bull). Falling even alongside rising prices = bull cycle losing foundation. Both 30D and 1Y negative simultaneously = confirmed bear market.

Key thresholds

30-day. 490K–550K BTC = peak demand cycle tops; 0 = critical demand/supply boundary; Below 0 = contraction; Below –200K BTC = extreme weakness. A 30-day moving average crossover (above/below) indicates bullish/bearish conditions forming. 1-year. Positive and rising = structural bull; Flat/slowing = mid-cycle warning; Negative or below its 365-day moving average = bear market (–857K BTC recorded in April 2026 bear phase)

How to use it

30-day. Necessary condition for sustained ATH rallies. Slowing rate of decline before zero crossing = early reversal signal. Read alongside ETF demand and whale accumulation. 1-year. Compare against 30-day reading to assess momentum direction. 1-year still positive but 30-day negative = bull correction. Both negative = structural bear market confirmed.

Run this metric in CryptoQuant Analytics

Authorizations

Authorization
string
header
required

For each API request, include the Authorization HTTP header with Bearer {access_token}.

Query Parameters

window
string
default:day

Time interval for aggregation.

from
string

Starting time, formatted as YYYYMMDDTHHMMSS (UTC). If window=day, YYYYMMDD is also accepted.

to
string

Ending time, formatted as YYYYMMDDTHHMMSS (UTC). If window=day, YYYYMMDD is also accepted.

limit
integer

Maximum number of data rows to return.

Response

200 - application/json

Monitoring Bitcoin demand

status
object
required

Returned with every response; indicates whether the request was successful.

result
object
required