getSignaturesForAddress

Explore getSignaturesForAddress: Use Cases, Code Examples, Request Parameters, Response Structure, and Expert Tips

The getSignaturesForAddress RPC method retrieves a list of confirmed transaction signatures involving a specific account, ordered newest first. It’s the primary way to fetch an account’s transaction history on Solana.


âś… Common Use Cases

  • Wallet History Display recent transactions for a user’s wallet. For richer parsing, consider CoinVera’s Enhanced Transactions API.

  • Activity Auditing Review all transactions tied to a particular smart contract or account.

  • Targeted Lookup Locate a specific transaction when you only know the involved address.

  • Local Indexing Build a custom transaction index for faster queries and analytics.


đź›  Request Parameters

{
  "address": "<base58AccountPubkey>",  // Required
  "options": {                         // Optional
    "limit": <number>,         // 1–1000 (default 1000)
    "before": "<signature>",   // Fetch signatures before this one
    "until": "<signature>",    // Stop when this signature is reached (exclusive)
    "commitment": "processed|confirmed|finalized",
    "minContextSlot": <u64>
  }
}
  • address: Base‑58 public key of the target account.

  • limit: Max signatures to return (default and max: 1000).

  • before / until: Paginate by signature.

  • commitment: Confirmation level (defaults to the node’s setting).

  • minContextSlot: Minimum slot the node must have processed to serve this request.


📦 Response Structure

Returns an array of objects—each representing one signature:

Field
Type
Description

signature

string

Base‑58 transaction signature

slot

u64

Slot in which the transaction was processed

err

object | null

Error details if the transaction failed

memo

string | null

Memo attached to the transaction, if any

blockTime

i64 | null

Unix timestamp of the block (seconds since epoch)

confirmationStatus

string | null

“processed”, “confirmed”, or “finalized” (may be null)


đź’ˇ Examples

  1. Fetch the Latest Signatures Retrieve up to 1,000 newest signatures for an address.

  2. Limit the Number of Signatures Request a specific count (e.g., 100) by setting limit: 100.

  3. Paginate Through History Use before with the last signature of the previous batch to page backwards.


Code Examples

const fetch = require('node-fetch');

async function getSignaturesForAddress(rpcUrl) {
  try {
    const response = await fetch(rpcUrl, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        jsonrpc: '2.0',
        id: 1,
        method: 'getSignaturesForAddress',
        "params": [
            "4UJuvGZ7Ge8H3je63Nsb9ZRNVBAd3CG2ajibnRaVSbw5",
            {
              "limit": 5 
            }
          ]
      }),
    });

    const data = await response.json();
    
    // Print the exact full response
    console.log('Full RPC Response:');
    console.log(JSON.stringify(data, null, 2));
    
    return data;
  } catch (error) {
    console.error('Error getting health:', error.message);
    return null;
  }
}

// Example usage
const RPC_URL = 'https://rpc.coinvera.io/?x-api-key=your-coinvera-x-api-key';

getSignaturesForAddress(RPC_URL);

Example Response

{
  "jsonrpc": "2.0",
  "result": [
    {
      "blockTime": 1753337914,
      "confirmationStatus": "finalized",
      "err": null,
      "memo": null,
      "signature": "4boe3PE7Z2JvVuJb71MCNHZMRSGpcgMVFtiWADzGNTQkM6aa6b9xZg21Rs4xckLiDfFHfQNcPimMD7AmWkqS8KWC",
      "slot": 355371621
    },
    {
      "blockTime": 1753337729,
      "confirmationStatus": "finalized",
      "err": null,
      "memo": null,
      "signature": "3ec22yxtoMsSZKgEG7yGmLpVqkwQL4mqo4uBJbXJbx3VHAot6zhxLoH9K34hpD5SaeTGc3x4ufFMuA2r8mDJ84eP",
      "slot": 355371148
    },
    {
      "blockTime": 1753336615,
      "confirmationStatus": "finalized",
      "err": null,
      "memo": null,
      "signature": "4sjZcFBuamq26nSEiQeezaHwNzr1zPfaYf4iJXbZ7FHcEJ7jxLkFWp6UMhab3fyq98EQyoym6j8dEHnZR1u5XgU2",
      "slot": 355368317
    },
    {
      "blockTime": 1753336550,
      "confirmationStatus": "finalized",
      "err": null,
      "memo": null,
      "signature": "3ogjKgB5thqU7ENNUTaxnVHnG8eufW4cm8Jx42bofiHGWHamjMMiEm3RdTSThq38mwtcuqDChg6FTaX84TkiZ1aS",
      "slot": 355368149
    },
    {
      "blockTime": 1753335989,
      "confirmationStatus": "finalized",
      "err": null,
      "memo": null,
      "signature": "2iHnTgv2cJvr3EMdFaEoYcjQrtUL9kq7LmBPENKb4YA4ZgA3ZGDvEnmNu6sdnuW6kmQM9Rbc3fsQYhWg6cXGCYqe",
      "slot": 355366716
    }
  ],
  "id": 1
}

đź§  Developer Tips

  • Pagination Is Essential To walk an active account’s full history, repeat calls using before and adjust limit.

  • Watch Rate Limits Large or frequent history queries can hit RPC provider limits.

  • Ordering Guaranteed Results always flow from newest to oldest.

  • Use until to Stop Early If you only need transactions up to a known signature, specify until to halt the scan.

  • Context Slot Doesn’t Filter minContextSlot sets the node’s ledger state threshold, not a transaction filter.

  • Full Details via getTransaction This method returns only signatures and metadata; retrieve full transaction info by feeding each signature into getTransaction.


By leveraging getSignaturesForAddress with its pagination and filtering options, you can efficiently access and manage any Solana account’s transaction history.

Last updated