Aurelia

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

NameInTypeDefaultAllowed values
tokensquerystringnoneBatch: Up to 100 <chain>:<address> items, comma-separated, on any chains: solana:So111…,evm:56:0xbb4c…
qquerystringnoneSearch: a token or pool address, a symbol or a name; at most 100 characters. Case and a leading $ are ignored
chainsquerystringevery listed chainComma-separated: evm:56 (BSC), solana, evm:8453 (Base), evm:4663 (Robinhood Chain) or evm:1 (Ethereum)
sortquerystringvolume24hUsd (createdAt with creator)Screener: volume24hUsd, trades24h, feesPaid5mUsd, feesPaid15mUsd, feesPaid30mUsd, feesPaid45mUsd, feesPaid1hUsd, feesPaid6hUsd, feesPaid24hUsd, liquidityUsd, marketCapUsd, fdvUsd, change24h, priceUsd, createdAt
orderquerystringdescScreener: desc, asc. A null value sorts last either way
minLiquidityUsdquerynumberanyScreener: a USD bound, included
maxLiquidityUsdquerynumberanyScreener: a USD bound, included
minVolume24hUsdquerynumberanyScreener: a USD bound, included
minFeesPaid5mUsdquerynumberanyScreener: a USD bound, included
minFeesPaid15mUsdquerynumberanyScreener: a USD bound, included
minFeesPaid30mUsdquerynumberanyScreener: a USD bound, included
minFeesPaid45mUsdquerynumberanyScreener: a USD bound, included
minFeesPaid1hUsdquerynumberanyScreener: a USD bound, included
minFeesPaid6hUsdquerynumberanyScreener: a USD bound, included
minFeesPaid24hUsdquerynumberanyScreener: a USD bound, included
minMarketCapUsdquerynumberanyScreener: a USD bound, included
maxMarketCapUsdquerynumberanyScreener: a USD bound, included
minChange24hquerynumberanyScreener: a bound on the 24 h price change, a fraction (0.5 is +50%)
maxChange24hquerynumberanyScreener: a bound on the 24 h price change, a fraction (0.5 is +50%)
createdAfterqueryintegeranyScreener: a bound on createdAt, unix ms, included
createdBeforequeryintegeranyScreener: a bound on createdAt, unix ms, included
excludeQuotesquerybooleanfalseScreener: true leaves out what pools quote in: the stablecoins Aurelia prices at $1 and the chain's wrapped native token
creatorquerystringnoneScreener: a wallet; its tokens, on the listed chains its address fits
launchpadquerystringallScreener: comma-separated launchpad ids, any of them: pumpfun, fourmeme…
limitqueryinteger20 (search), 50 (screener)Search 1–50, screener 1–100
cursorquerystringfirst pageThe previous page's next, as it came

Response

FieldTypeMeaning
tokens[].chainstringThe token's chain.
tokens[].token{ address, symbol, name, decimals, logo }logo is an absolute URL of the re-hosted WebP, or null.
tokens[].priceUsdnumber | nullAs 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, traders24hnumberThe 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, fdvUsdnumber | nullpriceUsd × circulating supply, and × total supply, with the token page's limits.
tokens[].liquidityUsdnumber | nullThe 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[].chartPoolstring | nullThe pool the price comes from, when the token is its base.
tokens[].createdAtnumber | nullWhen the token was created, unix ms, only when Aurelia saw the creation itself.
tokens[].creator{ address, labels } | nullWho created it, when Aurelia saw the creation, with the creator's labels.
tokens[].launchpad{ id, pool, progress, complete, graduatedAt } | nullFor a launchpad token (pumpfun, fourmeme…): its launch pool, its bonding curve's progress (0 to 1) and whether it completed, and when.
tokens[].flagsstring[] | nullThe security flags of the token's last check. null until it was checked: asking queues a check, and a later request has them.
nextstring | nullCursor for the next page (search and screener). null on the last.
query, tokens[].matchstringSearch: 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, rankedAtnumberSearch: when the names searched, and the volumes that rank them, were last read, unix ms.
total, updatedAtnumberScreener: 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[].peakMarketCapUsdnumber | nullWith 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 is 400, and the error names it. minHolders is 400 too: 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 null in 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 exact match outranks a prefix match 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, except feesPaidUsd, the snapshot's, so a list sorted or filtered by fees reads in order. A null value 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 liquidityUsd is the price pool's alone, where the page sums its listed pools.

Try it in the interactive docsCreate a free account