Token lists API
GET/tokens
One list of tokens for every purpose, one row shape in every mode: up to 100 tokens by address (tokens=), a search by address, symbol or name (q=), or a screener over chains with range filters and sorts, a launchpad's tokens, or a creator's (creator=, dev history).
Token lists find tokens: by address, a search, a screener, a launchpad's or a creator's. A token's page gathers its metadata, price, stats, market cap, holders summary, creator and security checks; its pools and each pool's details are one call away.
Parameters
| Name | In | Type | Default | Allowed values |
|---|---|---|---|---|
tokens | query | string | none | Batch: Up to 100 <chain>:<address> items, comma-separated, on any chains: solana:So111…,evm:56:0xbb4c… |
q | query | string | none | Search: a token or pool address, a symbol or a name; at most 100 characters. Case and a leading $ are ignored |
chains | query | string | every listed chain | Comma-separated: evm:56 (BSC), solana, evm:8453 (Base), evm:4663 (Robinhood Chain) or evm:1 (Ethereum) |
sort | query | string | volume24hUsd (createdAt with creator) | Screener: volume24hUsd, trades24h, feesPaid5mUsd, feesPaid15mUsd, feesPaid30mUsd, feesPaid45mUsd, feesPaid1hUsd, feesPaid6hUsd, feesPaid24hUsd, liquidityUsd, marketCapUsd, fdvUsd, change24h, priceUsd, createdAt |
order | query | string | desc | Screener: desc, asc. A null value sorts last either way |
minLiquidityUsd | query | number | any | Screener: a USD bound, included |
maxLiquidityUsd | query | number | any | Screener: a USD bound, included |
minVolume24hUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid5mUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid15mUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid30mUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid45mUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid1hUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid6hUsd | query | number | any | Screener: a USD bound, included |
minFeesPaid24hUsd | query | number | any | Screener: a USD bound, included |
minMarketCapUsd | query | number | any | Screener: a USD bound, included |
maxMarketCapUsd | query | number | any | Screener: a USD bound, included |
minChange24h | query | number | any | Screener: a bound on the 24 h price change, a fraction (0.5 is +50%) |
maxChange24h | query | number | any | Screener: a bound on the 24 h price change, a fraction (0.5 is +50%) |
createdAfter | query | integer | any | Screener: a bound on createdAt, unix ms, included |
createdBefore | query | integer | any | Screener: a bound on createdAt, unix ms, included |
excludeQuotes | query | boolean | false | Screener: true leaves out what pools quote in: the stablecoins Aurelia prices at $1 and the chain's wrapped native token |
creator | query | string | none | Screener: a wallet; its tokens, on the listed chains its address fits |
launchpad | query | string | all | Screener: comma-separated launchpad ids, any of them: pumpfun, fourmeme… |
limit | query | integer | 20 (search), 50 (screener) | Search 1–50, screener 1–100 |
cursor | query | string | first page | The previous page's next, as it came |
Response
| Field | Type | Meaning |
|---|---|---|
tokens[].chain | string | The token's chain. |
tokens[].token | { address, symbol, name, decimals, logo } | logo is an absolute URL of the re-hosted WebP, or null. |
tokens[].priceUsd | number | null | As GET /prices gives it. |
tokens[].change | { 5m, 1h, 6h, 24h } | Price change as a fraction, as the token page's priceChange. Each is null without a priced trade that long ago; all are null for a token priced as the quote. |
tokens[].volume24hUsd, trades24h, buys24h, sells24h, traders24h | number | The token's swaps as the base over 24 h, as the token page's windows["24h"]. traders24h is approximate. |
tokens[].feesPaidUsd | { 5m, 15m, 30m, 45m, 1h, 6h, 24h } | The transaction fees traders paid on the token's swaps as the base over each window, as the token page's windows[w].feesPaidUsd. Each is null while Aurelia's fee records start inside that window. |
tokens[].marketCapUsd, fdvUsd | number | null | priceUsd × circulating supply, and × total supply, with the token page's limits. |
tokens[].liquidityUsd | number | null | The real balances, in USD, of the pool the price comes from. null where that pool's reserves are virtual (concentrated liquidity and bins on BSC) or a price is missing. |
tokens[].chartPool | string | null | The pool the price comes from, when the token is its base. |
tokens[].createdAt | number | null | When the token was created, unix ms, only when Aurelia saw the creation itself. |
tokens[].creator | { address, labels } | null | Who created it, when Aurelia saw the creation, with the creator's labels. |
tokens[].launchpad | { id, pool, progress, complete, graduatedAt } | null | For a launchpad token (pumpfun, fourmeme…): its launch pool, its bonding curve's progress (0 to 1) and whether it completed, and when. |
tokens[].flags | string[] | null | The security flags of the token's last check. null until it was checked: asking queues a check, and a later request has them. |
next | string | null | Cursor for the next page (search and screener). null on the last. |
query, tokens[].match | string | Search: q as asked, and how each token matched: address (the token's own), pool (a pool's), exact (its symbol or name is the query), prefix (its symbol, or a word of its name, starts with it), contains (its symbol or name contains a query of 3+ characters). |
indexedAt, rankedAt | number | Search: when the names searched, and the volumes that rank them, were last read, unix ms. |
total, updatedAt | number | Screener: how many tokens match the filters, and when the oldest snapshot used was built, unix ms. |
creator | { address, labels, tokensCreated, graduated } | With creator: the wallet, its labels, and how many tokens Aurelia saw it create and how many graduated. |
tokens[].peakMarketCapUsd | number | null | With creator: the highest daily candle high where the token was the base, × its circulating supply now. Null above $2T, or above $100M while the token's price pool holds under $1k (as for marketCapUsd). |
Example
Captured 2026-09-28 18:03 UTC on a test instance, trimmed to 2 tokens.
curl -s -H 'Authorization: Bearer <key>' 'https://app.aurelia.build/api/tokens?chains=evm:56&minLiquidityUsd=1000&sort=volume24hUsd&limit=2'
{
"tokens": [
{
"chain": "evm:56",
"token": {
"address": "0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777",
"symbol": "TAX",
"name": "Tax Token",
"decimals": 18,
"logo": null
},
"priceUsd": 0.006,
"change": {
"5m": 0,
"1h": -0.019999999999999907,
"6h": 0,
"24h": null
},
"volume24hUsd": 1758,
"trades24h": 105,
"buys24h": 72,
"sells24h": 33,
"traders24h": 8,
"marketCapUsd": 6000000,
"fdvUsd": 6000000,
"liquidityUsd": 4204200,
"chartPool": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"createdAt": 1790546861920,
"creator": {
"address": "0x0f325bd174c70440fa62c31dce9f69d54baf717e",
"labels": [
"creator"
]
},
"launchpad": {
"id": "fourmeme",
"pool": "0xf39f85a07237050d069187679c621b9df1df8585b01d625ae22bc7cb99430013",
"progress": 1,
"complete": true,
"graduatedAt": 1790549261920
},
"flags": [
"buy_tax",
"sell_tax"
]
}
],
"next": null,
"total": 1,
"updatedAt": 1790618550079
}
Notes
- The mode is set by the parameters:
tokens=is the batch,q=a search, anything else the screener. A parameter of another mode, an unknown one or a repeated one is400, and the error names it.minHoldersis400too: holder counts are not known for many tokens at once (token holders answers them one token at a time). - Batch: items in request order, an unknown token
nullin its place (<chain>:<address>, split on the last colon:evm:56:0xbb4c…). No paging. - Search: an address is looked up first, on the chains it can belong to: a token with that address, then a pool, which stands for the token it trades against a stablecoin or the wrapped native token. Symbol and name matches follow, by kind and by activity: an
exactmatch outranks aprefixmatch unless that one trades about 100 times as much, so the token that trades comes before the dozens that copy its symbol. Names and volumes are held in memory and read again every minute (in full every 5 minutes). A search pages through its 200 best matches. - Screener: the candidates are every token with a USD price from a trade in the last 24 hours, and the launches of the last 24 hours without one yet; with
creator, every token the wallet created. Filters and order apply to a snapshot rebuilt every 30 s, the rows are current: a value may have moved past a bound since, exceptfeesPaidUsd, the snapshot's, so a list sorted or filtered by fees reads in order. Anullvalue never matches a range. A page is kept 10 s. - Every row is the same whatever the mode: a token has the same price, stats and flags here as in a batch or on its page, with two differences from the page: a token that is never the base (USDC) is priced here as the quote, where the page gives no price; and
liquidityUsdis the price pool's alone, where the page sums its listed pools.