curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/validators/apy-roi \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"validator": {
"validator_identifiers": [
1
]
},
"range": {
"evaluation_window": "24h"
},
"chain": "mainnet"
}
'{
"data": {
"execution_layer": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"consensus_layer": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"combined": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"finality": "finalized"
},
"range": {
"slot": {
"start": 1,
"end": 1
},
"epoch": {
"start": 1,
"end": 1
},
"timestamp": {
"start": 1,
"end": 1
}
}
}Returns the annual percentage yield (APY) and return on investment (ROI) for a known collection or group of validators. Known collections are referenced by index, public key, deposit address, or withdrawal address.
For comparing performance across different staking providers, we recommend using the BeaconScore from the Performance Aggregated endpoints instead of APY or ROI, as BeaconScore normalizes for luck and provides a fairer comparison. Note that some residual luck factors outside a validator’s control can still influence BeaconScore, especially over short evaluation windows. See the Residual Luck Factors section in the BeaconScore documentation for details.
Coming Soon: Support for querying arbitrary time ranges using Unix timestamps, epochs, or slots — exclusively for Scale and Enterprise plans.
curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/validators/apy-roi \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"validator": {
"validator_identifiers": [
1
]
},
"range": {
"evaluation_window": "24h"
},
"chain": "mainnet"
}
'{
"data": {
"execution_layer": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"consensus_layer": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"combined": {
"roi": {
"total": 0.15,
"missed": -0.02
},
"apy": {
"total": 2.76,
"missed": -0.5
}
},
"finality": "finalized"
},
"range": {
"slot": {
"start": 1,
"end": 1
},
"epoch": {
"start": 1,
"end": 1
},
"timestamp": {
"start": 1,
"end": 1
}
}
}Documentation Index
Fetch the complete documentation index at: https://docs.beaconcha.in/llms.txt
Use this file to discover all available pages before exploring further.
Free selectors available to all users:
Premium selectors for Scale & Enterprise plans (https://beaconcha.in/pricing):
sub_entity for more specific filtering. Matching is case-insensitive.Note: The set of validators matched by deposit_address and withdrawal selectors is updated once per epoch (~6.4 minutes). Newly deposited validators may take up to one epoch to appear in query results.
Note: The set of validators matched by entity selector is updated once per day.
Show child attributes
Specify a date range to evaluate APY and ROI for that period — ideal for use cases like comparing staking returns across different time horizons. If not provided, defaults to the last 30 days.
Support for querying arbitrary time ranges using Unix timestamps, epochs, or slots will be coming soon, exclusively for Scale and Enterprise plans.
Show child attributes
The Ethereum chain to query.
mainnet, hoodi Successful response.
Response containing apy and roi information of the validators.
Validator performance metrics, expressed both as ROI (Return on Investment) and APY (Annual Percentage Yield).
ROI helps understand raw performance during the evaluation range, while APY allows comparison against annualized benchmarks. Note that APY is an extrapolation and does not reflect future performance.
Show child attributes
The range of data covered by the results, specified in slots, epochs, and Unix timestamps.
Show child attributes
Was this page helpful?