Skip to main content
GET
/
indicator
/
risk
/
bull-score
Bitcoin Bull Score Index
curl --request GET \
  --url https://api.cryptoquant.com/v2/indicator/risk/bull-score \
  --header 'Authorization: Bearer <token>'
{
  "status": {
    "code": 123,
    "message": "<string>"
  },
  "result": {
    "window": "<string>",
    "data": [
      {
        "date": "<string>",
        "bull_score_pct": 123
      }
    ]
  }
}

What it measures

Composite index (0–100) aggregating 10 binary on-chain and market metrics (network activity, investor profitability, demand, liquidity, momentum) — each scored 1 (bullish) or 0 (bearish)

How to interpret it

The primary market regime classifier. Determines how all other metrics should be interpreted — especially whether the Trader Realized Price acts as support or resistance.

Key thresholds

80–100 = “Extra Bullish” (seen at 126KATHOct2025);6080=Bullmarket;50=Neutral;sustainedbelow40=Bearmarket;20=Deepbear(Jan2023bottom,Mar2025,Nov2025);0=Maximumbearish(Feb2026at126K ATH Oct 2025); 60–80 = Bull market; 50 = Neutral; sustained below 40 = Bear market; 20 = Deep bear (Jan 2023 bottom, Mar 2025, Nov 2025); 0 = Maximum bearish (Feb 2026 at 75K)

How to use it

The regime classifier for all other metrics. Bitcoin only sustains major rallies when score ≥ 60. Trader Realized Price = support when ≥ 60, resistance when ≤ 40. Recovery above 40 with positive apparent demand and recovering ETF flows = bull market re-entry signal.

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

market regime

status
object
required

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

result
object
required