Skip to main content
GET
Get enriched token trades
WebSocket Stream Parity: This endpoint returns the exact same schema as the Multi-Event WebSocket Stream swap-enriched event. Use it to backfill historical trades so that your UI renders identically whether the data came from the live stream or from this REST endpoint.

Query Details

Query enriched trades by pool/pair address (same access pattern as Get Token Trades, but with the enriched WebSocket schema).

Response Overview

The response data[] array contains trades in the swap-enriched stream format — the same schema produced by the WebSocket multi-event stream. All field names are camelCase.

Core Trade Fields

Balance Fields

Fee Fields

Derived View Fields

These fields are computed using the same deriveSwapView() logic as the WebSocket stream:

Enrichment Data

Position (PnL)

When available, the position object contains the swap recipient’s aggregated PnL data for this token:

REST-Only Enrichments

These fields are only available in the REST endpoint (not in the WebSocket stream):
Fields only available in real-time stream: The following fields exist in the WebSocket stream but are not stored in the database and will be absent from REST responses: rawPostBalanceRecipient0, rawPostBalanceRecipient1, rawPostBalanceNativeSender, rawPostBalanceNativeRecipient, miniBlockSlot. Additionally, blockHeight, blockHash, logIndex, and transactionIndex are returned as null.

pairData (MarketDetailsOutput)

Full market/pair details including token metadata, price changes, volumes, trade counts, holder stats, socials, and security flags. Key fields:

baseTokenData / quoteTokenData (TokenDetailsOutput)

Full token details for the base and quote tokens respectively. Key fields:

walletMetadata

platformMetadata

The pairData, baseTokenData, and quoteTokenData objects are fetched once per request (since all trades belong to the same pool) and attached to every trade in the response. This makes the response self-contained — no additional API calls are needed to render a full trade row.
The type filter (buy/sell) is applied after fetching from the database, so using it with small limit values may return fewer results than expected. Increase limit if you need a specific number of buys or sells.

Usage Examples

Fetch latest enriched trades for a pool:
Fetch enriched trades with filters (POST):
Historical backfill with pagination:

Special Labels

The label parameter accepts the following values (these are the actual enum string values to pass):
  • proTrader: Trades from known professional trading platforms
  • smartTrader: Trades from wallets identified as smart traders in the last 7 days
  • freshTrader: Trades from newly funded wallets (within last 24 hours)
  • dev: Trades from token deployer addresses
  • sniper: Trades from sniper wallets
  • insider: Trades from insider wallets
  • bundler: Trades from bundler wallets
  • Custom labels created via the wallet labels API

Comparison with Token Trades

Query Parameters

chainId
string

Blockchain chain ID (e.g., "evm:56", "solana:solana")

address
string

Pool/pair contract address

offset
number | null

Offset for pagination (default: 0)

limit
number | null

Number of trades per page (default: 10)

sortOrder
enum<string>
required

Sort order: asc or desc (default: desc)

Available options:
asc,
desc
label
enum<string>

Filter by wallet label (e.g., sniper, insider, bundler)

Available options:
sniper,
insider,
bundler,
proTrader,
smartTrader,
freshTrader,
freshTrader30d,
dev,
liquidityPool,
locker
swapTypes

Comma-separated swap types to filter (e.g., "REGULAR,MEV")

type
enum<string>

Filter by trade direction: "buy" or "sell"

Available options:
buy,
sell
transactionSenderAddresses

Comma-separated wallet addresses to filter (max 25)

maxAmountUSD
number | null

Maximum trade amount in USD

minAmountUSD
number | null

Minimum trade amount in USD

fromDate

Start date filter (timestamp or ISO string)

toDate

End date filter (timestamp or ISO string)

Response

200 - application/json

Enriched token trades response

data
object[]
required