Indexing Methods Compared

Comparing getSignaturesForAddress, getBlock, and Geyser-based indexing approaches.

Updated March 202510 min read

When building a Solana indexer, you have several methods for sourcing data. Each has different trade-offs in terms of completeness, latency, and operational complexity.

getSignaturesForAddress is the simplest approach — it returns a paginated list of transaction signatures for a given account. This is useful for building wallet history features but has significant limitations: it only covers accounts you explicitly query, pagination is slow for high-volume accounts, and you're limited to ~2 epochs of history on standard nodes.

getBlock / getBlocks fetches complete block data including all transactions. This is the foundation for comprehensive indexers — you process every transaction in every block sequentially. The downside is throughput: even with parallel requests, processing Solana's full history takes significant time and resources.

Geyser Plugin / gRPC Streaming is the production-grade approach for real-time indexing. Data is streamed directly from the validator's memory before it's written to disk, providing the lowest possible latency. Combined with server-side filtering, you receive only the data relevant to your application. This is the recommended approach for any production indexer.

Hybrid approaches combine Geyser streaming for real-time data with RPC-based backfilling for historical data. This is the architecture used by most production indexers.

ℹ️
This section is actively being expanded. Check back for more detailed guides, code examples, and tutorials.