How to request pricing for a token
DefiLlama prices tens of thousands of tokens. If yours isn't one of them, its balances show up as $0 — in protocol TVL, in market cap, and in anything built on our price API.
This page explains how to get a token priced, what we need from you, and where the limits are.
Step 1 — Check whether we already price it
Before anything else, ask the API:
https://coins.llama.fi/prices/current/<chain>:<address>For example:
https://coins.llama.fi/prices/current/ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48Check your chain slug against coins.llama.fi/chains first. A few aliases resolve (eth works), but an unrecognised slug returns exactly the same empty response as an unpriced token — so a typo looks identical to missing coverage. Confirm the slug before concluding we don't price the token.
Read the response like this:
| Response | What it means |
|---|---|
{"coins":{}} — empty | We have no price for this token. Open a request. |
A price, recent timestamp, confidence at or above 0.9 | We price it. If a DefiLlama page still shows $0, the problem is the adapter reading the balance, not the price — report that instead. |
A price with an old timestamp | The price is stale or frozen. Open a request and say so. |
A price with low confidence | We price it off a weak source. Worth a request if you can point us at a better one. |
| A price that is simply wrong | Open a request. Tell us what the token actually trades at and where. |
Step 2 — Check the token clears the bar
We will price a token when its price can be derived from something public and hard to fake. In practice that means one of:
- A listing on CoinGecko or CoinMarketCap with real reported volume.
- A CEX market with real volume.
- An onchain DEX pool with both meaningful depth and meaningful 24h volume.
- An onchain oracle — Chainlink, Pyth, RedStone, or a protocol's own feed — that updates on a known cadence.
- A NAV or exchange-rate function on the token contract, for vault shares, receipt tokens and tokenized funds:
pricePerShare(),convertToAssets(), or equivalent. - A fixed relationship to a token we already price — a wrapper, a bridged representation, or a genuine 1:1 peg. This is the cheapest case for us: it's a redirect, not a new price source.
What we won't do
- Publish a price you send us. A number from the issuer isn't verifiable, so it isn't a price source. This holds however well-documented the methodology is.
- Price a token off a pool that's too thin to be real. If a single trade can move the price several percent, publishing it means publishing a number an attacker controls — and a token's price feeds the TVL of every protocol holding it. Deep-but-dead pools have the same problem in reverse: no volume means the price we read is whatever the last trade left behind, however long ago that was.
- Price a token that hasn't launched, or one whose market has gone. If the only listing is delisted and the only pool is drained, there is nothing to read.
- Backfill history from a source that has none. Plenty of sources give a current price and nothing else. If you need history, tell us which source serves it.
If a token can't be priced, we leave it unpriced rather than inventing a number. An unpriced token reads as $0, which is visibly wrong; a fabricated price reads as correct and quietly corrupts every metric downstream. We prefer the visible failure.
Step 3 — Open the request
Use the Coin Price Support form:
forms.defillama.com/coin-price
One token per request. The form asks for:
- chain and contract address. It queries the price API as you type, so it answers Step 1 for you and shows what we currently hold for the token.
- what's wrong — no price at all, a wrong one, a stale one, or a current price with no history.
- where it's visible on DefiLlama, and how much value it affects. This is how requests are prioritised.
- the price source, and the evidence for it — pool link with TVL and 24h volume, oracle address plus the function to call, NAV function plus its units, whatever applies.
- other addresses the same source covers (optional) — bridged legs and other chains, one
chain:addressper line, each checked against the API as you add it. - notes (optional) — prior issues or PRs, redemption or peg mechanics, anything unusual about the contract.
The evidence is what decides whether the request can be actioned. "Please price token X" with no source is a request to do your research for you, and it will sit unanswered. A pool link with volume numbers, or an oracle address with a function name, can be handled quickly.
Two things worth getting right, because they cause most of the bad outcomes we see:
- Multichain deployments. Use the extra-addresses field rather than filing one request per chain. A token priced on Ethereum and unpriced on its five bridged legs is still mostly unpriced, and it's usually one redirect each to fix.
- Unusual decimals. We read decimals from the contract, but say so in the notes if yours are non-standard. A token declaring 6 decimals that we read as 18 produces a market cap wrong by a factor of a trillion.
What happens next
Requests are triaged in the order they can be actioned, weighted by how much value is affected. A request naming a Chainlink feed is often same-week; one that needs a new DEX adapter written and backfilled takes longer.
Possible outcomes:
- Priced. We add a redirect, a mapping entry, or an adapter, and the price appears once the next run completes.
- Priced, no history. We can serve the current price but not the past, because the source doesn't have it. We'll say so.
- Declined. The token doesn't clear the bar in Step 2. We'll say which part and what would change the answer — usually a real market.
- Reclassified. The price was fine and the actual fault was elsewhere: an adapter not reading balances, a wrong decimals value, a chain we don't index.
Faster: write the adapter yourself
Pricing logic lives in coins/src/adapters in the server repo, and the adapter guide there covers the schema, the confidence convention, and how to test a write locally before opening a PR.
A working PR is the fastest route to a priced token, and by a wide margin. You know your contract better than we do. Submit the request form as well, so the PR has context attached to it.
