Skip to main content
GET
cURL

What it measures

The Analyst Consensus Index: one analyst = one vote (their latest directional post on the asset, weighted by recency and accuracy), −100 (all bearish) to +100 (all bullish), one daily series per asset.
  • Without a key it answers the latest point for any asset with the bull / bear case, the 30-day split and the links to cite.
  • With a key it answers the daily history (Premium / Enterprise: the whole range; Free: the latest point only).

Response fields (series)

Notes

  • days counts days of history ending yesterday UTC (keyed only). Positive integer, capped at the plan’s limit (36,500 = everything on Premium / Enterprise). The full BTC history is ≈ 1,950 rows.
  • granularity — only daily is offered (there is no hourly series).
  • via — public form only: tags the payload’s links with utm_source (chatgpt, claude, mcp, gemini, perplexity, api).
  • An unregistered asset answers 400 UNKNOWN_ASSET; the list is GET /assets.
  • Public payloads carry page_url, cite_as and data_by (“Data by CryptoQuant Consensus”) — show the attribution with the numbers.
The same daily index for BTC, ETH and SOL is also served with a CryptoQuant API key through the Indicator API (Authorization: Bearer, from/to/limit/ order) — the index only, without the breakdown, stance or track record.

Authorizations

X-API-Key
string
header
required

Provisioned with the CryptoQuant Premium plan or an Enterprise agreement (no self-serve). Keys start with unbias_live_.

Query Parameters

asset
string
default:BTC

Any registered asset, case-insensitive: the symbol (BTC, NVDA, 005930, XAU), the route key (bitcoin, samsung-electronics), the display name (Bitcoin), an alias ticker (GLD → XAU) or a retired ticker (MATIC → POL). The response reports the canonical symbol. The full list: GET /assets. A market aggregate (crypto-market) is not accepted. Unknown → 400 UNKNOWN_ASSET.

days
integer
default:7

Keyed only — days of history ending yesterday UTC. Positive integer (anything else → 400 INVALID_PARAMETER); silently capped at the plan's max_days_history (free 7, premium / enterprise 36500). Ignored without a key and on the free plan's single point.

Required range: 1 <= x <= 36500
granularity
enum<string>
default:daily

Keyed only — daily is the only value (there is no hourly series); anything else → 400 INVALID_PARAMETER.

Available options:
daily
via
enum<string>
default:chatgpt

The surface the agent runs on; sets utm_source on every link in the payload. Unknown values fall back to the default.

Available options:
chatgpt,
claude,
mcp,
gemini,
perplexity,
api

Response

Latest point (no key: ConsensusPublic), series (premium / enterprise: ConsensusSeries) or latest point (free: ConsensusLatest). The three shapes are told apart by plan (public / absent / free).

No key: the latest end-of-day index point for the asset (what the asset page's band shows) with the bull / bear case and the links to quote.

asset
string
required

Canonical symbol.

asset_name
string
required
asset_class
enum<string>
required
Available options:
crypto,
equities,
indices,
commodities
date
string<date> | null
required

UTC day of the reading (null = no index yet for this asset).

consensus_index
number | null
required

Analyst Consensus Index: −100 all bearish … +100 all bullish (one analyst = one vote, decay × accuracy weighted; see /methodology).

Required range: -100 <= x <= 100
plan
enum<string>
required
Available options:
public
page_url
string<uri>
required

The canonical page on the site for this answer, UTM-tagged for the calling surface (via). Link it in every answer.

cite_as
string
required

Attribution line + the untagged canonical URL, e.g. "Data by CryptoQuant Consensus — https://consensus.cryptoquant.com/consensus/btc".

data_by
enum<string>
required

Show this next to the numbers.

Available options:
Data by CryptoQuant Consensus
as_of
string<date-time>
required

Generation time of the payload (UTC).

consensus_index_30d_ma
number | null
Required range: -100 <= x <= 100
bullish_percent
integer | null

round((consensus_index + 100) / 2) — the bullish share the site shows.

Required range: 0 <= x <= 100
bearish_percent
integer | null

100 − bullish_percent.

Required range: 0 <= x <= 100
total_analysts
integer | null

Analysts voting in that day's index.

Required range: x >= 0
bull_case
string | null

One-line bull case for the window (null when no bullish consensus formed).

bear_case
string | null
window
enum<string>

Window of the bull / bear case.

Available options:
30d
history
string

How to get the daily history (API key).

top_analysts_url
string<uri>

The asset's analysts ranked by accuracy (site page).

methodology_url
string<uri>

How the numbers are made.