Skip to main content

Overview

Block-level MEV analysis answers two different questions:
  1. What was the outcome? The block timing endpoint summarizes the selected bid and the best alternatives that arrived later.
  2. What did the proposer have available? The bid endpoint returns every recorded relay bid in arrival order for research and auditing.
The timing summary is available to all API plans. The full bid ladder requires a Scale or Enterprise plan.
The bid ladder is collected from offchain relay APIs and streams. Relay-reported arrival times, identities, and bids cannot be independently verified from onchain data, and missing or inconsistent relay observations can make the recorded ladder incomplete. Verify onchain fields such as the included block hash separately.

Step 1: Fetch the Timing Outcome

Resolve a block by execution-layer block number, or use the latest or finalized view. A recent latest block will usually return pending because per-slot MEV aggregates lag the chain head by about 4 hours.
An identified relay winner produces a response like this:
This is an illustrative response. Bid values, relay names, counts, and builder keys depend on the selected block.

Interpret the Outcome

See the block timing API reference. In this workflow, compare the included winner with the earliest better bid and the best later bid to distinguish the minimum additional wait from the maximum later opportunity observed.
missed_value is hindsight, not guaranteed revenue. The proposer could not know which future bid would be best, and waiting for it would have increased propagation and orphan risk.

For non-classified outcomes, follow the status-specific behavior in the API reference. Retry provisional results, and do not reinterpret unknown coverage as a non-MEV outcome.

Step 2: Fetch the Bid Ladder

The full bid ladder is ordered by arrival time and can contain many thousands of rows. Filter to the timing window you need, request up to 200 bids per page, and follow paging.next_cursor until it is empty.
See the block MEV bids API reference.

Audit the Alternatives with Python

This script fetches the summary, retrieves every later bid, and independently checks the earliest better and best later values. It keeps wei as integers until formatting the final ETH amounts.

Audit the Alternatives with JavaScript

This Node.js 18+ example uses BigInt so bid values remain exact.
Relay observations can contain duplicate economic bids from different sources or relays. The timing summary uses beaconcha.in’s canonical aggregation. Treat the raw ladder as offchain observational audit data, not as a complete or independently verifiable record and not as a drop-in replacement for the summary fields.

Best Practices

Start with the Summary

Use block/mev-timing first. Fetch the full ladder only when the outcome needs deeper investigation.

Filter Before Paging

Restrict slot_offset_ms_range to the relevant interval to avoid downloading an unnecessarily large ladder.

Preserve Wei Exactly

Parse values with Python integers, Decimal, JavaScript BigInt, or another arbitrary-precision type.

Respect Readiness

Retry pending summaries and ready: false ladders after the roughly four-hour processing lag.