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
| Field | Type | Description |
|---|---|---|
block_time | string | ISO 8601 timestamp of when the trade occurred on-chain |
block | integer | Block (slot) number when the trade occurred |
tx_signature | string | Transaction signature |
dex | string | DEX name (e.g. "raydium", "orca", "pumpfun", "meteora") |
dex_version | string | DEX version (e.g. "v4", "clmm", "whirlpool", "damm_v2") |
signer | string | Wallet that signed the transaction |
receiver | string or null | Wallet that received the output tokens (may differ from signer in routed swaps) |
pool_address | string or null | Liquidity pool address |
token_in | object | Input token details |
token_out | object | Output token details |
fee_usd | number or null | Trade fee in USD |
Token In / Token Out Object
| Field | Type | Description |
|---|---|---|
address | string | Token contract address |
amount | number | Amount in human-readable units (post-decimal) |
amount_usd | number or null | Amount 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
| Network | Status |
|---|---|
Solana (sol) | Supported |