Transactions of an address
Open the address's transactions →
The transactions an
address sent or received, newest first. Each row gives the sender, the
recipient, the value, the fee paid, the called function where its selector is
known, the receipt's outcome, and the part this address played: sender,
receiver, or self when it is both.
GET https://tracefast.xyz/api/v1/chains/1/entities/{address}/transactions
| Parameter | In | Type | Notes |
|---|---|---|---|
address | path | string | 0x-prefixed, 40 hex characters, any case |
limit | query | integer, optional | 1..100, default 25 |
cursor | query | string, optional | nextCursor of the previous page, unchanged |
direction | query | string, optional | sent or received. Absent: both, with a transaction the address sent to itself shown once |
status | query | string, optional | 1 success, 0 failure |
fromBlock | query | integer, optional | inclusive lower block bound |
toBlock | query | integer, optional | inclusive upper block bound |
Access — an API key on the Investigation plan or higher (plans), or no key at all: pay per call with x402 at the same path on https://mpp.tracefast.xyz/api/v1, at the price its 402 states. As a tool for AI agents: get_entity_transactions on the MCP server. Stable — see stability.
chains/1 is a literal: the method serves Ethereum mainnet data. Other chain
ids answer 404 chain_not_supported. An unknown parameter is refused rather
than ignored.
What it covers, and what it does not
- Top-level transactions only. A value transfer made by a contract inside a transaction is an internal transfer — see internal transfers of an address. Token movements are in token transfers of an address.
methodNameis never a guess. It is present only when the selector is known. When it is not, the field is absent andmethodIdstill carries the selector.- An absent
statusmeans "unknown", not "failed". It is absent while the receipt is not yet recorded. - Filters on a very active address need a block window. Paging without
filters always works. A filter (
direction,status) searches the address's history, so on an address with a very large history it is answered only inside afromBlock/toBlockwindow. The refusal names the widest window it accepts.
Response
200 application/json, here with ?limit=2:
{
"data": {
"address": "0xf977814e90da44bfa03b6295a0616a897441acec",
"transactions": [
{
"hash": "0xbf887f3e404058ab9eadc99611ccf205cb7f504cf4eeba525bb7f6a5cd4d1901",
"blockNumber": 25923667,
"txIndex": 109,
"timestamp": 1788762275,
"from": "0xf977814e90da44bfa03b6295a0616a897441acec",
"to": "0xeb964a1a6fab73b8c72a0d15c7337fa4804f484d",
"valueWei": "0",
"feeWei": "80218416474675",
"methodId": "0xa9059cbb",
"methodName": "transfer",
"nonce": 20504,
"txType": 2,
"inputSize": 68,
"gasUsed": "39285",
"status": 1,
"role": "sender",
"counterparty": "0xeb964a1a6fab73b8c72a0d15c7337fa4804f484d"
},
{
"hash": "0x6de19336e5f66341c73f7791abc1bb4b5cec69589042a973d7bc71b1c044fc1d",
"blockNumber": 25919378,
"txIndex": 78,
"timestamp": 1788710603,
"from": "0xf977814e90da44bfa03b6295a0616a897441acec",
"to": "0xcdf7028ceab81fa0c6971208e83fa7872994bee5",
"valueWei": "0",
"feeWei": "103943990103990",
"methodId": "0xa9059cbb",
"methodName": "transfer",
"nonce": 20503,
"txType": 2,
"inputSize": 68,
"gasUsed": "39518",
"status": 1,
"role": "sender",
"counterparty": "0xcdf7028ceab81fa0c6971208e83fa7872994bee5"
}
],
"nextCursor": "AVsyNTkxOTM3OCw3OCwxXVx-RR302PzhFSc_qqdxpv8"
},
"meta": {
"chain": "ethereum",
"timestamp": 1789047647761,
"cached": false,
"docs": "https://docs.tracefast.xyz/api/entity-transactions"
}
}data
| Field | Meaning |
|---|---|
address | the address the feed is about, lowercase |
transactions[] | at most limit rows, newest first |
nextCursor | pass it back as cursor for the next page. Absent on the last page |
A transaction
| Field | Meaning |
|---|---|
hash | the transaction hash, lowercase |
blockNumber | the block the transaction is in |
txIndex | its position in the block |
timestamp | block time, Unix seconds |
from | who sent the transaction |
to | the recipient. Absent on a contract creation |
valueWei | value moved by the top-level call, in wei, a decimal string |
feeWei | fee actually paid, in wei, a decimal string. See gas and fees |
gasUsed | gas used, a decimal string |
gasPrice | the gas price, a decimal string, when recorded |
methodId | the called function's 4-byte selector. Absent on a plain transfer |
methodName | the function name, when the selector is known. Absent otherwise |
nonce | the sender's nonce |
txType | the transaction type: 0 legacy, 1 access list, 2 EIP-1559, 3 blob, 4 EIP-7702 |
inputSize | the size of the call data, in bytes |
status | receipt status: 1 success, 0 failure. Absent — not 0 — when the receipt is not yet recorded |
role | sender, receiver or self — this address's part in the transaction |
counterparty | the other party. Absent on a contract creation and on a transaction the address sent to itself |
Pagination
The feed pages by keyset. Pass nextCursor back as cursor, with the same
filters, until nextCursor is absent. A cursor is valid only for this
method, this address and these filters; any other use answers
400 invalid_cursor, and the recovery is to restart from the first page. A
page can hold fewer than limit rows while nextCursor is still present. See
pagination.
Errors
Every error is JSON: { "error": { "code": "...", "message": "...", "details": { … } } }
| Status | code | When | details |
|---|---|---|---|
| 400 | bad_request | a filter on an address this active, without a narrow enough block window | reason: filter_needs_block_window, filters, rowCount, maxUnboundedRowCount, spanBlocks, maxSpanBlocks |
| 400 | bad_request | direction outside sent / received | reason: direction_invalid, direction |
| 400 | bad_request | status outside 1 / 0 | reason: status_invalid, status |
| 400 | bad_request | fromBlock above toBlock | reason: block_window_inverted, fromBlock, toBlock |
| 400 | bad_request | limit outside 1..100 | reason: limit_out_of_range, maxLimit: 100 |
| 400 | invalid_cursor | the cursor is not valid for this request — restart from the first page | — |
When a filter is refused, pass a fromBlock/toBlock window no wider than
details.maxSpanBlocks, or drop the filter. For USDT, ?status=0 without a
window answers: "filtering this address by status needs a block window of at
most 50400 blocks (requested span 25925128). Pass fromBlock/toBlock. Paging without filters
is unaffected." The full refusal has the same shape as on
transfers of a token.
Malformed input, unknown parameters and the key check's 401/403/429 are the same for every method — see conventions and API keys.
Related pages
- Token transfers of an address — the tokens the address moved
- Internal transfers of an address — value moved inside transactions
- One transaction — one transaction in full
- Address counterparties — who the address deals with most
- Activity Feeds — the same feed in the app
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown