Farbeam
Docs / Data

Market data

Four endpoints pass through market context from public aggregators. Farbeam does not compute these numbers. It reads them, cuts them to a useful length and caches them. Each response names its source in meta.source. All cost 1 unit.

EndpointSourceCacheRowsSite page
Chain TVLDefiLlama10 minTop 40 chains by TVLChains
Stablecoin supplyDefiLlama stablecoins10 minTop 25 assets, top 25 chainsStablecoins
DEX volumeDefiLlama15 minTotal, plus top 30 protocolsDEX volume
Trending poolsGeckoTerminal5 min, per chainUp to 20 poolsTrending pools

If the source fails and the cache has expired, the endpoint returns 502 upstream_unavailable with source. Old values are not served.

#Chain TVL

JSON
{
  "rank": 1,
  "name": "Ethereum",
  "tvl_usd": 45955233298,
  "token": "ETH",
  "covered": "ethereum"
}

covered holds the Farbeam chain id when the row maps to one of the seven chains, and null otherwise. rank is the position in this list, sorted by TVL, after removing rows with no TVL. This sample was captured on 2026-11-04 UTC. It is an example.

#Stablecoin supply

The response has two arrays.

ArrayFields
assets[]name, symbol, mechanism, price, circulating_usd, change_7d_pct, change_30d_pct
chains[]name, circulating_usd, covered

Only USD-pegged supply is counted. The change figures compare current supply with the source's values from a week and a month back. They are null when the source has no earlier value.

JSON
{
  "name": "Tether",
  "symbol": "USDT",
  "mechanism": "fiat-backed",
  "price": 0.99905,
  "circulating_usd": 177773802949,
  "change_7d_pct": -2.23,
  "change_30d_pct": -3.32
}

This sample was captured on 2026-11-04 UTC. price here comes from DefiLlama, and it can differ from the CoinGecko value on Asset prices. See the stablecoin monitor recipe.

#DEX volume

FieldMeaning
total_24h_usdSource total across protocols
change_1d_pctSource change against the prior day
protocols[].nameDisplay name
protocols[].volume_24h_usd24 hour volume, rounded
protocols[].change_1d_pct, change_7d_pctSource changes
protocols[].chainsFirst 6 chains listed by the source

These figures come from the source as they are. Farbeam does not filter wash trading, so compare protocols with care.

Pass chain, with solana as the default. The list is GeckoTerminal's trending_pools, first page.

FieldMeaning
namePair name from the source
poolPool address
base_tokenBase token address
price_usdBase token price
liquidity_usdReserve in USD
volume_24h_usd24 hour volume
change_24h_pct24 hour price change
created_atPool creation time

#How these relate to the index

Market endpoints do not read Farbeam's transfer rows, and they have different scopes.

QuestionUse
How large is a chain's on-chain value?/markets/chains
Where does stablecoin supply sit?/markets/stablecoins
Which large transfers of curated tokens happened?/transfers
What moved in value on a DEX?/markets/dexs

Do not divide /transfers/stats by DEX volume to get a share. The first covers qualifying transfers in a short token list, repeats value across hops, and covers 7 days at most. The second is another method altogether.

#Stale answers

If DefiLlama fails, Stablecoin supply and DEX volume answer with the last saved copy, with stale: true and the save time in as_of. See freshness.

#Other market fields

Two more places return prices.

  • Asset prices returns CoinGecko prices and 24 hour change for the eight assets the service uses. Cache 60 s.
  • A token report has a market object built from DexScreener pools: price_usd (median implied price across pools), liquidity_usd, volume_24h_usd, txns_24h, pool_count, outlier_pools_excluded, oldest_pool_at, plus fdv_usd, market_cap_usd and price_change_24h_pct from the deepest pool where the token is the base side. Those last three are null if the token is never the base side. Cache 60 s.

#Try it

curl -s "https://farbeamlabs.com/api/v1/markets/stablecoins" | jq '.data.assets[:3]'
const res = await fetch("https://farbeamlabs.com/api/v1/markets/pools?chain=base");
const { data, meta } = await res.json();
console.log(meta.source, data.slice(0, 3));
import requests

body = requests.get("https://farbeamlabs.com/api/v1/markets/dexs", timeout=30).json()
print(body["data"]["total_24h_usd"], body["data"]["protocols"][0])

Market data is for information only and is not financial advice.