Skip to main content
GET
GET /v1/token/trades · 1 credit POST /v1/token/trades · 1 credit Real-time trade tape. maker is the trader behind the swap: when a wallet trades through a relay, a solver or a smart account, the row is attributed to that wallet, otherwise to the transaction sender. Every row carries isProTrader/isSniper badges, and isWash on Solana. On Base, preconfirmed (flashblocks) trades appear ~2.5s before block commit, flagged per row. Token-wide by default - pass pools= to restrict. Use the POST twin for the makers[] filter (up to 2000 addresses, beyond the URL length cap).
One row per swap event. On EVM a swap routed through several pools of the token yields one row per pool, all sharing txHash (id is txHash:logIndex): group by txHash for a per-transaction view. On Solana the legs of a transaction are aggregated into one row per transaction and side (id is signature:b or signature:s). Every row names its market in poolAddress: the pool of the swap event on EVM, the pool carrying the largest leg of the side on Solana.
Pagination. Each page is bounded by limit and by a scan window over the tape: a page can hold fewer than limit rows while meta.hasMore is true. Keep passing meta.nextCursor until hasMore is false; cursors never skip or repeat a trade, whatever the page size, and hasMore: false means the requested history is fully served. fromAt and toAt are unix milliseconds; a value in seconds is rejected with 400.
An unknown token returns 404. The EVM native coin (0x0000…0000) has no market of its own, so no tape: it returns 400 INVALID_PARAM (its markets are listed by /v1/token/pools). meta.usdBasis states how each volumeUsd and priceUsd was priced: spot on EVM, trade (the rate at the moment of the trade) on Solana.
quoteToken is the token the trade was priced against: the quote of the pool in poolAddress (native, wrapped native, a stablecoin or another token), with its address, symbol, name and decimals. amountQuote is in units of that token. priceUsd is the token’s USD price at the trade’s priceNative.
Amounts are GROSS on-chain (the exact swapped value). feesNative is the total fee paid by the trader for the transaction (gas and priority fee, plus the validator tip on Solana) in the chain’s native unit, null when it is not available for that row (a Base preconfirmed trade, for example, has no final fee before block commit). isWash is a boolean on Solana. On Base, the forming candle can include preconfirmed (flashblocks) swaps ahead of block commit; dedup by id or txHash.

Authorizations

Authorization
string
header
required

Your raw API key (not needed on the demo server).

Query Parameters

chain
string
required

Public chain id.

address
string
required

Token address.

pools
string

Optional CSV of pool addresses (≤50) to restrict the tape; default token-wide (every pool of the token).

tradeType
Available options:
buy
usdMin
number
Required range: x >= 0
usdMax
number
Required range: x >= 0
nativeMin
number
Required range: x >= 0
nativeMax
number
Required range: x >= 0
tokenAmountMin
number
Required range: x >= 0
tokenAmountMax
number
Required range: x >= 0
fromAt
integer

Unix MILLISECONDS, inclusive lower bound. A value in seconds is rejected (400).

Required range: x >= 0
toAt
integer

Unix MILLISECONDS, inclusive upper bound (at most 7 days ahead). A value in seconds is rejected (400).

Required range: x >= 0
cursor
string

Opaque - from meta.nextCursor.

sort
default:desc
Available options:
asc
washFilter

washOnly or organicOnly - filter by the per-transaction wash badge (solana; every row carries isWash).

Available options:
washOnly
limit
integer
default:100

1-500, default 100.

Required range: 1 <= x <= 500
include
string

Opt-ins: traderTxCounts.

Response

200

Standard { data, meta } envelope.