Solana Yellowstone gRPC: A Practical Guide
Yellowstone gRPC is the standard way to stream Solana state in real time. Instead of polling JSON-RPC, you open one gRPC stream and the validator pushes account, transaction and slot updates to you the moment they happen.
Why gRPC instead of WebSocket or polling
Standard JSON-RPC forces you to poll, and WebSocket subscriptions drop messages under load. A Yellowstone gRPC stream is a single long-lived HTTP/2 connection: you send one SubscribeRequest describing the filters you care about, and updates flow back as a server stream. For bots, indexers and dashboards that need every update, this is the difference between seeing an event and missing it.
Authenticating with an x-token header
Most providers gate access with a single x-token metadata header. You add it to the gRPC request interceptor — one line — and you are streaming. No SDK lock-in, no credit accounting on each call.
A minimal Python subscriber
This subscribes to slot updates at processed commitment and prints each one:
import grpc
from yellowstone_grpc_proto import geyser_pb2, geyser_pb2_grpc
channel = grpc.insecure_channel("YOUR_ENDPOINT:10000")
stub = geyser_pb2_grpc.GeyserStub(channel)
def requests():
req = geyser_pb2.SubscribeRequest()
req.slots[""].CopyFrom(geyser_pb2.SubscribeRequestFilterSlots())
yield req
md = [("x-token", "YOUR_TOKEN")]
for update in stub.Subscribe(requests(), metadata=md):
print(update)FAQ
What can I subscribe to?
Accounts (by owner or pubkey), transactions (by account, signature or vote/failed flags), slots, blocks and block metadata. You can combine filters in one request.
Is Yellowstone gRPC the same across providers?
Yes. It is a standard protocol originally built by Triton, so a client written for one endpoint works against any provider by changing the endpoint URL and token.
Unmetered Yellowstone gRPC. No rate limits, no credit system. US East.
Get a token at ghostgeyser.pro →