The fastest data feed for a Solana bot
Most bots that lose races are not slow. They are late — waiting on a data path that costs more time than every other part of the system combined.
Diagnose before you buy
Before changing anything, measure one number: the wall-clock gap between when a transaction was broadcast and when your handler was invoked. Not your loop time, not your RPC response time — the gap against the chain itself.
If that number is in the low milliseconds, your data is fine and your logic is the bottleneck. If it is over a hundred milliseconds, no amount of optimising your strategy will help. You are tuning a car with the handbrake on, and a faster feed is the handbrake.
What each option gives a bot
The right answer depends entirely on what your strategy competes on. Ordering-sensitive strategies need to be upstream. Everything else does not.
| Feed | Lag | Good for | Bad for |
|---|---|---|---|
| Raw shreds (UDP) | ~1 ms | Snipers, liquidations, ordering races | Teams without parser capacity |
| Geyser / Yellowstone gRPC | 80–120 ms | Market making, analytics, indexers | Ordering races |
| RPC websocket | 200–400 ms | Portfolio tracking, alerts, dashboards | Anything competitive |
| Polling getTransaction | 300 ms+ | Reconciliation, accounting | Live trading |
What changes in your code
Moving to shreds is not a drop-in swap and pretending otherwise would waste your money. You stop receiving events and start receiving fragments. You bind a socket, handle datagrams that can arrive out of order, reassemble FEC sets, and decide what to do with a slot you have only partially observed.
In exchange, you own the entire hot path. No client library sits between you and the bytes, nothing reconnects at the wrong moment, and nothing rate-limits you on the busiest day of the year.
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", 20000))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 32 * 1024 * 1024)
while True:
data, _ = sock.recvfrom(1500)
handle_shred(data) # one raw shred, as broadcastTwo regions, because stake is not evenly spread
Solana's validator set clusters, heavily, around a small number of metros. We push from New York and Frankfurt at the same time and let you take whichever copy lands first, so you are close to the leader regardless of which side of the Atlantic it is on.
Both regions are included in every plan. We do not sell them separately, because taking the first of two copies is the point.
Frequently asked
- Will a faster feed make my bot profitable?
- No. It removes a constraint; it does not supply an edge. If your strategy is unprofitable at 200 ms it will usually be unprofitable at 1 ms, just faster. Buy latency when you have measured that latency is what is costing you fills.
- What server do I need to receive it?
- A Linux box with a public IPv4, an open UDP port, and enough network headroom for a sustained multi-hundred megabit stream. Raise your kernel receive buffers — the dashboard gives you the exact sysctl values.
- Can I test before committing?
- That is what the 24-hour plan at 0.3 SOL is for. Point your bot at the socket, measure the gap against your current feed, and decide with your own numbers.
Measure it against your own bot
Twenty-four hours of raw shreds from New York and Frankfurt for 0.3 SOL. All we need is an IP and a port.
Keep reading
- Guide
Solana ShredStream, explained properly
What Solana shreds are, how a shredstream works, and how to get raw UDP shred access without running a staked validator. From 0.3 SOL/day.
- Comparison
Looking for the fastest Solana RPC?
Why upgrading your Solana RPC provider stops helping past a point, where the remaining latency actually lives, and what to use when milliseconds decide the trade.
- Guide
Solana doesn't have a mempool
Why Solana has no public mempool, what that means for front-running and MEV, and how to observe transactions as early as the architecture allows.