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 type | Transaction history | Account snapshots | Blocks |
|---|---|---|---|
| Standard RPC | ~2 epochs (~4–5 days) | Current only | ~2 epochs |
| Archive RPC | Full history from genesis | Current only | Full history |
| Bigtable-backed | Configurable range | Current only | Configurable |
| Warehouse/indexer | Depends on service | Historical snapshots | Depends 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 type | Query capability | Historical depth | Setup |
|---|---|---|---|
| DAS API (multiple providers) | Token/NFT metadata, ownership | Varies | API key |
| Transaction indexers | By program, account, type | Months to full | API key or self-host |
| Data warehouses | SQL over transactions | Often from genesis | Account + queries |
| Block explorers API | Basic tx/account lookup | Full history | API 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
| Approach | Monthly cost range | Notes |
|---|---|---|
| Archive RPC (shared) | $200–$1,000 | Per-request pricing |
| Archive RPC (dedicated) | $1,000–$5,000 | Fixed infrastructure |
| Geyser + ClickHouse (self-hosted) | $500–$3,000 | Storage + compute |
| Geyser + ClickHouse (managed) | $1,000–$10,000 | Depends on volume |
| Indexing service API | $100–$2,000 | Per-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.
Sources
Updated: