DEX Trades Stream

Real-time DEX trade events delivered over WebSocket.

Stream name: dex_trades

The DEX Trades stream delivers real-time trade events as they happen on-chain. Subscribe with a token address, pool address, or wallet address and receive every trade that matches.

Multi-Address Filtering

A single subscription filters against multiple fields in each trade event. When you subscribe with an address, the stream checks it against:

  • Pool address -- the liquidity pool where the trade executed
  • Token in mint -- the token being sold
  • Token out mint -- the token being bought

This means subscribing with a token mint address will deliver all trades involving that token across every pool, without needing to know or subscribe to each pool individually.

Subscribing

By Token

Subscribe with a token mint to receive all trades involving that token:

{
  "op": "subscribe",
  "network": "sol",
  "address": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
  "stream": "dex_trades"
}

By Pool

Subscribe with a pool address to receive all trades on that specific pair:

{
  "op": "subscribe",
  "network": "sol",
  "address": "BofA2ViUSudPBTUms2KRuG6AHNeMawjNfwqTJDgx5BKW",
  "stream": "dex_trades"
}

Multiple Subscriptions

{
  "op": "subscribe",
  "subs": [
    { "network": "sol", "address": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", "stream": "dex_trades" },
    { "network": "sol", "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "stream": "dex_trades" }
  ]
}

Firehose

Subscribe to all trades across all pools and tokens on a network:

{
  "op": "subscribe",
  "network": "sol",
  "address": "ALL",
  "stream": "dex_trades"
}

Firehose subscriptions require the firehose permission on your API plan.

Event Format

{
  "op": "event",
  "network": "sol",
  "address": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
  "stream": "dex_trades",
  "timestamp": "2026-03-01T12:30:45.123Z",
  "data": {
    "block_time": "2026-03-01T12:30:45.123456+00:00",
    "block": 310500012,
    "tx_signature": "5K8kL9...",
    "dex": "raydium",
    "dex_version": "v4",
    "signer": "5Yqw3pMxstwjHDmPAQaWcKpVvehemtERaSGePRshDXtX",
    "receiver": "5Yqw3pMxstwjHDmPAQaWcKpVvehemtERaSGePRshDXtX",
    "pool_address": "BofA2ViUSudPBTUms2KRuG6AHNeMawjNfwqTJDgx5BKW",
    "token_in": {
      "address": "So11111111111111111111111111111111111111112",
      "amount": 2.99252994,
      "amount_usd": 262.36
    },
    "token_out": {
      "address": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
      "amount": 5096335.626971,
      "amount_usd": 261.70
    },
    "fee_usd": 0.66
  }
}

Data Reference

FieldTypeDescription
block_timestringISO 8601 timestamp of when the trade occurred on-chain
blockintegerBlock (slot) number when the trade occurred
tx_signaturestringTransaction signature
dexstringDEX name (e.g. "raydium", "orca", "pumpfun", "meteora")
dex_versionstringDEX version (e.g. "v4", "clmm", "whirlpool", "damm_v2")
signerstringWallet that signed the transaction
receiverstring or nullWallet that received the output tokens (may differ from signer in routed swaps)
pool_addressstring or nullLiquidity pool address
token_inobjectInput token details
token_outobjectOutput token details
fee_usdnumber or nullTrade fee in USD

Token In / Token Out Object

FieldTypeDescription
addressstringToken contract address
amountnumberAmount in human-readable units (post-decimal)
amount_usdnumber or nullAmount in USD at the time of trade

Update Frequency

Events are delivered in real time -- every trade is streamed the moment it is confirmed on-chain.

Related REST Endpoint

You can also query historical trades via the REST API:

GET /dex/v1/{network}/trades

The REST endpoint supports filtering by token, pool, or signer with cursor-based pagination. See DEX Trades for full details.

Network Support

NetworkStatus
Solana (sol)Supported