Skip to content
TraceFast Docs

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
ParameterInTypeNotes
addresspathstring0x-prefixed, 40 hex characters, any case
limitqueryinteger, optional1..100, default 25
cursorquerystring, optionalnextCursor of the previous page, unchanged
directionquerystring, optionalsent or received. Absent: both, with a transaction the address sent to itself shown once
statusquerystring, optional1 success, 0 failure
fromBlockqueryinteger, optionalinclusive lower block bound
toBlockqueryinteger, optionalinclusive 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.
  • methodName is never a guess. It is present only when the selector is known. When it is not, the field is absent and methodId still carries the selector.
  • An absent status means "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 a fromBlock/toBlock window. 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

FieldMeaning
addressthe address the feed is about, lowercase
transactions[]at most limit rows, newest first
nextCursorpass it back as cursor for the next page. Absent on the last page

A transaction

FieldMeaning
hashthe transaction hash, lowercase
blockNumberthe block the transaction is in
txIndexits position in the block
timestampblock time, Unix seconds
fromwho sent the transaction
tothe recipient. Absent on a contract creation
valueWeivalue moved by the top-level call, in wei, a decimal string
feeWeifee actually paid, in wei, a decimal string. See gas and fees
gasUsedgas used, a decimal string
gasPricethe gas price, a decimal string, when recorded
methodIdthe called function's 4-byte selector. Absent on a plain transfer
methodNamethe function name, when the selector is known. Absent otherwise
noncethe sender's nonce
txTypethe transaction type: 0 legacy, 1 access list, 2 EIP-1559, 3 blob, 4 EIP-7702
inputSizethe size of the call data, in bytes
statusreceipt status: 1 success, 0 failure. Absent — not 0 — when the receipt is not yet recorded
rolesender, receiver or self — this address's part in the transaction
counterpartythe 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": { … } } }

StatuscodeWhendetails
400bad_requesta filter on an address this active, without a narrow enough block windowreason: filter_needs_block_window, filters, rowCount, maxUnboundedRowCount, spanBlocks, maxSpanBlocks
400bad_requestdirection outside sent / receivedreason: direction_invalid, direction
400bad_requeststatus outside 1 / 0reason: status_invalid, status
400bad_requestfromBlock above toBlockreason: block_window_inverted, fromBlock, toBlock
400bad_requestlimit outside 1..100reason: limit_out_of_range, maxLimit: 100
400invalid_cursorthe 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.


Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown