Skip to main content

Overview

Rank all public staking entities on Ethereum and reproduce the metrics published in the monthly beaconcha.in leaderboard.
Premium access: entities, apy-roi (with entity selector), and rewards-aggregate (with entity selector) require a Scale or Enterprise plan.
Attribution required: If you display BeaconScore publicly, follow the BeaconScore License and License Materials.
Public labels vs private sets: Entity labels are public mappings. For unlabeled validators or custom groupings, see Private Entity Benchmarking with Dashboards.
Configurable evaluation window: All examples below use 30d, but you can change evaluation_window to 24h, 7d, 30d, or 90d depending on your use case. Use consistent windows across all calls in the same comparison. See Evaluation Windows for guidance.

Why Compare Entities?

Provider Due Diligence

Evaluate operational quality across staking providers before selecting integrations or partners.

Competitive Analysis

Track how entity rankings shift across windows to detect persistent vs. short-lived changes.

Concentration Monitoring

Measure stake concentration using net_share and validator_count.

Reproduce the Leaderboard

Fetch the exact data behind the @beaconcha_in monthly leaderboard posts using the steps below.

Step 1: Fetch Ranked Entities

Retrieve entities sorted by network share (the order used in the leaderboard):
Filtering Unknown: page_size maximum is 10. If Unknown appears in the first page, use the paging.next_cursor from the response to fetch the next page and complete your top-10 named entity list:
For a network-share leaderboard, sort descending by net_share as shown above. See the Entities API reference.

Step 2: Fetch APY / ROI per Entity

Query annualized returns for each entity. Run serially with a 1-second sleep between calls to avoid rate limits:
Use the layer and combined totals. See APY & ROI.
APY and BeaconScore measure different things. BeaconScore is a duty efficiency metric (0-100%): a score of 100% means the validator earned the maximum possible rewards for every assigned duty. APY is a financial return metric expressing annualized yield on staked ETH (e.g., 3%). A validator can have a perfect BeaconScore of 100% and an APY of 3% simultaneously; the two are not comparable on the same scale. Use BeaconScore for operational performance comparison and APY for absolute return reporting. See BeaconScore vs. 3rd Party Metrics.

Step 3: Fetch Missed Rewards per Entity

Query missed reward data per entity. Run serially with a 1-second sleep between calls:
Read the reward breakdown from the Rewards Aggregated API reference. Cast wei strings with int(str(v)) before arithmetic, and divide by 1e18 only when formatting ETH.

Missed Rewards Methodology

inactivity_leak_penalty is a penalty on earned rewards, not a missed opportunity. Exclude it from all missed reward totals.

Step 4: Fetch the Network Baseline

To compute “vs average” deltas, fetch the network-wide baseline over the same window:
Known behavior: This endpoint does not accept an entity filter. It always returns network-wide data regardless of any entity parameter passed. Use rewards-aggregate component ratios to derive per-entity BeaconScore component approximations.
Use the total and component scores as the baseline values. See Network Performance Aggregate.

Step 5: Compute Derived Metrics

Once you have data from all three entity endpoints and the network baseline, compute the leaderboard metrics:

“vs Average” Thresholds

Applied consistently to BeaconScore total, all three components, and APY deltas:

Missed % of Earned Thresholds (lower = better)


Example: Full Leaderboard Script (Python)


Compare Across Time Windows

Run the same query across windows to identify persistent vs. short-lived performance changes:

Best Practices

Filter Unknown

Always exclude entity == "Unknown" before ranking. Unknown validators are unlabeled and may skew concentration metrics.

Interpret APY Carefully

EL APY scales with proposal luck in short windows. Use BeaconScore as the primary efficiency metric (see residual luck factors).

Respect Rate Limits

V1 and V2 API calls share one combined rate limit bucket. Sleep 1 second between serial apy-roi and rewards-aggregate calls. If you receive a 429, read the ratelimit-reset header and wait before retrying.

Store Snapshots

Export ranking snapshots periodically for trend reporting and incident investigation.