> ## 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.

# Execution blocks produced by fee recipient, proposer index, or pubkey

> Retrieve execution-layer blocks attributed to one or more producers. You can filter by fee recipient address (execution coinbase), beacon-chain proposer index, or validator public key. Provide one or more identifiers as a comma-separated list in the `addressIndexOrPubkey` path segment.
You may mix identifiers, but mixing with a non-zero `offset` can skip items because pagination is applied after merging results. Limits: up to 20 fee recipient addresses and up to 100 proposer indices or pubkeys per request. ENS names are supported for addresses.



## OpenAPI

````yaml /api/v1/bundled.yaml get /api/v1/execution/{addressIndexOrPubkey}/produced
openapi: 3.0.4
info:
  title: beaconcha.in API Documentation
  license:
    name: GPL-3.0
    url: https://www.gnu.org/licenses/gpl-3.0.en.html
  description: >-
    > ⚠️ No new features or endpoints will be added to V1. We recommend the [V2
    API](/api/overview) for all new projects. See the [migration
    guide](/api/v1-to-v2-migration).

    ## Introduction

    **Advanced and reliable API for accessing comprehensive Ethereum blockchain
    data.**


    - **Free Usage Policy:** The API is free to use under a fair use policy,
    with rate limits of 10 requests per minute per IP.

    - **Caching:** All responses are cached for 1 minute.

    - **Higher Usage Plans:** For higher usage plans, visit:
    [https://beaconcha.in/pricing](https://beaconcha.in/pricing). An API key is
    required to use these plans.


    ### API Key Usage

    API keys can be obtained at
    [/user/settings](https://beaconcha.in/user/settings) and must be included in
    requests either as a query string parameter or in the request header.


    #### Example: Query String Parameter

    ```bash

    curl https://beaconcha.in/api/v1/slot/1?apikey=<your_key>

    ```


    #### Example: Request Header

    ```bash

    curl -H 'apikey: <your_key>' https://beaconcha.in/api/v1/slot/1

    ```
  contact: {}
  version: '1.1'
servers:
  - url: https://beaconcha.in
    description: Ethereum mainnet
  - url: https://hoodi.beaconcha.in
    description: Hoodi Ethereum testnet
security:
  - ApiKeyAuthQuery: []
  - ApiKeyAuthHeader: []
tags:
  - name: Epoch
    description: Data related to consensus layer epochs
  - name: Slots
    description: Data related to consensus layer slots
  - name: Validators
    description: Data related to consensus layer validators
  - name: Rewards
    description: Data related to validator rewards
  - name: Sync Committees
    description: Data related to sync committees
  - name: Rocketpool
    description: Data related to the rocketpool protocol
  - name: ETH.Store®
    description: Data related to the ETH.Store® metric
  - name: Validator deposits
    description: Data related to execution layer validator deposits
  - name: Blocks
    description: Data related to execution layer blocks
  - name: Gas
    description: Data related to gas prices
  - name: Address
    description: Data related to ethereum addresses
  - name: Network
    description: Network data
  - name: Misc
    description: Miscellaneous data
  - name: User
    description: User data
  - name: Machine Metrics
    description: Submit machine, beacon-node, and validator-client monitoring metrics
paths:
  /api/v1/execution/{addressIndexOrPubkey}/produced:
    get:
      tags:
        - Blocks
      summary: Execution blocks produced by fee recipient, proposer index, or pubkey
      description: >-
        Retrieve execution-layer blocks attributed to one or more producers. You
        can filter by fee recipient address (execution coinbase), beacon-chain
        proposer index, or validator public key. Provide one or more identifiers
        as a comma-separated list in the `addressIndexOrPubkey` path segment.

        You may mix identifiers, but mixing with a non-zero `offset` can skip
        items because pagination is applied after merging results. Limits: up to
        20 fee recipient addresses and up to 100 proposer indices or pubkeys per
        request. ENS names are supported for addresses.
      operationId: listExecutionProducedBlocks
      parameters:
        - name: addressIndexOrPubkey
          in: path
          description: >-
            Comma-separated list of producers to query. Each item may be: - a
            fee recipient address (0x-prefixed, 20-byte hex, or a valid ENS
            name), - a proposer index (non-negative integer), or - a validator
            public key (0x-prefixed, 48-byte BLS pubkey: 96 hex characters).

            Provide multiple items by separating them with commas. A maximum of
            20 addresses and 100 indices/pubkeys is accepted per request.
          required: true
          style: simple
          explode: false
          schema:
            type: array
            items:
              oneOf:
                - $ref: '#/components/schemas/primitives.EthAddress'
                - type: integer
                  minimum: 0
                  description: Proposer index (>= 0)
                - type: string
                  pattern: ^0x[a-fA-F0-9]{96}$
                  description: >-
                    Validator public key (48 bytes; 0x-prefixed hex with 96 hex
                    characters)
          example: >-
            0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97,325,0xa6831544f1e9fb1086b023f0852fe7feb7ed6606bf57c76d26a5dbf0027c125e8f7b76b000d99b676205d7721c1baf81
        - name: offset
          in: query
          description: >-
            Number of items to skip from the start of the merged result set. Use
            0 for the first page.
          required: false
          style: form
          explode: true
          schema:
            type: integer
            minimum: 0
            example: 0
            default: 0
        - name: limit
          in: query
          description: Maximum number of blocks to return. Allowed range is 1 to 100.
          required: false
          style: form
          explode: true
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
            example: 20
        - name: sort
          in: query
          description: Sort order by execution block number.
          required: false
          style: form
          explode: true
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
            example: desc
      responses:
        '200':
          description: >-
            Blocks were retrieved successfully. The `data` array contains one
            item per execution block produced by any of the specified producers,
            sorted according to the `sort` parameter.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/types.ApiResponse'
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/types.ExecutionBlockApiResponse'
        '400':
          description: >-
            The request is invalid (for example, a malformed address/pubkey or
            too many addresses provided).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/types.ApiErrorResponse'
              examples:
                invalidParam:
                  summary: Invalid address, validator index, or pubkey
                  value:
                    status: >-
                      ERROR: invalid address, validator index or pubkey
                      parameter
                    data: null
                tooManyAddresses:
                  summary: Too many addresses
                  value:
                    status: >-
                      ERROR: you are only allowed to query up to max 20
                      addresses
                    data: null
        '500':
          description: An unexpected server error occurred while processing your request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/types.ApiErrorResponse'
              examples:
                serverError:
                  summary: Internal error
                  value:
                    status: 'ERROR: internal server error'
                    data: null
components:
  schemas:
    primitives.EthAddress:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      example: '0xdAC17F958D2ee523a2206206994597C13D831ec7'
    types.ApiResponse:
      type: object
      description: Standard success envelope used by all API endpoints.
      properties:
        status:
          type: string
          description: >-
            HTTP-independent status of the API operation. For successful
            responses this is always "OK".
          enum:
            - OK
        data:
          description: Response payload specific to the endpoint.
          nullable: true
          x-omitempty: true
    types.ExecutionBlockApiResponse:
      type: object
      description: >-
        Overview of an execution-layer block, including rewards, gas, parent
        links, and optional consensus/relay metadata.
      properties:
        blockHash:
          type: string
          description: 0x-prefixed 32-byte Keccak hash of the execution block.
          example: '0x160a5ea46dcbaca7fce7bbeef3a3448197c021af6c3e258150ab017629794678'
        blockNumber:
          type: integer
          description: Execution block number (>= 0).
          example: 23540530
        timestamp:
          type: integer
          description: Block timestamp as Unix time in seconds (UTC).
          example: 1760017151
        blockReward:
          type: integer
          description: >-
            Total block reward attributed to the block in wei (sum of priority
            fees and any MEV reward considered in this API).
          example: 15027635123493132
        blockMevReward:
          type: integer
          description: >-
            MEV payment amount attributed to this block in wei; 0 when no
            relay/bribe data is recorded.
          example: 11268157891595494
        producerReward:
          type: integer
          description: >-
            Reward paid to the fee recipient (coinbase) in wei. Equals
            blockMevReward when present; otherwise equals blockReward.
          example: 11268157891595494
        feeRecipient:
          type: string
          description: >-
            Fee recipient (coinbase) address that received the block’s reward
            (0x-prefixed, 20-byte hex address).
          example: '0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97'
        gasLimit:
          type: integer
          description: Gas limit set for the block.
          example: 44999957
        gasUsed:
          type: integer
          description: Total gas used by all transactions in the block.
          example: 26436568
        baseFee:
          type: integer
          description: EIP-1559 base fee per gas in wei. 0 for pre-London blocks.
          example: 473717334
        txCount:
          type: integer
          description: Number of transactions included in the block.
          example: 235
        internalTxCount:
          type: integer
          description: Number of internal transactions (traces) attributed to the block.
          example: 725
        uncleCount:
          type: integer
          description: >-
            Number of ommers (uncles) referenced by the block. 0 for post-Merge
            PoS blocks.
          example: 0
        parentHash:
          type: string
          description: 0x-prefixed 32-byte Keccak hash of the parent execution block.
          example: '0x57ddc629098d3a47ddf8c2a554c75c4d9ab0a8bd740c1e86b0f1da324a425953'
        uncleHash:
          type: string
          description: 0x-prefixed Keccak hash of the block’s ommers list (ommersHash).
          example: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
        difficulty:
          type: integer
          description: >-
            Difficulty field from the execution header. 0 for PoS blocks,
            non-zero for PoW blocks.
          example: 0
        posConsensus:
          $ref: '#/components/schemas/types.ExecBlockProposer'
          description: Consensus-layer proposer linkage for this execution block.
          nullable: true
        relay:
          $ref: '#/components/schemas/types.RelayDataApiResponse'
          description: MEV relay metadata when the block was delivered via a relay.
          nullable: true
        consensusAlgorithm:
          type: string
          description: >-
            Consensus algorithm in effect for this block: "pos" for
            proof-of-stake (post-Merge) or "pow" for proof-of-work (pre-Merge).
          enum:
            - pos
            - pow
          example: pos
    types.ApiErrorResponse:
      type: object
      description: Standard error envelope returned when a request fails.
      properties:
        status:
          type: string
          description: >-
            Human-readable error indicator and message. The value begins with
            "ERROR:" followed by details.
          example: 'ERROR: <Message>'
        data:
          type: string
          description: Optional additional context for the error. Null in most cases.
          nullable: true
          default: null
    types.ExecBlockProposer:
      type: object
      description: Consensus-layer proposer information for the execution block.
      properties:
        executionBlockNumber:
          type: integer
          description: Execution block number associated with this proposer record.
          example: 23540530
        proposerIndex:
          type: integer
          description: >-
            Index of the beacon chain validator that proposed the corresponding
            block.
          example: 1843949
        slot:
          type: integer
          description: Beacon slot at which the block was proposed.
          example: 12766094
        epoch:
          type: integer
          description: Beacon epoch containing the proposer slot.
          example: 398940
        finalized:
          type: boolean
          description: >-
            Indicates whether the epoch containing this block has been finalized
            on the consensus layer.
          example: false
    types.RelayDataApiResponse:
      type: object
      description: MEV relay metadata associated with an execution block built via a relay.
      properties:
        tag:
          type: string
          description: Identifier of the relay that delivered the block.
          example: ultrasound-relay
        builderPubkey:
          type: string
          description: >-
            0x-prefixed hex-encoded public key of the block builder as reported
            by the relay.
          example: >-
            0xa3523967a7955c0244910f23b7b1fc59636f03bec437286b622815408d51389f7f6cd54617733b93926b7860e1f6afb0
        producerFeeRecipient:
          type: string
          description: >-
            Execution address designated to receive the builder’s fee
            (0x-prefixed, 20-byte hex address).
          example: '0xa27cef8af2b6575903b676e5644657fae96f491f'
  securitySchemes:
    ApiKeyAuthQuery:
      type: apiKey
      in: query
      name: apikey
      description: ''
    ApiKeyAuthHeader:
      type: apiKey
      in: header
      name: apikey
      description: ''

````