Skip to main content

Overview

MEV timing is most useful as a comparison. A single late proposal may be noise, but a sustained difference from the network can reveal deliberate timing behavior, relay latency, or a configuration change. This guide shows two complementary workflows:
  1. Compare an entity’s daily timing trend with the network over the same UTC dates.
  2. Profile your own validator set with a rolling 180-day timing label and histogram.
The entity daily endpoint requires a Scale or Enterprise plan. You can query the validator aggregate with explicit validator identifiers or your dashboard on free plans.

Comparison Strategy

Use the daily network and entity series for like-for-like date comparisons, and use the validator aggregate when its rolling 180-day window matches your question. Report sample size and relay coverage with every result; inspect the distribution when a median could hide mixed behavior or long tails. API references: Network timing, entity timing, and validator aggregate.
Do not average daily medians to create a period median. Medians are not additive. Aggregate the histogram for an approximate period distribution, or use the validator aggregate when its rolling 180-day window matches your question.
The timing bands describe pre-Glamsterdam slots and may change when Glamsterdam restructures slot production with ePBS. Relay timing is also offchain observation data, not independently verifiable onchain. Compare like-for-like protocol eras, report relay-data coverage, and treat missing observations as an uncertainty rather than evidence that no timing game occurred.

Compare an Entity with the Network

Request both daily series with the same timestamp range. The example uses June 2026 and a page size large enough to return all 30 days in one request.

Network Request

Entity Request

Entity and sub-entity names are case-sensitive. Get the canonical spelling from the entities and entity/sub-entities endpoints. Add "sub_entity": "<NAME>" to scope the second request.

Calculate Daily Deltas with Python

Calculate Daily Deltas with JavaScript

This example uses the built-in fetch available in Node.js 18 and later.
Daily rows can have median_slot_offset_ms: null when there are no identified relay winners. The examples skip those rows before calculating deltas.

Profile Your Validator Set

Use the validator aggregate to summarize a validator list, dashboard, dashboard group, withdrawal credential, deposit address, entity, or sub-entity. Currently, the only supported evaluation window is 180d.
The following shortened response illustrates the comparison workflow. See the validator timing aggregate reference.
Use the complete distribution to check whether the median reflects a tight cluster or hides a long aggressive tail.
Create dashboard groups for infrastructure cohorts such as client, region, node, or relay configuration. Query each group_id separately to isolate where a timing shift originates.

Comparison Checklist

Align UTC Dates

Compare daily rows only when their date values match. Do not compare a partial day with a complete day.

Report Sample Size

Always show slots_with_relay_winners or total_count next to a median or percentage.

Inspect the Tail

A healthy median can coexist with aggressive outliers. Review histogram counts beyond 2,600 ms.

Allow for Reprocessing

Exclude the newest three daily buckets from finalized reports because they may still change.