curl --request GET \
--url https://api.amberdata.com/blockchains/addresses/{hash}/transactions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.amberdata.com/blockchains/addresses/{hash}/transactions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.amberdata.com/blockchains/addresses/{hash}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.amberdata.com/blockchains/addresses/{hash}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.amberdata.com/blockchains/addresses/{hash}/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.amberdata.com/blockchains/addresses/{hash}/transactions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.amberdata.com/blockchains/addresses/{hash}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"title": "OK",
"description": "Successful request",
"payload": {
"records": [
{
"blockHash": "0x3d7b4a0779ed4a6d1a19b21765355bfc730d61b40738572bbc142b80f20b42cd",
"blockNumber": "25625395",
"confirmations": "694",
"contractAddress": "null",
"cumulativeGasUsed": "6462265",
"decodedTransactionInput": {
"name": "transferPunk",
"signature": "transferPunk(address,uint256)",
"sighash": "0x8b72a2ec",
"args": [
"0xB88F61E6FbdA83fbfffAbE364112137480398018",
"4710"
],
"value": "0"
},
"fee": "109520871298860",
"from": [
{
"address": "0x089f31c6cc14eff1229dd56d015c59cb3c7e6c5a",
"nameNormalized": "CRYPTOPUNKS"
}
],
"gasLimit": "73017",
"gasPrice": "2267935460",
"gasUsed": "48291",
"hash": "0x1e6297457c56afab7850b5881b38b11ac64a85b351b752c8d335d930a81a1347",
"index": 111,
"input": "0x8b72a2ec0...",
"logsBloom": "0x000000...",
"maxFeePerGas": "2394781618",
"maxPriorityFeePerGas": "2000000000",
"nonce": "265",
"publicKey": "",
"r": "0x525d3cf345f681b3aeda8ec9ca1db919b7187f62ad51d2e40a74eef67822314b",
"raw": "",
"root": "",
"s": "0x608bb26ecf389fa15f4ff162e20512eb299991e06ce28ab12fc3d5ad9ddb08f",
"status": "0x1",
"timestamp": "2026-07-27T16:39:23.000Z",
"to": [
{
"address": "0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb",
"nameNormalized": "CRYPTOPUNKS"
}
],
"type": 2,
"v": "1",
"value": "0",
"statusResult": {
"code": "0x1",
"confirmed": true,
"success": true,
"name": "successful"
}
}
]
}
}{
"status": 400,
"title": "BAD REQUEST",
"description": "Request was invalid or cannot be served. See message for details",
"error": true,
"message": "startDate/endDate window exceeds the 90-day limit"
}Transactions - By Wallet Address
Retrieves the confirmed transactions where this address was either the originator or a recipient.
Currently supported on ethereum-mainnet only.
Note that transactions are returned in descending order by default (block number and transaction index), which means the most recent transactions are on page 0, and the oldest transactions are on the last page.
If you intend to traverse all the transactions, it is recommended to specify the flag direction=ascending, which will guarantee that the pagination is stable and will not change with the arrival of new transactions.
Filtering: when blockNumber is supplied it takes precedence over startDate/endDate. A [startDate, endDate) window is capped at 90 days; supplying only one bound fills the other in (missing endDate → now, missing startDate → endDate − 30 days). Supplying neither returns the most recent transactions with no time bound.
Unsupported parameters: from, to, includeLogs, includeTokenTransfers, includePrice and validationMethod are not supported on this endpoint and are rejected with a 400.
curl --request GET \
--url https://api.amberdata.com/blockchains/addresses/{hash}/transactions \
--header 'x-api-key: <api-key>'import requests
url = "https://api.amberdata.com/blockchains/addresses/{hash}/transactions"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.amberdata.com/blockchains/addresses/{hash}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.amberdata.com/blockchains/addresses/{hash}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.amberdata.com/blockchains/addresses/{hash}/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.amberdata.com/blockchains/addresses/{hash}/transactions")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.amberdata.com/blockchains/addresses/{hash}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"title": "OK",
"description": "Successful request",
"payload": {
"records": [
{
"blockHash": "0x3d7b4a0779ed4a6d1a19b21765355bfc730d61b40738572bbc142b80f20b42cd",
"blockNumber": "25625395",
"confirmations": "694",
"contractAddress": "null",
"cumulativeGasUsed": "6462265",
"decodedTransactionInput": {
"name": "transferPunk",
"signature": "transferPunk(address,uint256)",
"sighash": "0x8b72a2ec",
"args": [
"0xB88F61E6FbdA83fbfffAbE364112137480398018",
"4710"
],
"value": "0"
},
"fee": "109520871298860",
"from": [
{
"address": "0x089f31c6cc14eff1229dd56d015c59cb3c7e6c5a",
"nameNormalized": "CRYPTOPUNKS"
}
],
"gasLimit": "73017",
"gasPrice": "2267935460",
"gasUsed": "48291",
"hash": "0x1e6297457c56afab7850b5881b38b11ac64a85b351b752c8d335d930a81a1347",
"index": 111,
"input": "0x8b72a2ec0...",
"logsBloom": "0x000000...",
"maxFeePerGas": "2394781618",
"maxPriorityFeePerGas": "2000000000",
"nonce": "265",
"publicKey": "",
"r": "0x525d3cf345f681b3aeda8ec9ca1db919b7187f62ad51d2e40a74eef67822314b",
"raw": "",
"root": "",
"s": "0x608bb26ecf389fa15f4ff162e20512eb299991e06ce28ab12fc3d5ad9ddb08f",
"status": "0x1",
"timestamp": "2026-07-27T16:39:23.000Z",
"to": [
{
"address": "0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb",
"nameNormalized": "CRYPTOPUNKS"
}
],
"type": 2,
"v": "1",
"value": "0",
"statusResult": {
"code": "0x1",
"confirmed": true,
"success": true,
"name": "successful"
}
}
]
}
}{
"status": 400,
"title": "BAD REQUEST",
"description": "Request was invalid or cannot be served. See message for details",
"error": true,
"message": "startDate/endDate window exceeds the 90-day limit"
}Authorizations
Headers
The id of the blockchain
ethereum-mainnet Path Parameters
address to retrieve transactions for
Query Parameters
The blockchain to query. Only ethereum-mainnet is supported.
ethereum-mainnet Filter by transactions for this block number. Takes precedence over startDate/endDate when supplied.
Filter by transactions which happened at or after this date (inclusive). Accepts RFC3339 (2024-01-01T00:00:00Z), YYYY-MM-DD, or a numeric timestamp in milliseconds/seconds. Ignored when blockNumber is set.
Filter by transactions which happened before this date (exclusive). Accepts RFC3339 (2024-01-01T00:00:00Z), YYYY-MM-DD, or a numeric timestamp in milliseconds/seconds. The [startDate, endDate) window is capped at 90 days. Ignored when blockNumber is set.
Decodes the transaction input via known ABIs and adds a decodedTransactionInput object to each record where the ABI could be resolved.
The order in which to return the results (ascending or descending). By default, records are returned in descending order, so the most recent records are returned first.
ascending, descending The format in which to return the timestamp field: iso and hr return a string, ms and ns return a number.
iso, hr, ms, ns The page number to return.
The number of records per page (maximum 1000)
Was this page helpful?