getSignaturesForAddress — Solana RPC Method
getSignaturesForAddress returns transaction signatures involving a given address, from newest to oldest. This is the primary method for building a transaction history for any Solana account.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
address | string | Yes | Base-58 encoded account address. |
commitment | string | No | confirmed or finalized. processed is not supported. Default: finalized. |
limit | number | No | Max signatures to return, 1 to 1000. Default: 1000. |
before | string | No | Start searching backwards from this transaction signature (exclusive). For pagination. |
until | string | No | Stop searching when this signature is reached (exclusive). |
minContextSlot | number | No | Minimum slot at which the request can be evaluated. |
Request
curl -X POST https://api.mainnet-beta.solana.com \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSignaturesForAddress",
"params": [
"Vote111111111111111111111111111111111111111",
{"limit": 3}
]
}'
TypeScript (@solana/kit)
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const signatures = await rpc
.getSignaturesForAddress(
address("Vote111111111111111111111111111111111111111"),
{ limit: 10 }
)
.send();
for (const tx of signatures) {
console.log(`${tx.signature} — slot ${tx.slot}, err: ${tx.err ?? "none"}`);
}
Response
{
"jsonrpc": "2.0",
"result": [
{
"signature": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRn...",
"slot": 341199500,
"err": null,
"memo": null,
"blockTime": 1729000000,
"confirmationStatus": "finalized"
}
],
"id": 1
}
| Field | Type | Description |
|---|---|---|
signature | string | Base-58 encoded transaction signature. |
slot | u64 | The slot the transaction was processed in. |
err | object or null | Error if the transaction failed, null if successful. |
memo | string or null | Memo associated with the transaction, if any. |
blockTime | i64 or null | Estimated Unix timestamp of the block. |
confirmationStatus | string | processed, confirmed, or finalized. |
Results are ordered from newest to oldest.
Pagination
To page through results, take the last signature in the response and pass it as before in the next call:
const page1 = await rpc.getSignaturesForAddress(addr, { limit: 100 }).send();
const lastSig = page1[page1.length - 1].signature;
const page2 = await rpc.getSignaturesForAddress(addr, { limit: 100, before: lastSig }).send();
Common errors
- processed not supported — use
confirmedorfinalized. - History too old — non-archival nodes only keep recent transaction history. Old signatures are not available.
Performance
The method scans the node’s transaction index for the given address. Active addresses with millions of transactions may produce slower responses. Use limit to control page size and before/until for efficient pagination.
FAQ
How far back does the transaction history go? On non-archival nodes, typically the last 2-4 days. Archival nodes may retain the full history. The availability depends on the RPC provider.
Does this return failed transactions?
Yes. Failed transactions have a non-null err field. They still consumed the base fee and appear in the history.
Can I search by time range?
Not directly. Use before and until with transaction signatures to define a range. You can find the signature closest to a timestamp by using block data.
What is the memo field?
If the transaction included a Memo program instruction, the memo text appears here. Otherwise it is null.
How do I get the full transaction data?
getSignaturesForAddress returns only metadata. To get the full transaction instructions and data, pass the signature to getTransaction.
Parameters
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
address | string | Yes | Base-58 encoded account address. | — |
commitment | string | No | confirmed or finalized. processed is not supported. | finalized |
limit | number | No | Maximum number of signatures to return (1-1000). | 1000 |
before | string | No | Start searching backwards from this signature (exclusive). | — |
until | string | No | Search until this signature is found (exclusive). | — |
minContextSlot | number | No | Minimum slot at which the request can be evaluated. | — |
Updated: