Chains API
A block's validator withdrawals
The beacon-chain withdrawals one named Ethereum block paid out: which validators, to which addresses and how much. An empty list for a block that paid none, null for a block that does not exist.
/api/external/chain-analysis/block-withdrawals/{chain}What it returns
The beacon-chain withdrawals ONE Ethereum block paid out, in payload order: the withdrawal index, the validator it came from, the address credited and the amount in wei (a decimal string). A block's withdrawals are part of its payload rather than its transaction list, so they do not appear among its transactions and pay no gas. A block carries at most sixteen of them, and most are small automatic reward skims — a 32 ETH-sized amount is usually a validator exiting. withdrawals is a real empty array for a block that paid none (every block before the Shapella fork of April 2023, and any block after it whose withdrawal queue was empty) and null for a block the chain does not have, whether because it has not been produced yet or because it never will be.
Chains
- Ethereum ETH
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/chain-analysis/block-withdrawals/ETH?blockNumber=<blockNumber>"
| Parameter | Description |
|---|---|
blockNumberquery · integer · required | The block number to read, on the chain named in the path. |
chainpath · string · required | ETH only. Validator withdrawals are an Ethereum consensus-layer event; every other chain returns 400. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
blockNumber | integer | The block number asked about. |
withdrawals | object[] | null | In payload order, index ascending. A real empty array for a block that paid none; null only when the chain has no such block. |
withdrawals[].index | integer | The withdrawal index: it counts up by one per withdrawal across the whole chain from 0, so it is a position in the chain's withdrawal history, not a position in this block. |
withdrawals[].validatorIndex | integer | null | The validator the balance was withdrawn from. |
withdrawals[].receiver | string | null | The execution-layer address credited, lower-cased. |
withdrawals[].amountWei | string | null | The amount credited, in wei, as a decimal string (never Number() it). |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key