Chains API
The newest validator deposits on Ethereum
The newest beacon-chain validator deposits accepted on Ethereum (validator public key, amount, withdrawal address, status) and the total number accepted so far.
/api/external/chain-analysis/beacon-deposits/{chain}What it returns
The newest limit beacon-chain validator deposits accepted on Ethereum, newest first: the deposit index, the validator public key, the withdrawal credentials and address, the amount in wei (a decimal string), the status, and the block and transaction that carried it. totalDeposits is every deposit the deposit contract has accepted as of the newest indexed deposit — that index plus one, a count rather than an estimate because the index counts up by one per deposit from 0. Deposits are sparse next to withdrawals and arrive in bursts: about one every four minutes when measured, most of them whole transactions of dozens at once, so this list often spans hours.
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/beacon-deposits/ETH"
| Parameter | Description |
|---|---|
limitquery · integer · optional | How many deposits to return: 1 to 50. Defaults to 10. The ceiling is one source page; a short page returns fewer than asked rather than an error. limit ≤ 35 keeps the answer under 32 KB. |
chainpath · string · required | ETH only. The deposit contract is an Ethereum mainnet contract; 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 |
|---|---|---|
totalDeposits | integer | Every validator deposit accepted as of the newest indexed deposit: that index plus one. The index counts up by one per deposit from 0, so this is a count rather than an estimate. |
deposits | object[] | Newest first, one per deposit index, with no gaps. |
deposits[].index | integer | The deposit index: one per deposit accepted by the deposit contract, counting up from 0 across the whole chain. This list is that index, newest first and with no gaps. |
deposits[].pubkey | string | The validator’s BLS public key. |
deposits[].signature | string | null | The deposit’s BLS signature, or null when not reported. |
deposits[].withdrawalCredentials | string | null | The raw withdrawal-credential bytes, 0x-prefixed. |
deposits[].withdrawalCredentialType | string | null | Derived from the first byte of withdrawalCredentials: bls (0x00), execution (0x01) or compounding (0x02). null for a prefix never observed. |
deposits[].withdrawalAddress | string | null | The execution-layer withdrawal address. null exactly when withdrawalCredentialType is bls — a real "no execution withdrawal address", not missing data. |
deposits[].amountWei | string | The deposit amount in WEI, as a decimal string. Never assume 32 ETH: the newest page measured ran from 7.59 to 1800 ETH. Kept as a string and never pre-divided: at 18 decimals the value routinely exceeds what a JSON number holds exactly. |
deposits[].status | string | null | Served exactly as the source reports it. "pending" and "completed" are the only values observed; the exact point a deposit flips from one to the other was not measured, so this is deliberately a free string rather than a closed enum. |
deposits[].blockNumber | integer | null | The block the deposit transaction was mined in. |
deposits[].blockTimestamp | integer | null | Unix SECONDS the block was mined at. |
deposits[].fromAddress | string | null | The address that sent the deposit transaction. |
deposits[].transactionHash | string | null | The transaction that carried this deposit — one transaction commonly carries dozens, so the same hash repeats down the list. |
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