Accounts touched by one block
Open this block in TraceFast →
Every account whose own state — native balance, nonce or code — changed in one block, with what changed, the native balance before and after, and whether the account was created in that block, in address order. Each account appears once per block, whatever it did. New to account state? See accounts on ethereum.org.
GET https://tracefast.xyz/api/v1/chains/1/blocks/{number}/addresses
| Parameter | In | Type | Notes |
|---|---|---|---|
number | path | integer | block height, 0 or more |
limit | query | integer, optional | 1..100, default 25 |
cursor | query | string, optional | nextCursor of the previous page, unchanged |
Access — an API key on the Intelligence 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_block_addresses 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. There are no other parameters — an
unknown one is refused rather than ignored.
What it covers, and what it does not
- An account's own state, not every address the block mentions. An address that only appears in the block's activity without a change to its own balance, nonce or code is not listed. A token recipient is the common case: a token balance lives in the token contract's storage, so receiving a token changes the contract, not the recipient's account.
- Native ETH only.
beforeBalanceWeiandafterBalanceWeiare the account's ETH balance; token balances are in portfolio of an address. - A created account has no "before".
beforeBalanceWeiis absent when the account had no prior state — never0in its place. - Served to the chain head. An empty list means no account changed its
state in the block. A block above the head does not exist yet and
answers
404 not_found; see data freshness.
Response
200 application/json, here for block 25925120 with ?limit=2:
{
"data": {
"blockNumber": 25925120,
"addressCount": 571,
"addresses": [
{
"address": "0x000000000004444c5dc75cb358380d2e3de08a90",
"balanceChanged": true,
"nonceChanged": false,
"codeChanged": false,
"created": false,
"beforeBalanceWei": "48532889754720940802674",
"afterBalanceWei": "48533260914605007691802"
},
{
"address": "0x000000000121d39fc0e48f7aa4fa1fbb819c377c",
"balanceChanged": true,
"nonceChanged": true,
"codeChanged": false,
"created": false,
"beforeBalanceWei": "9632548936220112",
"afterBalanceWei": "9619528124678892"
}
],
"nextCursor": "AVsyNTkyNTEyMCwiMDAwMDAwMDAwMTIxZDM5ZmMwZTQ4ZjdhYTRmYTFmYmI4MTljMzc3YyJdEAnWvzAN2zXLfb6xxzu1lw"
},
"meta": {
"chain": "ethereum",
"timestamp": 1789067462204,
"cached": false,
"asOfBlock": 25925120,
"docs": "https://docs.tracefast.xyz/api/block-addresses"
}
}data
| Field | Meaning |
|---|---|
blockNumber | the block these accounts were touched in |
addressCount | how many accounts the block touched in total, not on this page |
addresses[] | this page, in address order |
nextCursor | cursor for the next page. Absent on the last page |
An account
| Field | Meaning |
|---|---|
address | the account, lowercase |
balanceChanged | true when its native balance changed in the block |
nonceChanged | true when its nonce changed — it sent a transaction, or, for a contract, created one |
codeChanged | true when its code changed — deployed, or set by an EIP-7702 delegation |
created | true when the account was created in this block |
beforeBalanceWei | native balance before the block, wei, as a decimal string. Absent when the account had no prior state |
afterBalanceWei | native balance at the end of the block, wei, as a decimal string |
Pagination
Keyset pagination: pass nextCursor back as cursor, with the same number,
until the response carries no nextCursor. A cursor is valid only for this
method and this block; anything else answers 400 invalid_cursor — restart
from the first page. See pagination.
Errors
| Status | code | When | details |
|---|---|---|---|
| 400 | bad_request | number is not a non-negative integer | reason: block_number_invalid |
| 400 | bad_request | limit outside 1..100 | reason: limit_out_of_range, limit, maxLimit |
| 400 | invalid_cursor | the cursor was not issued for this request | — |
| 404 | not_found | the block is above the chain head — it does not exist yet | — |
| 422 | block_not_available | the block sits in a coverage gap; it exists, ask again later | reason: coverage_gap, coverageGapFromBlock, coverageGapToBlock, maxAvailableBlock |
| 503 | service_unavailable | the block is outside the range that can be read right now, and that range's edge could not be read; retry with backoff | — |
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
- One block — the block's header and totals
- Transactions of one block — the transactions that caused these changes
- Validator withdrawals of one block — balance changes that come from withdrawals, not transactions
- Activity of an address — when one address's own state last changed
- Blocks — the block page in the app
Last updated 22 Oct 2026, 08:06 UTC · verified against TraceFast v1.0.261 · Markdown