For the complete documentation index, see llms.txt. This page is also available as Markdown.

🏦getTransactionsForAddress

A custom Solana RPC Method for Reading Historical Data With Advanced Filters And Pagination.

Fetching complete transaction data for a Solana address normally takes two steps :

  • getSignaturesForAddress to get signatures,

  • then a getTransaction call for each one On top of that you have to take care of manual pagination, status filtering, and token account lookups on the client side.

getTransactionsForAddress collapses all of that into a single request, with filtering, pagination, and token account lookups handled server-side.

getTransactionForAddress is a custom RPC call provided by Shyft. It is not part of the standard Solana RPC interface. Currently 2 epochs of data is available.

A single call can return either signature-level information or full transaction payloads, apply slot/time/status/accounts filters before results are returned. Use pagination cursor to easily traverse historical data in either ascending or descending order.

How It Compares to Standard Solana Methods

Capability

getSignaturesForAddress + getTransaction

getTransactionsForAddress

Address history lookup

1 + N requests

1 request

Pagination cursor

Signature (before/until)

Token (paginationToken)

Server-side status filter

❌

βœ… (status)

Server-side slot/time filter

❌

βœ… (slot, blockTime)

Token-account fan-out

Manual (getTokenAccountsByOwner + loop)

βœ… (tokenAccounts)

Full transaction payload

Separate getTransaction call per sig

transactionDetails: "full"

Example Request

Let's look at a basic getTransactionsForAddress call to understand different options it provides.

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getTransactionsForAddress",
    "params": [
        "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
        {
            "transactionDetails": "signatures", 
            "sortOrder": "asc",
            "limit": 1000,
            "paginationToken": null,
            "commitment": "confirmed"
            "filters": {
                "slot": {
                    "gte": 425211949 //Any slot number you want
                },
                "status": "any",
                "tokenAccounts": "none"
            }
        }
    ]
}

Understand what each parameter in the request stands for:

Option
Type
Default
Description

transactionDetails

signatures | full

signatures

Controls response payload.

sortOrder

asc | desc

desc

Sort direction by slot and transaction position within the block.

limit

number

1000 (signatures) / 100 (full)

Maximum number of results per page. Hard cap is 1000 for signatures and 100 for full. Exceeding the cap returns a -32602 error β€” it does not silently clamp.

paginationToken

string

null

Cursor returned by a previous response. Pass this value to fetch the next page. Cursors are opaque β€” do not construct or modify them.

commitment

confirmed | finalized

finalized

Commitment level for the query. Matches the semantics of getSignaturesForAddress.

minContextSlot

number

β€”

If provided, the node returns an error if it hasn't yet processed up to this slot. Use this when you've just sent a transaction and want to guarantee the node you're querying has advanced past that slot before returning results β€” otherwise you might query a slightly behind node and miss the transaction you just submitted.

encoding

json | jsonParsed | base58 | base64

json

Encoding for the transaction payload. Only relevant when transactionDetails is full. Matches getTransaction encoding behavior.

maxSupportedTransactionVersion

number

β€”

Maximum transaction version to return in the response. Requests without this field return an error if any result is a versioned transaction. Set to 0 to support all current transaction versions. Only relevant when transactionDetails is full.

filters

object

β€”

Optional filters applied server-side before results are returned. See below.


Limits and error behavior

The limit defaults differ because the payload sizes differ significantly, a response of 1000 signature objects is still small, while 100 full transaction objects can be several megabytes depending on instruction data. Exceeding them returns an error immediately; the server does not silently clamp and return a partial result.

  • "transactionDetails": "full", limit: 100

  • "transactionDetails": "signatures", limit: 1000

Exceeding these limits will result in the below error:

Last updated