One token contract
Open USDC on its entity page →
One token contract, as it describes itself and as the chain shows it: the
standard its events follow, the symbol, name and decimals it declares,
how many transfer events it has emitted, how many addresses hold it now, and
how many have ever held it.
GET https://tracefast.xyz/api/v1/chains/1/tokens/{token}
| Parameter | In | Type | Notes |
|---|---|---|---|
token | path | string | the token contract, 0x-prefixed, 40 hex characters, any case |
Access — an API key on the Enriched Data plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_token on the MCP server. Stable — see stability.
chains/1 is a literal: the method serves Ethereum mainnet data. Other chain
ids answer 404 chain_not_supported. The method takes no query parameters — an
unknown one is refused rather than ignored.
What it covers, and what it does not
- The standard is observed, not declared.
standardcomes from the events the contract emits:erc20,erc721orerc1155. - Symbol, name and decimals are verbatim. They are what the contract's
symbol(),name()anddecimals()return. Any contract can declare any text, so a familiar symbol is not proof of identity. - A missing value stays missing. A contract that declares no
decimals(most NFTs, some fungible tokens) answers without the field, never with a default of 18. - No price. USD prices are served with the address portfolio, where each price carries its own hour.
- A contract without transfer events is not a token here and answers
404.
Response
200 application/json:
{
"data": {
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"standard": "erc20",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"transferCount": 398022451,
"holderCount": 9096063,
"holderCountAllTime": 42553926
},
"meta": {
"chain": "ethereum",
"timestamp": 1792409967923,
"cached": false,
"docs": "https://docs.tracefast.xyz/api/token"
}
}data
| Field | Meaning |
|---|---|
chainId | 1, Ethereum mainnet |
address | the token contract, lowercase |
standard | erc20, erc721, erc1155, erc777 or erc4626, as observed from its events |
symbol | symbol() as declared, verbatim. Absent when the contract declares none |
name | name() as declared, verbatim. Absent when the contract declares none |
decimals | decimals() as declared. Absent — never 18 — when the contract declares none |
transferCount | all-time number of transfer events |
holderCount | how many addresses hold a positive balance now — the same number as holderCount of token holders. Absent — never 0 — when holders are not covered for this token, which today is every NFT collection |
holderCountAllTime | how many distinct addresses have ever held the token, including those holding nothing now. Absent where it is not available for this token |
The two counts answer different questions: current distribution versus
lifetime reach. For USDC above, about 9 million addresses hold it now out of
42 million that ever did. An NFT collection answers with holderCountAllTime
and without holderCount — its current holders are not covered, which is not
the same as zero. For the current holders and their balances, use
token holders.
Errors
Every error is JSON: { "error": { "code": "...", "message": "...", "details": { … } } }
| Status | code | When | details |
|---|---|---|---|
| 404 | not_found | no token contract with transfer events at this address | — |
| 422 | block_not_available | the contract's first transfer may lie in a coverage gap; the message names the contract ("the token contract 0x…, if its first transfer was recent, …"). Retry later — this is not "does not exist" | reason: coverage_gap, coverageGapFromBlock, coverageGapToBlock, maxAvailableBlock |
Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.
Related pages
- Token holders — who holds the token now
- Transfers of a token — its transfer events, newest first
- Token statistics — the same counts for the whole network
- Tokens & Assets — the token's entity page in the app
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown