Contents

Blockmetric Sentiment index

Blockmetric Sentiment: our own 0–100 market sentiment index (0 extreme fear, 100 extreme greed) from data we collect: BTC price momentum and volatility, funding of BTC and ETH perpetuals on Binance and Bybit, BTC open interest change, the Binance long/short account ratio, the liquidation imbalance and the positioning of tracked Hyperliquid whales.

GET/api/v1/sentimentEvery key

Description

Every input is ranked against its own daily values of the previous 365 days and weighted (method, /methodology#sentiment); an input without enough history or data is left out and the others are renormalised (status collecting, missing or off). Returns the current value (recomputed every 15 minutes; daily = true when it is the latest 00:00 UTC value) with the score and points of every input, and the daily history at 00:00 UTC. Inputs leave only as scores, never as raw values.

Who can call it

Available with every key and keyless (X-Blockmetric-Access: public). Keys of Free accounts get free-tier data (real-time feeds, 30 days of history, heatmap over time for every coin over the last 24 hours, liquidation levels now for every coin, the same as the free web plan); Pro and Desk keys the data of their plan; API Dev / API Pro raise the limits.

No key
24 h
Free
30 days
Pro
365 days
Desk
1095 days
API Dev
365 days
API Pro
1095 days

History window per plan. Limits: Authentication & limits.

Parameters

Parameters of /sentiment
ParameterDescription
daysintegerDays of daily history, default 90, clamped to 1–1095 and to the plan history (free key 30 days, keyless 24 h).1–1095 · default 90

Response fields

Every success is { data, meta }; these are the fields of data. meta is the same on every endpoint.

Response fields of /sentiment
FieldDescription
namestringAlways "Blockmetric Sentiment".
currentobject · nullableCurrent value with its breakdown; null while less than method.minWeight of the weight has enough history.
current.atstring (ISO 8601)Time of the value.
current.scorenumber0–100.
current.label"Extreme fear" | "Fear" | "Neutral" | "Greed" | "Extreme greed"-
current.dailybooleantrue: no fresh intraday value, this is the latest daily value at 00:00 UTC.
current.weightUsedintegerSum of the weights of the inputs that counted (of 100; at least method.minWeight).
current.components[]array of objectsAffected parts of the service.
current.components[].idstring (enum)Stable id of the item; on paginated feeds the order key together with ts.
current.components[].namestringName of the input, e.g. "Price momentum".
current.components[].weightintegerFixed weight of the input (of 100).
current.components[].status"ok" | "collecting" | "missing" | "off"ok = counted; collecting = fewer than method.minSamples earlier daily values; missing = no data for the period; off = a source of it is switched off.
current.components[].samplesintegerEarlier daily values in the 365-day lookback.
current.components[].scorenumber · nullable0–100: percentile against its own lookback (volatility inverted); null unless ok.
current.components[].pointsnumber · nullablePoints this input adds to the total (weight renormalised over the counted inputs); null unless ok.
history[]array of objectsDaily values at 00:00 UTC, oldest first; days without a score are left out.
history[].daystringUTC date of the 00:00 value (YYYY-MM-DD).
history[].atstring (ISO 8601)00:00 UTC of that day.
history[].scorenumber0–100.
history[].label"Extreme fear" | "Fear" | "Neutral" | "Greed" | "Extreme greed"-
history[].weightUsedintegerSum of the weights of the inputs that counted (of 100).
firstDaystring · nullableFirst day with a score.
methodobjectThe fixed rules of the index (/methodology#sentiment).
method.lookbackDaysintegerDays of daily values every input is ranked against.
method.minSamplesintegerEarlier daily values an input needs before it counts.
method.minWeightintegerMinimum weight (of 100) of the counted inputs for a value.
method.bands[]array of objectsLabel bands on the rounded score.
method.bands[].fromintegerLowest rounded score of the band.
method.bands[].tointegerHighest rounded score of the band.
method.bands[].label"Extreme fear" | "Fear" | "Neutral" | "Greed" | "Extreme greed"-

Errors

Code snippets in these docs are licensed under MIT-0: copy them into your own code without attribution. The SDKs, CLI and MCP server will be, once published, Apache-2.0; the name Blockmetric is not licensed (forks must be renamed). Data from the API is governed by the API terms; third-party exchange data by the exchange’s terms.

LiveHyperliquid markets 8sOperationalHyperliquid positions & whales 1sOperationalLiquidation heatmap & levels 6sOperationalLighter markets & liquidations 2sOperationalLighter positions & heatmap 4sOperationalLighter RH positions & heatmap 2sOperationalBinance markets 19sOperationalBybit markets 57sOperationalBinance liquidations 30sOperationalBybit liquidations 30sOperationaldYdX positions & heatmap 6sOperationalGMX positions & heatmap 1sOperationalLong/short & open interest history 44sOperationalOrder books & trade flow 4sOperationalOn-chain transfers 4sOperationalSecurity monitor 27sOperationalBlockmetric Sentiment 12mOperationalOfficial news 1mOperationalAlert delivery 1sOperational10:09:18 UTCData: Blockmetric Research · Binance · Bybit