Cross-DEX swap feed

Solana DEX Trades API

Every swap across Raydium, Orca, Meteora, PumpSwap and more — decoded, USD-valued, and delivered sub-450ms from chain confirmation. Filter by token, wallet, or trade size server-side. Flat monthly pricing, no compute units or credits, no funded wallet.

Live trade streams from $39/mo · Free REST trade history · Sub-450ms · no compute units or credits

12
Decoded programs
sub-450ms
From chain confirmation
USD value
On every priced trade

Coverage

The Solana DEXes we decode

PumpSwap — the largest Solana DEX by volume — plus every Raydium, Orca and Meteora pool type. 12 programs and counting, and the catalog is public.

VenuesourceTypeLive streamREST history
Pump.fun / PumpSwap
Pump.funpump_funLaunchpadYesYes
PumpSwappump_ammAMMYesYes
Raydium
Raydium LaunchLabraydium_launchlabLaunchpadYesYes
Raydium CPMMraydium_cpmmAMMYesYes
Raydium CLMMraydium_clmmCLMMYesYes
Raydium V4raydium_v4AMMYesYes
Meteora
Meteora DBCmeteora_dbcLaunchpadHistory onlyYes
Meteora DAMM v2meteora_damm_v2AMMYesYes
Meteora DLMMmeteora_dlmmDLMMYesYes
Meteora Poolsmeteora_poolsAMMYesYes
Orca
Orca Whirlpoolorca_whirlpoolCLMMYesYes
PancakeSwap
PancakeSwappancakeswapCLMMYesYes
New venues are added continuously — GET /v1/programs is always current.

Meteora DBC is decoded for historical queries; its live signal isn't on the stream.

Jupiter and other aggregators

Jupiter, Axiom, Photon and GMGN aren't venues — they route orders to the pool that executes them. You don't need a separate subscription for any of them: a Jupiter-routed swap arrives as a trade on the pool that filled it, carrying that pool's source. Multi-hop routes emit one event per hop rather than one combined swap, and intermediate token-to-token legs often have volumeUsd: null. You see the fill whenever the route lands on a venue listed above.

GET /v1/programs is public and unauthenticated — verify this table yourself and validate source slugs at build time. See the programs docs.

Payload

The shape of a Solana swap

One SwapV1 object for live streams and REST backfill — derive buy/sell from the legs, not a side flag.

{
  "type": "swap",
  "source": "orca_whirlpool",
  "wallet": "5FHwkW5742VKq9W8pN3mL7jR2sT6cX4bY1zD8gH9K2pQnM",
  "volumeUsd": 1842.5,
  "swap": {
    "from": {
      "mint": "So11111111111111111111111111111111111111112",
      "amount": "25000000000",
      "uiAmount": 25,
      "decimals": 9
    },
    "to": {
      "mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm",
      "amount": "8421100000000",
      "uiAmount": 8421100,
      "decimals": 6
    }
  },
  "signature": "5xY8kR3nQmZ2vLdE9fWqT1sN4pC7hUoB6yA8jK2mVxRt3wDzS9pQeH4LcM7nJb1FgKtR5zXvY2mNc8h",
  "slot": 309812501,
  "timestamp": 1751008869000
}

There is no side field. If your tracked token is swap.to, it was bought; if it is swap.from, it was sold. The mints filter matches either leg, so both directions arrive in one subscription.

uiAmount is the decimal-adjusted size — you also get raw amount and decimals when you need them. wallet is the trader. volumeUsd is nullable (see below). timestamp is Unix milliseconds (nullable when blockTime is unknown); use slot for ordering.

REST trade rows are the identical shape (SwapV1, type included), so backfill and live code share one parser. Token trades REST.

Pricing

USD value on every trade — and when it's null

Execution price in SOL, converted with an on-chain SOL/USD oracle price — not a polled third-party REST quote.

Per-mint SOL price comes from the execution price of trades. USD is that price times an on-chain SOL/USD oracle, updated from the chain. That is how volumeUsd is derived for USD value on every priced trade.

volumeUsd is null when a mint has no SOL price yet or the SOL/USD feed is unavailable. Setting minVolumeUsd or maxVolumeUsd excludes null-volume trades — a volume floor silently drops unpriced swaps. Design filters with that interaction in mind.

Filters

Filter Solana trades by token, wallet, or size

Server-side filters on the trades channel — facts only. Wire protocol lives on the WebSocket page.

By token (mints)

Matches either leg, so you get buys and sells in one subscription. Quote assets (SOL/USDC/USDT) are rejected here — use solOnly. Starter tracks 1–10 mints; Pro may omit mints for the firehose.

By wallet (wallets)

Up to 100 addresses across every venue we decode — the foundation of copy-trading and whale tracking on the trades stream.

By size (minVolumeUsd / maxVolumeUsd)

USD bounds for whale filtering. Remember: these filters exclude trades where volumeUsd is null.

By venue (sources) and solOnly

Pass 1–20 sources. solOnly keeps swaps where at least one leg is wrapped SOL and ANDs with every other filter.

Filters AND across fields and OR within a list. A filter on the wrong channel is rejected as invalid_filters — never silently ignored.

Quickstart

Stream Solana DEX trades in Python or TypeScript

Python uses the standard websockets library — there is no Python SDK. TypeScript uses @anaxer/sdk. cURL shows the free-plan REST path.

import asyncio, json, websockets

API_KEY = "YOUR_API_KEY"  # Starter or higher for the live trades stream

async def main():
    url = f"wss://api.anaxer.com/v1/stream?apiKey={API_KEY}"
    async with websockets.connect(url) as ws:
        await ws.send(json.dumps({
            "type": "subscribe",
            "id": "dex-trades",
            "channel": "trades",
            # Starter must pass mints (1-10); Pro may drop it for the firehose.
            "filters": {
                "sources": ["raydium_clmm", "orca_whirlpool", "meteora_dlmm"],
                "mints": ["YOUR_TOKEN_MINT"],
            },
        }))
        async for raw in ws:
            msg = json.loads(raw)
            if msg.get("channel") == "trades":
                t = msg["data"]
                print(t["source"], t["volumeUsd"],
                      t["swap"]["from"]["mint"], "->", t["swap"]["to"]["mint"])

asyncio.run(main())
import { connect } from "@anaxer/sdk";

const client = connect({ apiKey: process.env.ANAXER_API_KEY! });

// Starter still requires mints. wallets is bounded 1-100 on trades.
client
  .stream("trades", {
    mints: ["YOUR_TOKEN_MINT"],
    wallets: ["WHALE_WALLET_ADDRESS"],
  })
  .on("data", (swap) => {
    console.log(swap.wallet, swap.source, swap.volumeUsd);
  });
# REST trade history works on every plan, including Free (7-day window)
curl "https://api.anaxer.com/v1/tokens/YOUR_TOKEN_MINT/trades?solOnly=true&limit=50" \
  -H "x-api-key: YOUR_API_KEY"

New to our WebSocket? The wire protocol, reconnect and backfill patterns are documented in one place.

Plans

What trade access costs

Live trades start at Starter. REST trade history works on Free. Plan price buys throughput and coverage — not history depth.

PlanLive trades streammints requirementSubs per channelREST trade historyMonthly REST requests
FreeNoYes, 7-day window2,500
Starter $39YesRequired, 1–101Yes, 7-day window250,000
Pro $99Yes — every trade, no token filterNot required2Yes, 7-day window2,500,000

Pro removes the token filter entirely — one subscribe, every swap across every venue we decode. The unfiltered trade firehose is $99/month.

Trade history is 7 days on every plan — the same window in the API clamp and in storage. Anaxer is stream-first; REST is for backfill and recent lookups, not a multi-year query warehouse. You are not paying for one.

Compare

How Anaxer compares for Solana DEX trade data

Trade-specific columns against the general data-API camp — not the Pump.fun-native trading APIs.

ProviderEntry price for live trade streamsBilling modelUSD value per tradeHistorical trade windowServer-side filters (token/wallet/size)Time to first event
Anaxer$39/mo Starter · $99/mo unfilteredFlat USD monthlyYes (nullable on gaps)7 daysYesOne subscribe
BitqueryScale ~$299/mo for full streamsPoints + stream-minutes + $10/GBVia GraphQL fieldsMulti-yearVia GraphQLQuery design + stream setup
HeliusBusiness $499/moCredit-metered (1–10 per call)You enrichVaries by productLimited vs dedicated trade filtersRPC + decode pipeline
QuickNodeScale $499/mo20–120× method multipliersYou enrichVaries by add-onLimitedRPC + decode pipeline
Birdeye~$199/mo PremiumCompute-unit meteredYes (analytics-oriented)Product-dependentPartialDashboard / API mix
CodexGrowth for WebSocket~$350/M requestsVia GraphQLProduct-dependentVia GraphQLGraphQL schema learning curve

Better elsewhere: choose Bitquery for deep historical and multi-chain analytical work, and Helius when you need a full RPC surface alongside data. We win on flat price, decoded USD-valued swaps, and time-to-first-event for live Solana DEX trade feeds.

Competitor details from public pricing and docs pages as of July 26, 2026 — verify before relying on them.

Pricing

Simple pricing. No compute units. No credits.

Flat monthly plans you can understand in 10 seconds. The bill is the price on the box.

Free

Try it out

$0USD
Start free

Streams

Token Creation

Included

Token Graduation

Included

Token Prices

Not included

DEX Trades

Not included

Wallet Transfers

Coming soon

Stream limits

Connections per stream

1

REST API

Requests / mo

2.5k

Rate limit

30/min
Most popular

Starter

Hobbyists & indie devs getting started

$39USD/mo
Get started

Streams

Token Creation

Included

Token Graduation

Included

Token Prices

Included

DEX Trades

Track up to 10 tokens (SOL pairs via solOnly)

Included

Wallet Transfers

Coming soon

Stream limits

Connections per stream

1

REST API

Requests / mo

250k

Rate limit

300/min

Pro

Built for dev and production environments

$99USD/mo
Get started

Streams

Token Creation

Included

Token Graduation

Included

Token Prices

Included

DEX Trades

All tokens, unlimited

Included

Wallet Transfers

Coming soon

Stream limits

Connections per stream

2

REST API

Requests / mo

2.5M

Rate limit

600/min

Enterprise

High volume, custom limits, dedicated support and an SLA.

Contact us

FAQ

Solana DEX trades API — frequently asked questions

Solana DEX trades

12 decoded programs across Raydium (V4, CPMM, CLMM, LaunchLab), Orca Whirlpool, Meteora (DAMM v2, DLMM, Pools, DBC), Pump.fun and PumpSwap, and PancakeSwap. 11 stream live; Meteora DBC is history only. The full catalog is public at GET /v1/programs — no API key required, so you can verify coverage yourself.

Each swap carries from and to legs rather than a buy/sell flag. If your tracked token is the to leg it was bought; if it is the from leg it was sold. Both directions arrive in one subscription because the mints filter matches either leg.

Yes, on every priced trade. volumeUsd is derived from the token's SOL execution price, converted with an on-chain SOL/USD oracle price — not a polled third-party quote. It is null when a mint has no SOL price yet or the feed is unavailable — and note that setting minVolumeUsd or maxVolumeUsd excludes null-volume trades.

REST trade history works on the free plan: 2,500 requests a month over a 7-day window, no credit card. The live trade stream starts on Starter at $39/month, where you track up to 10 tokens; the unfiltered trade firehose is $99/month. Creations and graduations streams are free, but trades are not.

Jupiter is an aggregator rather than a pool — it routes orders to the venue that actually fills them, so a Jupiter swap arrives as a trade on that pool carrying the pool's source. There is no separate jupiter source value, and you don't need a separate subscription for it. A multi-hop route emits one event per hop rather than a single combined swap, and intermediate token-to-token legs often carry volumeUsd: null because neither side is a priced quote asset. You receive the fill whenever the route lands on one of the programs in our catalog.

Seven days, identical on every plan — the same window in the API and in storage. If you need multi-year DEX history for backtesting, a historical analytics provider is a better fit than us; we are built for live and recent data.

Yes. The wallets filter accepts up to 100 addresses and delivers their swaps across every venue we decode, which is the basis for copy-trade and whale-tracking bots. Wallet-level non-swap transfers are a separate transfers stream, coming soon.

Yes. Swaps where neither leg is SOL are included where present in history — there is no backfill of rows from before that persistence shipped. Pass solOnly: true when you want only SOL-paired swaps.

The trades stream gives you every individual swap with both legs, the trader's wallet, and USD value. The prices stream gives a throttled per-token last-trade price with market cap. Use trades for flow and execution analysis, prices for quotes and dashboards. Both are on Starter and above.

No. Anaxer is data-only: an API key, a flat monthly price in USD, no wallet connected, nothing metered in SOL, and no fee on any trade. We have no interest in your order flow.

Start building today.

Build your next Solana app in minutes, not weeks.