๐ Builder Proposal Slots
Returns the proposals a builder won, newest first, whichever validator proposed them. From the Glamsterdam hard fork on, builders register on the beacon chain and bid to build a slotโs execution payload, the part of the block that carries its transactions. The proposer accepts one bid or builds the payload itself. A proposal is the builderโs when the proposer accepted its bid.
The rows have the same format as v2/ethereum/validators/proposal-slots. Each rowโs validator is the proposer, and its execution_payload.builder_pubkey and execution_payload.builder_execution_address name the builder that won it.
- A proposal matches whatever
execution_payload.payload_statusis. The builder won the slot even when the chain did not include its payload (empty);blockis then null. - Self-built payloads (
execution_payload.self_builtis true), missed slots and orphaned blocks never match. builder_indexselects the builder that holds the index now, with every proposal of its public key.builder_entityselects every builder whose execution address beaconcha.in curated under that name, so one request lists an entityโs proposals.- A selector that matches no builder on the selected
chainreturns404. A registered builder without won proposals in the range returns an empty list, also when the range ends before the fork. - A chain that has not reached the fork returns
404, so mainnet returns404until it forks.
You can combine this endpoint with:
- Reward: v2/ethereum/block/rewards
- Consensus slot information: v2/ethereum/slot
- Execution block information: v2/ethereum/block
- The builder registry: v2/ethereum/builders
- The delivery and settlement record of the builder over a window: v2/ethereum/builders/performance-aggregate
Results can be filtered by a time range.
Note: This endpoint supports only finalized data at this time.
Premium Endpoint: This endpoint requires a Scale or Enterprise plan.
Authorizations
Body
Select builders by one of these options. Every endpoint that uses this selector requires a Scale or Enterprise plan:
- builder_pubkey: One builder, by its public key, as in
execution_payload.builder_pubkey. The best way to follow one builder over time. - builder_index: The builder that holds this index now. To select the builder of a past slot, use that slot's
builder_pubkey. - builder_execution_address: Every builder that withdraws to this execution layer address. Use it for all the builders of one operator.
- builder_entity: Every builder that withdraws to an address that beaconcha.in curated under this name. Optionally include
builder_sub_entity. Matching is case-sensitive.
Note: When a builder exits and withdraws its whole balance, the chain gives its index to the next new builder, so one index can name different builders over time. Every option therefore resolves to builder public keys, and a proposal counts for a builder only from the epoch it took the index until the epoch the next builder took it. The builder registry exists from the Glamsterdam hard fork on. An option that matches no builder returns 404. A builder that matches but has nothing in the result returns an empty list or zero counts, not 404.
- Builder Public Key
- Builder Index
- ๐ Builder Execution Address
- ๐ Builder Entity
The Ethereum chain to query.
mainnet, hoodi Specify a time range using either Unix timestamps or epoch numbers. If left null, the API will query the entire available history of the selected validators.
- Unix Timestamp
- Epoch
- Slot
Cursor value for pagination. See our pagination guide for more details.
The number of items to return per page.
1 <= x <= 10Response
Successful response.
Response containing detailed proposal information of the validators.
The time span actually covered by the returned results โ from the first to the last matching data point โ specified in slots, epochs, and Unix timestamps.
This reflects the data that was found, not the range that was queried. When the response is 200 but no data is found, it falls back to the requested range, or to the full available history if no range was given. Some endpoints answer 404 instead when no data is found.
For arbitrary (custom) time-range queries the queried range is expanded outward to whole UTC days, so the covered range may be wider than requested. As stated above, the reported range still reflects the data that was actually found โ a touched UTC day with no data for the selected validators will not extend it.

