Skip to main content
GET
GET /v1/wallet/trades · 1 credit Trade history of a wallet, newest first - multihop-deduplicated (one event per transaction, token and side; never doubled volumes). Paginate with the opaque cursor from meta.nextCursor on both EVM and Solana: exact keyset pagination that never skips or repeats a trade. Routed intermediate legs (the wSOL, stable or quote a route passes through) are excluded by default and flagged isRoutingHop; pass includeRoutingHops=true to include them. Wash/MEV rows are kept and carry the isWash badge (Solana) so consumers choose.
Building a wallet activity feed? Use GET /v1/wallet/swaps: one row per transaction, a routed swap reads as a single swap (what the wallet sent, what it received), with every leg, its venue and its router.
Pagination. Each page is bounded by limit and by a scan window over the wallet’s history: 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, and hasMore: false means the wallet’s history is fully served.
Time window. from and to bound the history in unix milliseconds, both inclusive, and combine with cursor. fromAt (the same lower bound) and beforeAt (strictly older) remain supported; pass one name per bound.
Each trade carries feesNative (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), isRoutingHop (a routed intermediate leg) and isWash (Solana wash/MEV flag; null on EVM). volumeUsd is at the current native price on EVM; on Solana it is valued at the SOL price at the time of the trade and meta.usdBasis reports trade. meta.nextCursor is present while meta.hasMore is true.

Authorizations

Authorization
string
header
required

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

Query Parameters

chain
string
required

Public chain id - evm:<id> or solana.

wallet
string
required

Wallet address (EVM hex, case-insensitive; Solana base58).

cursor
string

Opaque resume token from meta.nextCursor - exact keyset pagination on both EVM and Solana, no skip or duplicate.

limit
integer
default:50
required

1-100. Default 50.

Required range: 1 <= x <= 100
from
integer

Inclusive lower time bound, unix MILLISECONDS. A value in seconds is rejected (400).

Required range: x >= 0
to
integer

Inclusive upper time bound, unix MILLISECONDS. A value in seconds is rejected (400).

Required range: x >= 0
beforeAt
integer

Upper bound, unix MILLISECONDS: trades strictly older. A value in seconds is rejected (400). Prefer cursor for exact pagination.

Required range: x >= 0
fromAt
integer

Inclusive lower time bound (ms).

Required range: x >= 0
includeRoutingHops
boolean
default:false

Also serve the intermediate legs of routed swaps, flagged isRoutingHop. Default false.

Response

200

Standard { data, meta } envelope.