For bot, scanner and agent developers
The MadeOnSol DEX firehose streams parsed Solana DEX trades from 14 programs across 8 venues, filtered on the server by token, wallet, venue, size and more.
Try it free
Ultra
€131/month
Billed in euros by card. Checkout shows today's dollar estimate; your card issuer sets the exact amount. USDC or SOL at the day's rate. Cancel anytime.
Free, Pro and Ultra keys are for your own internal use, such as bots, backends and research. Showing MadeOnSol data to your own users, for example in a public terminal or dashboard, needs Business. Compare plans
Normalized DEX trades from every supported Solana venue over one WebSocket, filtered on the server, for bots, terminals, scanners, analytics and AI agents.
Decoded venues
14 Solana programs across 8 venues, one trade model.
pump.fun
dex: "pumpfun" · 1 program
PumpSwap
dex: "pumpswap" · 1 program
Raydium
dex: "raydium" · 4 programs
Jupiter
dex: "jupiter" · 1 program
Orca
dex: "orca" · 1 program
Meteora
dex: "meteora" · 4 programs
LaunchLab
dex: "launchlab" · 1 program
Moonshot
dex: "moonshot" · 1 program
The problem
Raw Solana transactions are flexible, but a production market-data product needs consistency. Every additional venue creates parsing, schema and operational work. The MadeOnSol DEX firehose delivers parsed real-time DEX activity from every supported venue in one frame shape.
Show me
Name what you want and set a size floor; every venue arrives in the same frame. Values are illustrative, keys are the serializer's.
At least one targeting filter is required. replay asks for recent matching trades from the server's buffer.
// wss://madeonsol.com/ws/v1/dex-stream
{
"type": "subscribe",
"sub_id": "pumpswap-flow",
"filters": { "dex": ["pumpswap"], "min_sol": 1 },
"replay": 100
}One dex:trades frame per matching trade, with the executed price, the pool and its post-swap reserves.
{
"channel": "dex:trades",
"sub_id": "pumpswap-flow",
"data": {
"wallet": "7vfC...rXs2",
"mint": "Cgxx...pump",
"action": "buy",
"sol_amount": 2.5,
"token_amount": 1234567.89,
"tx_signature": "5K7j...",
"block_time": 1790157600,
"slot": 449476673,
"program": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
"dex": "pumpswap",
"executed_price_sol": 0.000002025,
"pool_address": "Gf7h...2kLm",
"pool_model": "constant_product",
"pool_quote_mint": "So11111111111111111111111111111111111111112",
"quote_reserve_raw": "112000000000",
"quote_decimals": 9,
"token_reserve_raw": "55308641975309",
"token_decimals": 6,
"dust": false
},
"ts": 1790157600412
}Try it
The firehose itself needs Ultra and Business. A free key and the no-signup demo let you check the REST data and response shapes first.
Filters
Every subscription needs at least one targeting filter; refinements narrow it further. Up to 10 named subscriptions share one connection, each with its own filters. Included in Ultra and Business. Compare plans
| Filter | Kind | Accepts |
|---|---|---|
| token_mint / token_mints | Targeting | One mint, or up to 50 |
| wallet / wallets | Targeting | One trader wallet, or up to 50 |
| dex | Targeting | One venue or a listpumpfunpumpswapraydiumjupiterorcameteoralaunchlabmoonshot |
| program | Targeting | One raw DEX program ID |
| deployer_tier | Targeting | One tier or a listelitegoodmoderaterisingcoldunranked |
| token_age_max_seconds | Targeting | Tokens first seen within N seconds |
| market_cap_min_sol / market_cap_max_sol | Targeting | Market cap bounds in SOL |
| min_sol | Refinement | Minimum trade size in SOL; 0.05 when unset |
| max_sol | Refinement | Maximum trade size in SOL |
| action | Refinement | One sidebuysell |
Beyond trades
Opt-in views on the same connection. For measured delivery numbers, see the latency benchmarks.
Subscribe with legs: true and each matching transaction also arrives as one dex:route plus one dex:leg per pool it touched. Since 2026-10-17 a multi-hop instruction (PumpSwap MultiHopSwap, including a hand-off to a pump.fun curve) arrives as one leg per proved pool, with ids ending #h1, #h2 and a hop_index. decoded_complete says whether every hop was decoded, and an incomplete route names its undecoded program.
legsdex:routedex:leghop_indexdecoded_completeSubscribe with liquidity: true for pool_created, add and remove events. material marks a removal of at least 25% of a pool's reserves.
liquiditydex:liquiditymaterialOn the live stream, trades under 0.05 SOL are delivered only when you set min_sol yourself, and each one is marked dust: true. Stored trade history over REST has no size floor since 2026-10-22 19:53 UTC.
min_soldustA subscription scoped to mints also receives dex:graduations frames when those tokens graduate, on the same connection.
dex:graduationstoken_mintsTarget trades by the reputation tier of the token's deployer: elite, good, moderate, rising, cold, unranked.
deployer_tierEach trade carries the price of that swap and, when available, the pool it hit, the pool model and post-swap reserves as integer strings (null when extraction fails).
executed_price_solpool_modelquote_reserve_rawtoken_reserve_rawCapabilities
01
Reduce venue-by-venue parsing with a normalized trade model across supported programs.
02
Filter by token, wallet, venue, deployer tier, token age, market cap, size or side before trades reach you.
03
After a short disconnect, request a replay of recent trades from the server's in-memory buffer when you resubscribe, and deduplicate by transaction signature.
04
Feed bots, alerts, discovery, terminals and analytics from the same live layer. AI agents get MadeOnSol data as tools through the MCP server mcp-server-madeonsol (108 tools).
Architecture
1 · Source
Chain activity
Transactions and program events
2 · MadeOnSol
Data and intelligence layer
3 · Delivery
4 · Yours
Your ingestion service
Keys and business logic stay server-side
5 · Users
Your market product
Build outcomes
Displaying MadeOnSol data to your own users requires a Business plan. See pricing
Keep going
Solution
Trading Bots
Launch, KOL and copy-trade signals for bots.
Solution
Onchain Analytics
Load history over REST, then keep a dashboard live.
Solution
Trading Terminals
Prices, candles and the tape in one interface.
Solution
Token Scanners
From a surge to an enriched scanner result.
Guide
Connect, subscribe and parse trade frames
The firehose in code.
Guide
The firehose against other streaming stacks
A comparison guide.
FAQ
Next step
Check the measured numbers, explore the response shapes on a free key, then open the firehose.