What is Yellowstone gRPC?

Yellowstone gRPC provides ultra-low latency streaming of Solana blockchain data by tapping directly into Solana leaders to receive shreds as they’re produced. This delivers real-time data to your application with minimal delay.

High Performance

Binary protocol with efficient serialization for maximum throughput and minimal bandwidth usage

Real-time Streaming

Bidirectional streaming with immediate subscription creation and cancellation

Advanced Filtering

Precisely control what data you receive with account, transaction, and program filters

Multiple Data Types

Subscribe to accounts, transactions, slots, blocks, and entries in a single stream

Stream Types

Monitor account changes in real-time

Track balance updates, data modifications, ownership changes, and account creation/deletion events with precise filtering options.

Account Monitoring Guide

Learn how to stream account updates with filtering examples

How to Access Yellowstone gRPC

Choose the option that best fits your needs:

LaserStream - Multi-tenant, highly available gRPC service with automatic failover and historical replay capabilities. Ideal for most production applications.

Dedicated Nodes - Exclusive gRPC endpoint with guaranteed resource isolation. Best for specialized requirements.

Need help deciding? See our detailed comparison guide to understand which option is right for your use case.

Quick Start

Ready to start streaming? Begin with our comprehensive setup guide:

Yellowstone gRPC Quickstart

Complete setup guide with installation, authentication, and your first stream


Subscription Request Structure

Every gRPC subscription requires a properly structured request. Here’s how to build one:

Core Parameters

commitment
string
required

Commitment level for data consistency

  • processed - Transaction processed by the node
  • confirmed - Transaction confirmed by cluster
  • finalized - Transaction finalized by cluster
ping
boolean

Keep connection alive

Set to true to receive pong messages every 15 seconds, preventing connection timeouts from load balancers or proxies.

accounts_data_slice
array

Optimize data transfer

Request specific byte ranges from account data:

[
  { "offset": 0, "length": 100 },
  { "offset": 200, "length": 50 }
]

Filter Configuration


Example: Basic Transaction Monitoring

Here’s a complete example to get you started:

import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";

const client = new Client("your-grpc-endpoint", "your-api-token", {
  "grpc.max_receive_message_length": 64 * 1024 * 1024
});

const stream = await client.subscribe();

// Handle incoming data
stream.on("data", (data) => {
  if (data.transaction) {
    console.log(`Transaction: ${data.transaction.signature}`);
    console.log(`Success: ${!data.transaction.meta?.err}`);
  }
});

// Subscribe to transactions with complete request structure
const subscribeRequest: SubscribeRequest = {
  transactions: {
    client: {
      accountInclude: [
        "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", // Token Program
        "11111111111111111111111111111111"               // System Program
      ],
      accountExclude: [],
      accountRequired: [],
      vote: false,
      failed: false
    }
  },
  commitment: CommitmentLevel.CONFIRMED,
  ping: { id: 1 }
};

stream.write(subscribeRequest);

This is a basic example. For production use, implement proper error handling, reconnection logic, and data processing. See our detailed guides for complete implementations.


Ready to Start?

Advanced Resources