Supply fields reference
What it is
The Supply object appears on the Tokens, Currencies and Pairs cubes with the same field names. Its values describe the underlying asset (the currency), not a specific pool or pair.
It answers "how many of this asset exist, and what is it worth in total". On Tokens and Pairs the row's price and volume are chain- or pair-specific, but Supply is still the currency-level figure. On Currencies everything is currency-level.
How to get it
Select Supply { CirculatingSupply TotalSupply MaxSupply MarketCap FullyDilutedValuationUsd } on any of the three cubes. One row is enough: the figure is the same on every row of the asset.
For prices and volumes, see the Price Index Algorithm.
How it is derived
Both valuations multiply a supply figure by Price.Average.Estimate, the currency-level USD price on that row:
FullyDilutedValuationUsd = TotalSupply x Price.Average.Estimate
MarketCap = CirculatingSupply x Price.Average.Estimate (when CirculatingSupply is known)
MarketCap = FullyDilutedValuationUsd (when it is not)
Supply figures come from reference data: CirculatingSupply and MaxSupply from CryptoRank, TotalSupply from on-chain total supply. The reference figure refreshes in steps, so rows a few seconds apart can carry slightly different values.
MaxSupply is not used in either valuationMaxSupply is reference data only. It is not the multiplier for FDV, and it is 0 for the large majority of currencies, which is why it cannot be.
Fields
Amounts are human-readable token units (not raw integer amounts with decimals applied on-chain), unless your client or tooling documents otherwise.
| Field | Type | Meaning |
|---|---|---|
CirculatingSupply | Float | An estimate of the tokens available to the market (public float), from CryptoRank. May be null when no reliable figure exists. Covered for assets that trade on CEXs; often missing for meme tokens and thinly covered assets. |
TotalSupply | Float | The total issued supply, taken from on-chain total supply. Can exceed circulating when a large portion is not treated as circulating. |
MaxSupply | Float | The maximum supply cap. Typically 0 for assets without a fixed cap or when CryptoRank has no figure; missing for the same asset classes as CirculatingSupply. |
MarketCap | Float | USD market capitalisation: CirculatingSupply x Estimate when circulating supply is known, otherwise equal to FullyDilutedValuationUsd. |
FullyDilutedValuationUsd | Float | TotalSupply x Estimate. When circulating supply is unknown it carries the same value as MarketCap. |
Pitfalls
- Supply is one currency-level figure, repeated on every row. It is byte-identical on every token representation of the currency, on every pool of that token, and on the
Currenciesrow. It is not computed per row. - On a
Pairsrow,MarketCapandFullyDilutedValuationUsdare copied down verbatim. They are not derived from the row's ownPrice.Ohlc.Close, so a pool trading away from the blended price still reports the same market cap as every other pool of that token. - On
Currencies, the figure is neither summed across chains nor taken from a top-ranked chain. It is the same single number. - Summing
MarketCapacross rows double-counts. Asum(of: Supply_MarketCap)across a currency's rows multiplies it by the row count. Takemaximum:or read one row instead. - Stablecoins carry
Supply.MarketCap0at currency level. They also carry no liquidity there. - Small differences between rows are not a data error. The reference figure refreshes in steps.
- Duplicate
Tokensrows can carrySupplyof all0.Trading.Tokenscan return a second row for the same token and bar with an emptyToken.Symboland everySupplyfield0, a metadata-arrival split on freshly launched tokens. Filter those out before valuing anything. See identity fields.
Bitcoin (bid:bitcoin) and on-chain supply
For Bitcoin, Supply on Tokens rows describes the on-chain supply of wrapped and bridged BTC (for example WBTC on Ethereum), not native Bitcoin UTXO supply. Native BTC does not exist as a token contract on EVM and similar chains, so any TotalSupply-style figure here is tied to those on-chain representations.
That is why you do not see ~21 million in TotalSupply for a Bitcoin query. 21M is the network-level cap for Bitcoin itself; Supply here reflects how much wrapped BTC is tracked on the chains backing that row.
{Trading {
Tokens(
where: {
Currency: { Id: { is: "bid:bitcoin" } }
Interval: { Time: { Duration: { eq: 1 } } }
}
limit: { count: 1 }
orderBy: { descending: Block_Time }
) {
Token {
Address
Id
IsNative
Name
Network
Symbol
TokenId
}
Block {
Date
Time
Timestamp
}
Interval {
Time {
Start
Duration
End
}
}
Volume {
Base
Quote
Usd
}
Price {
IsQuotedInUsd
Ohlc {
Close
High
Low
Open
}
Average {
ExponentialMoving
Mean
SimpleMoving
WeightedSimpleMoving
}
}
Supply {
TotalSupply
MarketCap
FullyDilutedValuationUsd
}
}
}
}
TotalSupplyis the wrapped supply on that row's chain, not 19.9 M BTC.MarketCapis the currency-level valuation, the same on every BTC representation.
Related
Ready to run this in production?
Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.