in-solana by Supanode

Getting Historical Data on Solana

TL;DR

  • - Standard RPC nodes store only recent epochs — for older data you need an archive node or indexer
  • - Geyser gRPC captures live data; warehouses like ClickHouse store it long-term
  • - Off-chain indexing services trade setup effort for query flexibility

Solana standard RPC nodes retain only the last two epochs of transaction history (roughly 4–5 days). Requesting data older than that returns errors like “Transaction history is not available from this node” or “Slot not available in long-term storage.” Accessing historical data requires archive nodes, indexers, or warehouse services.

Data retention by node type

Node typeTransaction historyAccount snapshotsBlocks
Standard RPC~2 epochs (~4–5 days)Current only~2 epochs
Archive RPCFull history from genesisCurrent onlyFull history
Bigtable-backedConfigurable rangeCurrent onlyConfigurable
Warehouse/indexerDepends on serviceHistorical snapshotsDepends on service

Option 1: Archive RPC nodes

Archive nodes store the complete ledger from genesis. You can query any historical transaction or block using the standard RPC API:

const tx = await connection.getTransaction(signature, {
  maxSupportedTransactionVersion: 0,
});

const block = await connection.getBlock(slotNumber, {
  maxSupportedTransactionVersion: 0,
});

Advantages: Standard RPC API, no additional tooling. Disadvantages: Expensive infrastructure (tens of TB of storage), slow for analytical queries, no indexing by program or account across time.

Option 2: Geyser gRPC + custom database

Capture real-time data via Geyser gRPC and store it in your own database:

Geyser gRPC → Your Consumer → ClickHouse / PostgreSQL / TimescaleDB

This gives you:

  • Every transaction, account update, and block as it happens.
  • Custom schema designed for your query patterns.
  • SQL access to historical data.

Storage estimates (as of 2026-10-21):

  • Full transaction data: ~2–5 TB per month
  • Account updates only: ~500 GB–1 TB per month
  • Filtered (specific programs): varies, often 10–100 GB per month

ClickHouse for Solana data

ClickHouse is popular for Solana analytics because:

  • Columnar storage compresses transaction data efficiently (10–20x compression).
  • Aggregation queries (volumes, counts, averages) run fast over billions of rows.
  • MergeTree engine handles high insert throughput from Geyser streams.

Option 3: Off-chain indexing services

Several services offer pre-indexed Solana data:

Service typeQuery capabilityHistorical depthSetup
DAS API (multiple providers)Token/NFT metadata, ownershipVariesAPI key
Transaction indexersBy program, account, typeMonths to fullAPI key or self-host
Data warehousesSQL over transactionsOften from genesisAccount + queries
Block explorers APIBasic tx/account lookupFull historyAPI key

Option 4: Google Bigtable ledger archives

Solana Foundation and validator operators publish ledger archives to Google Bigtable. Some RPC providers connect their nodes to Bigtable for historical lookups. This extends the standard RPC node’s history without storing the full ledger locally.

Choosing an approach

For occasional lookups (specific transaction, specific block): → Use an archive RPC endpoint. Pay per request.

For analytical queries (all swaps by program in the last month): → Use a data warehouse or build your own with Geyser + ClickHouse.

For real-time + historical (live feed with backfill): → Geyser gRPC for live data, warehouse for historical backfill.

For token/NFT data: → DAS API services provide purpose-built endpoints for token metadata, ownership, and transfer history.

Cost considerations

ApproachMonthly cost rangeNotes
Archive RPC (shared)$200–$1,000Per-request pricing
Archive RPC (dedicated)$1,000–$5,000Fixed infrastructure
Geyser + ClickHouse (self-hosted)$500–$3,000Storage + compute
Geyser + ClickHouse (managed)$1,000–$10,000Depends on volume
Indexing service API$100–$2,000Per-query or subscription

Prices as of 2026-10-21. Check provider pricing pages for current rates.

FAQ

Why does Solana not store full history by default? Storage cost. The Solana ledger grows at several TB per month. Requiring every validator to store full history from genesis would dramatically increase hardware requirements and reduce decentralization.

Can I get historical account state (what an account looked like at slot X)? Standard RPC does not support historical account state lookups. You need either a warehouse that stores account snapshots or a service that indexes account state changes over time.

Is Bigtable data the same as what an archive node has? Yes, for transaction and block data. Bigtable archives contain the same ledger data that a full archive node stores locally.

How far back does getSignaturesForAddress go? On standard nodes: ~2 epochs. On archive nodes: to genesis. The method returns signatures in reverse chronological order with a before parameter for pagination.

Updated: