Solana Data: Index Programs, Accounts, and Transactions

Index decoded Solana program data, account state, and transactions in one pipeline, delivered to your own database. Not a hosted API. Real-time via Geyser plus complete history, no node to run.


Solana is non-EVM and high-throughput, and its data does not look like Ethereum's. There is no native event-log system: a transaction is a list of instructions calling on-chain programs, each touching a set of accounts. Meaning lives in account state changes and in program logs, which are raw and unstandardized unless a program uses Anchor with an IDL. Real-time data comes off the validator through Geyser / Yellowstone gRPC, and complete history means large-scale indexing of accounts and instructions, not a single eth_getLogs range query.

Indexing Co decodes Solana program data, accounts, and transactions, shapes it into your schema, and delivers it to your own PostgreSQL, warehouse, or webhook. One pipeline that also covers your other chains. This is the model a hosted Solana API does not give you: decoded data in your own store, on a unified multi-chain schema. Mesh runs BTC, ETH, and SOL transfers through Indexing Co into one unified interface on exactly this pattern.

Source Geyser / RPC
Ingest slots and accounts
Decode program logs, accounts
Transform your TypeScript
Deliver your database

Why Solana data is hard

Accounts and Instructions, Not Events Solana has no native event-log system like Ethereum. A transaction is a list of instructions over accounts, and meaning has to be reconstructed from instruction flows and account state changes. There is no eth_getLogs range query to lean on.
Real-Time Means Geyser High throughput means polling RPC falls behind the chain head. Low-latency data comes off the validator via the Geyser / Yellowstone gRPC plugin, which streams slots, accounts, transactions, and blocks. Running and keeping up with that stream is its own engineering job.
Decoding Program Logs Raw program logs are unstandardized, often not valid JSON, and carry no event topic signatures. Decoding requires correlating the primary instruction with token transfers and, for Anchor programs, parsing against each program's IDL to recover the real intent.
A Hosted API Is Not Your Database A hosted Solana API gives you decoded data on their endpoint, in their shape, behind their rate limits. You still cannot join it natively to your other chains or own the storage. The data does not land in your schema.

What Indexing Co delivers for Solana

DIY or a Hosted API

Run the stream yourself, or rent someone else's endpoint.

  • Stand up a Geyser / Yellowstone gRPC stream and keep up with the chain head.
  • Decode instructions, accounts, and IDL-encoded program logs by hand.
  • Or take a hosted API in its shape, behind its rate limits, on its endpoint.
  • Either way the data does not land in your database on your other chains' schema.
Indexing Co

Decoded Solana data, in your store, on one multi-chain schema.

  • Solana programs, accounts, and transactions decoded in a single pipeline.
  • Shaped by your TypeScript transform into the schema you define.
  • Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
  • The same pipeline carries your EVM and BTC chains. Real-time via Geyser plus complete history. No node.

What you can index

Accounts and State Programs and Transactions
Account updates and balance deltas Decoded instructions and inner instructions
Token accounts (SPL) and mints Program logs and Anchor events (via IDL)
Program-owned account state SOL and SPL transfers
Slot and block metadata Swaps, mints, and decoded program activity

A transform, not a subgraph

You write the indexing logic in TypeScript, not Rust or AssemblyScript, and change it without re-indexing from genesis. The example below shapes a decoded SPL transfer into a row for your database.

// Illustrative: shape a decoded Solana SPL transfer into an output row
export function onSplTransfer(ix: DecodedInstruction): TransferRow {
  return {
    slot: ix.slot,
    timestamp: ix.blockTimestamp,
    signature: ix.signature,
    mint: ix.accounts.mint,
    source: ix.accounts.source,
    destination: ix.accounts.destination,
    amount: ix.data.amount,
  };
}

Solana with Indexing Co

Run it yourself if

You want full control of your own Geyser stream and node, and have the team to operate the gRPC pipeline, IDL decoding, and historical indexing.

Use Indexing Co if

You want decoded Solana programs, accounts, and transactions delivered to your own database, on a schema shared with your other chains, with real-time plus complete history and no infrastructure to run.

Related Reading

FAQ

Does Indexing Co decode Solana program data, or just return raw transactions?

Decoded. Instructions, inner instructions, account state, and program logs are decoded into the shape you define, including Anchor events parsed against a program's IDL. You define the output schema.

How does Indexing Co get real-time Solana data?

We source low-latency data off the validator via the Geyser / Yellowstone gRPC plugin, which streams slots, accounts, transactions, and blocks. You do not run or keep up with that stream.

Can I index Solana alongside my EVM and Bitcoin chains?

Yes. That is the point. Solana lands in your own database on the same schema as your other chains. Mesh runs BTC, ETH, and SOL transfers through one unified interface on this model.

How is this different from a hosted Solana API?

A hosted API serves decoded data on its endpoint, in its shape, behind its rate limits. Indexing Co delivers decoded data into your own PostgreSQL, warehouse, or webhook, on a schema you own and share across chains.

Can I get complete historical Solana data?

Yes. We backfill account and instruction history and merge it with the real-time Geyser stream so your dataset is gap-free from your chosen start slot.

Get Started

Index Solana in minutes. Set up your first decoded program, account, or transfer pipeline without running a node.

Get a Demo | Open the Console