getSignaturesForAddress

Returns confirmed signatures for transactions involving an address, ordered from newest to oldest. This is the primary method for building transaction history UIs, wallet activity feeds, and account monitoring systems. It supports pagination via before and until parameters and can return up to 1,000 signatures per request. Use getTransaction to fetch full details for each signature.

Parameters

#TypeRequiredDescription
1stringYesBase-58 encoded account address
2objectNoConfiguration object

Configuration object fields:

FieldTypeDescription
commitmentstringCommitment level: confirmed or finalized (default finalized)
limitnumberMaximum number of signatures to return (1-1000, default 1000)
beforestringStart searching backwards from this transaction signature
untilstringSearch until this transaction signature (not inclusive)
minContextSlotnumberMinimum slot at which the request can be evaluated

Response

Returns an array of signature information objects:

FieldTypeDescription
[].signaturestringTransaction signature (base-58)
[].slotu64The slot containing the transaction
[].err`objectnull`
[].memo`stringnull`
[].blockTime`i64null`
[].confirmationStatus`stringnull`

Code Examples

cURL

1curl http://[IP_ADDRESS]:[PORT] -X POST -H "Content-Type: application/json" -d '{
2  "jsonrpc": "2.0",
3  "id": 1,
4  "method": "getSignaturesForAddress",
5  "params": [
6    "Vote111111111111111111111111111111111111111",
7    { "limit": 5, "commitment": "confirmed" }
8  ]
9}'

TypeScript

1const response = await fetch("http://[IP_ADDRESS]:[PORT]", {
2  method: "POST",
3  headers: { "Content-Type": "application/json" },
4  body: JSON.stringify({
5    jsonrpc: "2.0",
6    id: 1,
7    method: "getSignaturesForAddress",
8    params: [
9      "Vote111111111111111111111111111111111111111",
10      { limit: 5, commitment: "confirmed" }
11    ]
12  }),
13});
14const { result } = await response.json();
15result.forEach(s => console.log(s.signature, s.confirmationStatus));

Python

1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4    "jsonrpc": "2.0",
5    "id": 1,
6    "method": "getSignaturesForAddress",
7    "params": [
8        "Vote111111111111111111111111111111111111111",
9        {"limit": 5, "commitment": "confirmed"}
10    ]
11})
12result = response.json()["result"]
13for s in result: print(f"{s['signature'][:20]}... {s['confirmationStatus']}")

Rust

1use reqwest::Client;
2use serde_json::json;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6    let client = Client::new();
7    let res = client.post("http://[IP_ADDRESS]:[PORT]")
8        .json(&json!({
9            "jsonrpc": "2.0",
10            "id": 1,
11            "method": "getSignaturesForAddress",
12            "params": [
13                "Vote111111111111111111111111111111111111111",
14                {"limit": 5, "commitment": "confirmed"}
15            ]
16        }))
17        .send().await?
18        .text().await?;
19    println!("{}", res);
20    Ok(())
21}

Example Response

1{
2  "jsonrpc": "2.0",
3  "result": [
4    {
5      "signature": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW",
6      "slot": 166974442,
7      "err": null,
8      "memo": null,
9      "blockTime": 1681391935,
10      "confirmationStatus": "finalized"
11    }
12  ],
13  "id": 1
14}