Chains API

Chain explorer statistic over time

One chosen chain-level explorer statistic (block size/time, gas, tx count, ENS registrations, ETH price and market cap, node count, chain size...) as a daily time series over a date range.

GET/api/external/chain-analysis/chain-vitals-history/{chain}

What it returns

One daily time series, selected by metric. Every point is {date, value, extra}: value is that metric's own headline figure for the day, ALWAYS a string (several metrics carry figures — wei gas prices, byte counts — that exceed what a JSON number holds exactly, and this resource keeps one consistent contract across every metric rather than silently varying by which one was requested); extra carries metric-specific secondary fields (e.g. the day's min/max gas price alongside its average) and is null for metrics that have none. null values are never invented: a day nothing was reported for is simply absent from points, except nodeCount, whose single documented zero-as-gap day is remapped from a real "0" to null in place — see the nodeCount metric description. Several metrics (avgHashRate, avgNetDifficulty, uncleBlocks, and the standalone blockRewardsEth action) read a REAL, structural zero for every day on or after the Ethereum Merge (2022-09-15): that is the honest answer for a concept that stopped applying, not a broken response.

Chains

  • BNB Chain BNB
  • Ethereum ETH
  • Stable STABLE
  • Base BASE
  • Robinhood Chain RHC

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/chain-analysis/chain-vitals-history/BNB?metric=chainSizeBytes&from=<from>&to=<to>"
Parameters
ParameterDescription
metric

query · string · required

Which daily statistic to return. chainSizeBytes: Full blockchain size in BYTES for the requested clientType/syncMode. Historical only — the underlying dataset lags real time by roughly a year; a recent range answers a real, empty []. avgBlockSizeBytes: Average block size that day, in BYTES. avgBlockTimeSeconds: Average time to mine a block that day, in SECONDS. avgGasLimit: Average per-block gas limit that day, in gas units (not wei). avgGasPriceWei: Average gas price that day, in WEI. extra.minGasPriceWei/extra.maxGasPriceWei carry that day's range (extra is null on RHC, where value can also carry a fractional part, e.g. "60946933.53121706"). avgHashRate: Average network hash rate that day. Ethereum only. Structural "0.0000" for every day on/after 2022-09-15 (the Merge) — Ethereum stopped mining that day. avgNetDifficulty: Average proof-of-work mining difficulty that day. Ethereum only. Structural "0.000" for every day on/after 2022-09-15, for the same reason as avgHashRate. blockCount: Number of blocks produced that day. extra.blockRewardsEth (null on RHC) carries that day's total reward/tip revenue to block proposers, in ETH — remains real and nonzero after the Merge (it is priority-fee tip revenue now, not the old PoW subsidy). Do not confuse this with the separate blockRewardsEth METRIC below, which is computed differently and which reads a flat zero for the same days. blockRewardsEth: Total block-reward ETH attributed to MINERS that day, via a legacy PoW-era calculation. Reads a flat "0" for every day on/after the 2022-09-15 Merge (confirmed live, including on non-Ethereum chains, where it also reads 0 rather than being rejected) — real, nonzero values only appear for pre-Merge Ethereum dates. ensRegistrations: Count of ENS name registrations that day. Ethereum only. gasUsed: Total gas consumed by transactions that day, in gas units (not wei). netUtilizationPercent: Average gas used ÷ gas limit that day, as a FRACTION from 0 to 1 — e.g. "0.8464" means 84.64% full, not 0.8464%. newAddressCount: Count of addresses that sent or received their first-ever transaction that day. txCount: Total transaction count that day. txFeeEth: Total transaction fees paid that day, in the chain's own native gas asset (ETH on Ethereum). uncleBlocks: Count of uncle (stale) blocks that day. extra.uncleBlockRewardsEth carries that day's uncle-inclusion reward total, in ETH. Ethereum only. Structural zero for every day on/after the 2022-09-15 Merge — proof-of-stake has no uncles. ethPriceUsd: Historical ETH/USD closing price for that day. Ethereum only. nodeCount: Count of discoverable Ethereum nodes that day. Ethereum only. A day the crawler missed is published as null here, never the literal "0" that was measured once on a real day, sandwiched between two normal ~11-12k readings — see this capability's own file docstring. ethMarketCapUsd: ETH market capitalisation in USD at that day's close: the closing price times the circulating supply. Ethereum only. The last 30 complete days only — an older day, and today, are absent from points rather than guessed.chainSizeBytesavgBlockSizeBytesavgBlockTimeSecondsavgGasLimitavgGasPriceWeiavgHashRateavgNetDifficultyblockCountblockRewardsEthensRegistrationsgasUsednetUtilizationPercentnewAddressCounttxCounttxFeeEthuncleBlocksethPriceUsdnodeCountethMarketCapUsd
from

query · string · required

Start date, inclusive, yyyy-MM-dd.
to

query · string · required

End date, inclusive, yyyy-MM-dd.
sort

query · string · optional

Order of points by date. Defaults to ascending when omitted.ascdesc
clientType

query · string · optional

Only read for metric=chainSizeBytes; ignored otherwise. Which node client's size to report.gethparity
syncMode

query · string · optional

Only read for metric=chainSizeBytes; ignored otherwise. default (a pruned full node) and archive differ by roughly 10x in the observed size — this is NOT a rounding choice, pick the one that matches what you mean by "chain size".defaultarchive
chain

path · string · required

Which chains answer depends on the chosen metric — see the metric querystring parameter's own description. Ethereum, BNB, Base and Stable serve every metric that is not Ethereum-only; RHC serves avgBlockSizeBytes, avgGasLimit, avgGasPriceWei, blockCount, netUtilizationPercent, txCount, txFeeEth, complete days only, from 2026-04-30 (its first day with blocks), and never a day still being counted; Solana and ARC return 400 on every metric. CELO, ARB, OP and SCROLL return 400 here.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Chain explorer statistic over time
FieldType
metricstring
unitstring
pointsobject[]
points[].datestring
points[].valuestring | null
points[].extraobject | null

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key