Skip to main content

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 valuation

MaxSupply 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.

FieldTypeMeaning
CirculatingSupplyFloatAn 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.
TotalSupplyFloatThe total issued supply, taken from on-chain total supply. Can exceed circulating when a large portion is not treated as circulating.
MaxSupplyFloatThe 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.
MarketCapFloatUSD market capitalisation: CirculatingSupply x Estimate when circulating supply is known, otherwise equal to FullyDilutedValuationUsd.
FullyDilutedValuationUsdFloatTotalSupply 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 Currencies row. It is not computed per row.
  • On a Pairs row, MarketCap and FullyDilutedValuationUsd are copied down verbatim. They are not derived from the row's own Price.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 MarketCap across rows double-counts. A sum(of: Supply_MarketCap) across a currency's rows multiplies it by the row count. Take maximum: or read one row instead.
  • Stablecoins carry Supply.MarketCap 0 at currency level. They also carry no liquidity there.
  • Small differences between rows are not a data error. The reference figure refreshes in steps.
  • Duplicate Tokens rows can carry Supply of all 0. Trading.Tokens can return a second row for the same token and bar with an empty Token.Symbol and every Supply field 0, 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
}
}
}
}

  • TotalSupply is the wrapped supply on that row's chain, not 19.9 M BTC.
  • MarketCap is the currency-level valuation, the same on every BTC representation.
Build with Bitquery

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.