cURL
curl -X GET "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"fetch("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
.then(response => response.json())
.then(data => console.log(data))require('axios')
.get("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
.then(response => console.log(response))require 'net/http'
uri = URI("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
res = Net::HTTP.get_response(uri)
puts res.bodyimport requests
url = "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"
print(requests.get(url).json())<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://consensus.cryptoquant.com/api/v1/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://consensus.cryptoquant.com/api/v1/assets"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://consensus.cryptoquant.com/api/v1/assets")
.asString();{
"count": 2,
"rows": 3,
"filter": {
"asset_class": null,
"category": null,
"q": null
},
"asset_classes": {
"crypto": "Crypto",
"equities": "Equities",
"indices": "Indices & ETFs",
"commodities": "Commodities"
},
"categories": {
"crypto": "Crypto",
"us-equities": "US Equities",
"indices": "Indices & ETFs",
"commodities": "Commodities",
"kr-equities": "KR Equities"
},
"how_to_resolve": "Pass any of symbol, key, name, an alias or a retired symbol as `asset` on the other endpoints (case-insensitive); the response always reports the canonical symbol. coverage=pending assets have a page but no analyst data yet.",
"assets": [
{
"symbol": "BTC",
"name": "Bitcoin",
"key": "btc",
"asset_class": "crypto",
"category": "crypto",
"market": "Bitfinex",
"currency": "USD",
"source": "alpha",
"coverage": "live",
"canonical": null,
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/btc",
"identity": {
"asset_class": "crypto",
"uid": "bitcoin",
"chain_contract": null,
"exchange_mic": null,
"needs_review": false
}
},
{
"symbol": "GLD",
"name": "Gold",
"key": "gld",
"asset_class": "commodities",
"category": "commodities",
"market": "Commodity",
"currency": "USD",
"source": "alpha",
"coverage": "mapped",
"canonical": "XAU",
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/gld",
"identity": {
"asset_class": "etf",
"uid": "US78463V1070",
"chain_contract": null,
"exchange_mic": "XNYS",
"needs_review": false
}
},
{
"symbol": "005930",
"name": "Samsung Electronics",
"key": "005930",
"asset_class": "equities",
"category": "kr-equities",
"market": "KRX",
"currency": "KRW",
"source": "alpha",
"coverage": "mapped",
"canonical": null,
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/005930",
"identity": {
"asset_class": "equity",
"uid": "KR7005930003",
"chain_contract": null,
"exchange_mic": "XKRX",
"needs_review": false
}
}
],
"enums": {
"asset_class": [
"crypto",
"equities",
"indices",
"commodities"
],
"asset_category": [
"crypto",
"us-equities",
"indices",
"commodities",
"kr-equities"
],
"asset_source": [
"alpha",
"sellside",
"unbias",
"legacy"
],
"source_platform": [
"x",
"cryptoquant",
"seekingalpha",
"tradingview",
"substack",
"benzinga"
],
"analyst_source": [
"twitter",
"cryptoquant",
"seekingalpha",
"tradingview",
"substack",
"other"
],
"source_type": [
"tweet",
"quicktake",
"research",
"news",
"seekingalpha",
"tradingview",
"substack",
"youtube",
"telegram",
"bluesky"
],
"sentiment_label": [
"bullish",
"bullish_nuance",
"neutral",
"bearish_nuance",
"bearish"
],
"directional_label": [
"bullish",
"bullish_nuance",
"bearish_nuance",
"bearish"
],
"stance": [
"bullish",
"bearish",
"neutral"
],
"bias": [
"bullish",
"bearish",
"balanced"
],
"tier_badge": [
"top1",
"top5",
"top10",
"tracked"
],
"tier_reason": [
"excluded",
"ineligible",
"news_feed",
"company",
"unscored",
"insufficient_calls",
"pool_too_small"
],
"breakdown_window": [
"1d",
"3d",
"7d",
"30d"
],
"views_window": [
"7d",
"30d"
],
"breakdown_lang": [
"en",
"ko",
"zh",
"ja",
"es",
"pt",
"ru",
"hi",
"de",
"fr",
"tr",
"vi",
"id",
"it",
"th",
"pl",
"nl",
"uk"
],
"via": [
"chatgpt",
"claude",
"mcp",
"gemini",
"perplexity",
"api"
],
"plan": [
"free",
"pro",
"premium",
"enterprise"
]
},
"docs_url": "https://consensus.cryptoquant.com/docs/api#assets",
"as_of": "2026-10-06T07:48:29.000Z"
}{
"error": "Invalid window",
"code": "INVALID_PARAMETER",
"message": "window must be one of: 1d, 3d, 7d, 30d",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"param": "window"
}Endpoints
List Assets
The asset registry every asset parameter is resolved against — one row per registered ticker with its aliases, class, category, coverage and page URL, plus every enum.
GET
/
assets
cURL
curl -X GET "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"fetch("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
.then(response => response.json())
.then(data => console.log(data))require('axios')
.get("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
.then(response => console.log(response))require 'net/http'
uri = URI("https://consensus.cryptoquant.com/api/v1/assets?category=commodities")
res = Net::HTTP.get_response(uri)
puts res.bodyimport requests
url = "https://consensus.cryptoquant.com/api/v1/assets?category=commodities"
print(requests.get(url).json())<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://consensus.cryptoquant.com/api/v1/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://consensus.cryptoquant.com/api/v1/assets"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://consensus.cryptoquant.com/api/v1/assets")
.asString();{
"count": 2,
"rows": 3,
"filter": {
"asset_class": null,
"category": null,
"q": null
},
"asset_classes": {
"crypto": "Crypto",
"equities": "Equities",
"indices": "Indices & ETFs",
"commodities": "Commodities"
},
"categories": {
"crypto": "Crypto",
"us-equities": "US Equities",
"indices": "Indices & ETFs",
"commodities": "Commodities",
"kr-equities": "KR Equities"
},
"how_to_resolve": "Pass any of symbol, key, name, an alias or a retired symbol as `asset` on the other endpoints (case-insensitive); the response always reports the canonical symbol. coverage=pending assets have a page but no analyst data yet.",
"assets": [
{
"symbol": "BTC",
"name": "Bitcoin",
"key": "btc",
"asset_class": "crypto",
"category": "crypto",
"market": "Bitfinex",
"currency": "USD",
"source": "alpha",
"coverage": "live",
"canonical": null,
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/btc",
"identity": {
"asset_class": "crypto",
"uid": "bitcoin",
"chain_contract": null,
"exchange_mic": null,
"needs_review": false
}
},
{
"symbol": "GLD",
"name": "Gold",
"key": "gld",
"asset_class": "commodities",
"category": "commodities",
"market": "Commodity",
"currency": "USD",
"source": "alpha",
"coverage": "mapped",
"canonical": "XAU",
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/gld",
"identity": {
"asset_class": "etf",
"uid": "US78463V1070",
"chain_contract": null,
"exchange_mic": "XNYS",
"needs_review": false
}
},
{
"symbol": "005930",
"name": "Samsung Electronics",
"key": "005930",
"asset_class": "equities",
"category": "kr-equities",
"market": "KRX",
"currency": "KRW",
"source": "alpha",
"coverage": "mapped",
"canonical": null,
"aliases": [],
"retired_symbols": [],
"page_url": "https://consensus.cryptoquant.com/consensus/005930",
"identity": {
"asset_class": "equity",
"uid": "KR7005930003",
"chain_contract": null,
"exchange_mic": "XKRX",
"needs_review": false
}
}
],
"enums": {
"asset_class": [
"crypto",
"equities",
"indices",
"commodities"
],
"asset_category": [
"crypto",
"us-equities",
"indices",
"commodities",
"kr-equities"
],
"asset_source": [
"alpha",
"sellside",
"unbias",
"legacy"
],
"source_platform": [
"x",
"cryptoquant",
"seekingalpha",
"tradingview",
"substack",
"benzinga"
],
"analyst_source": [
"twitter",
"cryptoquant",
"seekingalpha",
"tradingview",
"substack",
"other"
],
"source_type": [
"tweet",
"quicktake",
"research",
"news",
"seekingalpha",
"tradingview",
"substack",
"youtube",
"telegram",
"bluesky"
],
"sentiment_label": [
"bullish",
"bullish_nuance",
"neutral",
"bearish_nuance",
"bearish"
],
"directional_label": [
"bullish",
"bullish_nuance",
"bearish_nuance",
"bearish"
],
"stance": [
"bullish",
"bearish",
"neutral"
],
"bias": [
"bullish",
"bearish",
"balanced"
],
"tier_badge": [
"top1",
"top5",
"top10",
"tracked"
],
"tier_reason": [
"excluded",
"ineligible",
"news_feed",
"company",
"unscored",
"insufficient_calls",
"pool_too_small"
],
"breakdown_window": [
"1d",
"3d",
"7d",
"30d"
],
"views_window": [
"7d",
"30d"
],
"breakdown_lang": [
"en",
"ko",
"zh",
"ja",
"es",
"pt",
"ru",
"hi",
"de",
"fr",
"tr",
"vi",
"id",
"it",
"th",
"pl",
"nl",
"uk"
],
"via": [
"chatgpt",
"claude",
"mcp",
"gemini",
"perplexity",
"api"
],
"plan": [
"free",
"pro",
"premium",
"enterprise"
]
},
"docs_url": "https://consensus.cryptoquant.com/docs/api#assets",
"as_of": "2026-10-06T07:48:29.000Z"
}{
"error": "Invalid window",
"code": "INVALID_PARAMETER",
"message": "window must be one of: 1d, 3d, 7d, 30d",
"docs_url": "https://consensus.cryptoquant.com/docs/api#errors",
"param": "window"
}What it returns
The registry everyasset parameter is resolved against: one row per registered ticker with
symbol, key (the /consensus/{key} page), name, aliases, retired_symbols,
asset_class, category, coverage (live / mapped / pending = page but no analyst data
yet) and page_url, plus every enum under enums.
An alias ticker (GLD) points at its canonical asset (XAU) through canonical.
Filters
asset_class, category, q (substring of symbol / name / key). Filters combine with AND.
Access
Public — no API key. Responses are CDN-cached for one hour.Pass any of
symbol, key, name, an alias or a retired symbol as asset on the other
endpoints (case-insensitive); the response always reports the canonical symbol.
coverage=pending assets have a page but no analyst data yet.Query Parameters
Keep only this asset class.
Available options:
crypto, equities, indices, commodities Keep only this selector category (equities split into US / KR).
Available options:
crypto, us-equities, indices, commodities, kr-equities Case-insensitive substring of symbol, name or route key.
Response
The asset registry and the enums
Canonical assets in the response (alias tickers not counted).
Required range:
x >= 0Rows in assets (canonical + alias tickers).
Required range:
x >= 0Show child attributes
Show child attributes
Every closed value set the API uses, listed in full.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
asset_class → label.
Show child attributes
Show child attributes
category → label.
Show child attributes
Show child attributes