Skip to main content
Ultra Fast StreamThe pre-execution route. For executed trades with fees, prices and reserves, use the Advanced Data Stream.

Ultra Fast Stream

Every other feed on this chain, ours included, waits for a block to execute: a node runs the transactions, writes the result, and a feed hands it on. Ultra Fast Stream does not wait. It reads the transactions straight from the shreds, the moment they arrive, and sends you each pump.fun and PumpSwap transaction before the block has run.

What shreds are​

A Solana block is not sent around as one piece. The leader cuts it into small packets called shreds and sends those out as it builds the block, so the rest of the network receives the block while it is still being made. Put enough shreds together and you have the transactions in the block, as the leader ordered them, before any node has executed them. That is what this feed listens to. It is the earliest point at which a transaction can be seen by anyone who is not the leader.

Why it carries less than the Advanced Data Stream​

The Advanced Data Stream describes what a transaction did: the price it got, the tokens it received, the fees it paid, the reserves it left behind. None of that exists yet when a shred arrives, because nothing has executed. Ultra Fast Stream can only tell you what a transaction asks for: who sends it, which coin, buy or sell, the amounts as submitted. It is sent earlier, so it knows less. That is the trade, and it is the whole point: the launch and the intent are what a bot acts on, the result is what it accounts with.

wss://sol.shrine.trade/api/ultrafast/stream?key=…

What you get earlier​

  • A launch, with its mint. A pump.fun create names the mint, the bonding curve, the creator and the metadata URI in the instruction itself. You hold the mint before the block exists, and a Lightspeed buy can leave the same instant.
  • Every buy and sell as sent. The trader, the mint, the tokens asked for and the SOL offered. On PumpSwap, the pool and the quote mint too.
  • Reverts included. A transaction that will fail is still a transaction the leader is about to run; it is on this feed, and never on an executed feed.

What it cannot carry​

Nothing that only exists after execution: the SOL actually paid, the tokens actually received, reserves after the trade, fees, logs, balances or success. The Advanced Data Stream has all of that a few milliseconds later. Run both: Ultra Fast Stream to act, the executed stream to account.

How far ahead​

The same pump.fun transaction on every feed, read from the US: Ultra Fast Stream on the New York region first, the New York Advanced Data Stream 6 ms later, pumpapi.io 16 ms later, PumpPortal 115 ms later

Measured on one machine in the US against the same transactions on 2026-10-08, over the public sockets, Ultra Fast Stream on the New York region had each pump.fun transaction first on 98% of them: 6 ms before our own Advanced Data Stream in the same region, 16 ms before pumpapi.io, which serves every client from Frankfurt, and about 115 ms before PumpPortal's new-token feed. The gain is small against the best executed feed and large against everything else; what it buys is the whole order of events, not a fixed head start.

Key​

Free key, by request

Ultra Fast Stream needs a key. Join the Telegram group to request one; it is the same key that unlocks the OHLCV events. Pass it as ?key= or in the x-api-key header.

The stream​

wss://sol.shrine.trade/api/ultrafast/stream?key=…[&mints=…][&wallets=…][&creates=1][&all=1]

A plain WebSocket, JSON text frames. Say what you want in the query string, or change it with messages afterwards; subscribed confirms each change.

const ws = new WebSocket("wss://sol.shrine.trade/api/ultrafast/stream?key=…&creates=1");
ws.onmessage = (m) => {
const e = JSON.parse(m.data);
if (e.type === "create") {
console.log("launch", e.symbol, e.mint); // the mint, before the block exists
ws.send(JSON.stringify({ subscribe: [e.mint] })); // and follow its trades
}
if (e.type === "trade") console.log(e.side, e.mint, e.solAmount, "SOL", e.trader);
};

Subscriptions​

QueryMessage
mints=…,…{"subscribe": [...]}, {"unsubscribe": [...]}Trades of these mints (up to 500).
wallets=…,…{"subscribeWallets": [...]}, {"unsubscribeWallets": [...]}Everything these wallets do on pump.fun and PumpSwap.
creates=1{"creates": true}Every launch. Off by default.
all=1{"all": true}The whole tape.
{"ping": true}Answered with {"type": "pong"}.

connected comes once, with the newest slot the feed has seen and the subscriptions in force.

Events​

Every event carries signature, slot, recv (wall clock in ms when it came off the feed), mint, trader and "preExecution": true.

create​

{
"type": "create", "protocol": "PUMPFUN", "preExecution": true,
"signature": "3nQ…", "slot": 447483508, "recv": 1791325200123,
"mint": "…pump", "trader": "…",
"name": "…", "symbol": "…", "uri": "https://…",
"bondingCurve": "…", "creator": "…"
}

createV2: true marks a launch through the newer create instruction. The dev buy that usually follows in the same transaction arrives as a trade with "createBuy": true.

trade​

{
"type": "trade", "protocol": "PUMPFUN", "preExecution": true,
"signature": "5aP…", "slot": 447483509, "recv": 1791325200231,
"mint": "…pump", "trader": "…",
"side": "buy", "tokenAmount": 1250000000000, "solAmount": 0.5, "solLamports": 500000000,
"createBuy": false
}

The amounts are what the instruction asked for, since nothing has executed: on a buy, tokenAmount is the tokens requested and solAmount the most SOL the trader will pay; on a sell, tokenAmount is what is sold and solAmount the least SOL accepted. A PumpSwap trade carries pool, quoteMint, tokenAmount and quoteLamports (the maximum in on a buy, the minimum out on a sell) instead.

Connection messages​

{"type": "lagged", "dropped": n} means your client read too slowly and n events were skipped. {"type": "error", "message": …} answers a bad message. The feed reconnects on its own.

Pairing with Lightspeed​

A create from this stream and a Lightspeed request with its mint is the shortest path from a launch to a landed buy that this API offers. The copy trade pattern is the same: follow a wallet here, mirror its buys there.