Market: Call Books, Mindshare and Trending Contracts
Whole-market views. None takes an asset.
| Endpoint | Answers | Unit |
|---|---|---|
| Call books, crypto and equity | Which way is the crowd leaning, hour by hour, and is that unusual? | Shares and percentiles, per hour |
| Mindshare, crypto and equity | Which assets get the most attention, and which is heating up? | Share of attention, ranked |
| Trending contracts, crypto | Which contract addresses are pasted most? | Posts, ranked |
Every source is always counted together. For one asset's long/short count, read Positioning.
Call Books
GET /v3/market/crypto/call-book and GET /v3/market/equity/call-book: one
bar per hour, newest first, plus a live tick for the current hour. A call book
adds up the open call episodes across the
market.
{
"bars": [
{
"barAt": 1790931300,
"live": true,
"longShare": 97.30953230878215,
"shortShare": 2.6904676912178473,
"crowdingPercentile": 99.4047619047619,
"accountCount": 9778,
"pulse24": 36.6047764468276,
"pulse24LongShare": 92.94117647058823,
"pulse6": 39.684791915907724,
"pulse6LongShare": 95,
"formulaVersion": "sentiment.v4",
"computedAt": 1790931329
},
{
"barAt": 1790928000,
"live": false,
"longShare": 97.31062760056167,
"shortShare": 2.6893723994383265,
"crowdingPercentile": 99.70238095238095,
"accountCount": 9782,
"pulse24": 37.26435276213999,
"pulse24LongShare": 92.73927392739274,
"pulse6": 43.41717079466551,
"pulse6LongShare": 94.4954128440367,
"formulaVersion": "sentiment.v4",
"computedAt": 1790928040
}
],
"nextCursor": "qFF5HKVt.MjAyNi0xMC0wMiAwODowMDowMCswMA",
"hasMore": true,
"servedFrom": 1790845105
}
GET /v3/market/crypto/call-book?from=1790845105&limit=2: the live tick, then
the last closed hour.
Crowding: the positions already open.
| Field | Meaning |
|---|---|
longShare, shortShare | 0 to 100. Of the accounts holding a position, the share long and short |
crowdingPercentile | 0 to 100. Where longShare sits among this book's hours of the last 28 days. 50 is typical |
accountCount | How many accounts longShare counts |
Pulse: the new calls.
| Field | Meaning |
|---|---|
pulse24 | 0 to 100. How unusual the last 24 hours' new calls are, against this book's history. 50 is typical; above, more long than usual; below, more short |
pulse24LongShare | 0 to 100. Of the accounts behind those new calls, the share long. Null when none opened |
pulse6, pulse6LongShare | The same over six hours |
The row.
| Field | Meaning |
|---|---|
barAt | The hour the bar is read at. On the live tick, the tick's time |
live | true on the live tick. See below |
formulaVersion | The calculation behind the row. Do not compare rows across versions |
computedAt | When the row was last written |
Percentiles and pulse are null until the book has enough history, and pulse also when too few calls usually open in its window.
Read the lean through crowdingPercentile, not longShare. The accounts
we follow lean long almost always. Above, crypto at 97.3% long sits at the
99th percentile of its month, an unusual hour. Equities at the same moment were
95.5% long, but only at the 17th percentile.
- Each account counts once, voting with the majority of its positions. An evenly split account is not counted.
- Crowding leaves out
scalppositions; pulse counts every horizon. On crypto, both leave out stablecoins. accountCountmoves when positions open, close or expire, solongSharecan shift with who entered or left, not only with minds changing.
Live Tick
The newest row, rewritten every five minutes: where the current hour would
close now. It is first with order=desc, last with order=asc, and missing
for about five minutes after each hour closes. Check live.
To store a book, key closed bars on barAt and overwrite one when you read a
later computedAt. Keep the live tick apart and replace it on every read.
| Parameter | Values | Default | Notes |
|---|---|---|---|
from | Unix seconds | required | Against barAt |
to | Unix seconds | now | |
order | desc, asc | desc | |
limit | 1 to 200 | 50 | One bar per hour: 168 is a week |
cursor |
Mindshare
GET /v3/market/crypto/mindshare and GET /v3/market/equity/mindshare:
assets ranked by their share of their market's attention over a period, with
hot on those heating up. Only assets we can name: addresses nobody has
catalogued are in trending contracts.
{
"assets": [
{
"rank": 1,
"id": "b23e0b47-deec-4161-b49c-7e2652f07fe6",
"symbol": "BTC",
"name": "Bitcoin",
"share": 19.702310479753802,
"changePct": -5.355310893706889,
"hot": false,
"share1h": 14.210998158079724,
"share4h": 19.702310479753802,
"ratio1h4h": 0.7212858701360442,
"capped1h": 40
},
{
"rank": 2,
"id": "0fdfbd36-2ec0-4e72-a074-50c6df7e3e20",
"symbol": "ETH",
"name": "Ethereum",
"share": 11.886242309702883,
"changePct": 22.890781368498935,
"hot": false,
"share1h": 9.290341933441072,
"share4h": 11.886242309702883,
"ratio1h4h": 0.7816046225018696,
"capped1h": 26
}
],
"nextCursor": "jRAYCWaw.2:1790934948",
"hasMore": true
}
GET /v3/market/crypto/mindshare?limit=2: the default four hours, now.
| Field | Meaning |
|---|---|
rank | By share, continuing across pages. Can skip a number where an asset could not be named |
id, symbol, name | The asset's family. Pass id to entityIds |
share | 0 to 100. Its share of the market's mentions in the period, each weighted by who posted it |
changePct | Change of share against the previous period, as a percent of itself. Null when it had none |
hot | Heating up in the last hour. See below. null with period=1h |
share1h, share4h | Share of the last hour and of the last four, whatever the period |
ratio1h4h | share1h / share4h. Above 1, the last hour runs ahead. Null when either is 0 |
capped1h | Last hour's mentions, one per account per five minutes |
Hot
An asset is hot when all hold, at to:
ratio1h4h ≥ 1.25 the last hour runs well ahead of the last four
capped1h ≥ 3 on more than one or two mentions
not a stablecoin
top 25 by share
At most eight carry it, the highest ratio1h4h first, the same on every page.
For your own threshold, read ratio1h4h and capped1h.
| Parameter | Values | Default | Notes |
|---|---|---|---|
period | 1h, 4h, 24h, 7d | 4h | The stretch share covers, ending at to |
to | Unix seconds | now | Read at the last whole five minutes. Within your history |
limit | 1 to 200 | 50 | |
cursor | Later pages read the same moment as page one |
No from and no order. A cursor older than your history is a 400,
Invalid cursor.: start again.
Trending Contracts
GET /v3/market/crypto/trending-contracts: EVM and Solana contract addresses ranked by how many posts pasted them, named
where we know the deployment. The ones worth watching are often the unnamed.
{
"contracts": [
{
"rank": 1,
"contractAddress": "oreoU2P8bN6jkk3jbaiVxYnG1dCXcYxwhwyK9jSybcp",
"mentionCount": 113,
"asset": {
"id": "87fa7009-dc18-44c6-a4f7-58e228f846c0",
"symbol": "ORE",
"name": "ORE",
"chains": ["solana"]
}
},
{
"rank": 2,
"contractAddress": "0xdee52f2ab639b6942b0d0f0565400b93b7a0fbe5",
"mentionCount": 103,
"asset": {
"id": "00b9115f-e338-40c4-9d26-95725bc0b18d",
"symbol": "HARMONIC",
"name": "Harmonic Agent",
"chains": ["robinhood"]
}
},
{
"rank": 3,
"contractAddress": "4MMQY9bwkxxTtsK3W227Q5ABT6yFY8Pmn9Ze7wmAXKY8",
"mentionCount": 77,
"asset": null
}
],
"nextCursor": "C12Onp55.4:1790931518",
"hasMore": true,
"servedFrom": 1790845105
}
GET /v3/market/crypto/trending-contracts?from=1790845105&limit=4, trimmed to
three rows.
| Field | Meaning |
|---|---|
rank | By mentionCount. Ties by address |
contractAddress | EVM in lower case, counted once in any case. Solana as posted |
mentionCount | Posts, not accounts: one account posting it ten times counts ten |
asset | id, symbol, name and chains (CoinGecko's chain names). Null when we know no deployment |
An address several tokens share is named for the one on its home chain:
Solana for a base58 address, then Ethereum, Base, Arbitrum, BNB Chain,
Optimism, Polygon and Avalanche for a 0x one. So wrapped SOL is Solana. When
the home chains do not pick one, asset is null.
| Parameter | Values | Default | Notes |
|---|---|---|---|
from | Unix seconds | required | Over 30 days is cut to the 30 before to, and servedFrom says so |
to | Unix seconds | now | |
minMentions | 1 or more | 5 | Leaves out addresses pasted fewer times |
limit | 1 to 200 | 50 | |
cursor | Later pages rank the same posts as page one |
No order and no source filter. Nothing above minMentions is a 200 with
an empty list: lower it or move from back.