Skip to main content

Solana Transactions API examples

The Solana Transactions API returns transaction-level data on Bitquery V1 — fee payer, signer, transaction fee, success or failure, instruction and inner-instruction counts, signature, and full block context — across the entire historical chain. Use it for fee analysis, wallet activity reporting, audit and reconciliation, operations dashboards, and as a complement to the Solana transfers API when you need transaction-level metadata rather than per-transfer rows.

Looking for parsed instructions, program IDs, or DEX swap decoding? Those have moved to the V2 Solana Instructions API — see also V1 vs V2.

Use cases at a glance

Get Solana transactions in a date range

Fetch Solana transactions within a precise UTC time window. Returns fee payer, instruction counts, success flag, and transaction signature for each transaction. Run query.

Variations: Adjust the time range as needed. Add signer: {is: "..."} to filter by wallet. Use success: {is: true} to exclude failed transactions, or success: {is: false} to focus on failures. Add limit/offset and sort for pagination and ordering.

query MyQuery {
solana {
transactions(
time:{since:"2025-07-25T00:00:00Z" till:"2025-07-25T01:00:00Z"}
options: {limit: 10, desc: ["transactionIndex", "block.height"]}
) {
block {
hash
height
timestamp {
iso8601
}
}
feePayer
instructionsCount
innerInstructionsCount
recentBlockHash
signature
success
transactionFee
transactionIndex
}
}
}

Solana transactions for a wallet (signer) in a date range

Get all transactions signed by a specific wallet within a time window using the signer filter. Returns instruction counts, fees, success status, and block details. Useful for wallet activity reports, billing reconciliation, and per-user analytics. Run query.

Variations: Change the signer address and time range. Add feePayer: {is: "..."} if the fee payer differs from the signer. Use success: {is: false} to find failed transactions. Combine with the transfers API to attach the actual SOL/SPL movements.

query MyQuery {
solana {
transactions(
time: {since: "2025-07-19T01:00:00Z" till:"2025-07-19T21:00:00Z"}
options: {limit: 100, desc: ["transactionIndex", "block.height"]}
signer: {is: "9vKgXDW6N3S4QDdqswq7m9U9eWp839HanvQ7RhUTtKZ1"}
) {
block {
hash
height
timestamp {
iso8601
}
}
feePayer
instructionsCount
innerInstructionsCount
recentBlockHash
signature
success
transactionFee
transactionIndex
}
}
}

Failed Solana transactions in a window

Filter to failed Solana transactions only. Useful for debugging stuck workflows, monitoring contract or relayer health, and surfacing user error patterns. Open in IDE.

Variations: Add signer: {is: "..."} to focus on a single wallet, or feePayer: {is: "..."} to track relayer/protocol fee-payer failures. Adjust the time window for incident postmortems.

{
solana(network: solana) {
transactions(
time: {since: "2025-07-25T00:00:00Z", till: "2025-07-25T01:00:00Z"}
success: {is: false}
options: {limit: 50, desc: ["block.height", "transactionIndex"]}
) {
block {
height
timestamp { iso8601 }
}
signer
feePayer
transactionFee
instructionsCount
innerInstructionsCount
signature
success
}
}
}

Distinguish fee payer from signer

Find transactions where the fee payer is different from the signer — common for sponsored transactions, relayer architectures, and dapp-funded user flows. Useful for cost attribution, treasury controls, and protocol-fee analytics.

Variations: Replace the feePayer address with your relayer or treasury wallet. Combine with transfers to attribute net flow to the funded users.

{
solana(network: solana) {
transactions(
time: {since: "2025-07-01", till: "2025-07-31"}
feePayer: {is: "FeePayerWalletAddressHere"}
success: {is: true}
options: {limit: 100, desc: ["block.height", "transactionIndex"]}
) {
signer
feePayer
transactionFee
signature
instructionsCount
block { height timestamp { iso8601 } }
}
}
}