> ## Documentation Index
> Fetch the complete documentation index at: https://docs.struct.to/llms.txt
> Use this file to discover all available pages before exploring further.

# Get combo holders by condition

> Retrieve holders for the combo yes/no side position IDs associated with a combo condition ID. The returned position IDs are the values to use as `{position_id}` in `/polymarket/combos/{position_id}/holders`; they are not leg position IDs. Set `include_pnl=true` to include a per-holder `pnl` object for each combo side.



## OpenAPI

````yaml https://api.struct.to/openapi.json get /polymarket/combos/conditions/{condition_id}/holders
openapi: 3.1.0
info:
  title: Polymarket API
  description: >-
    RESTful API for querying Polymarket prediction markets data including
    events, markets, traders, holders, and real-time metrics
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.struct.to/v1
security: []
paths:
  /polymarket/combos/conditions/{condition_id}/holders:
    get:
      tags:
        - Combos
      summary: Get combo holders by condition
      description: >-
        Retrieve holders for the combo yes/no side position IDs associated with
        a combo condition ID. The returned position IDs are the values to use as
        `{position_id}` in `/polymarket/combos/{position_id}/holders`; they are
        not leg position IDs. Set `include_pnl=true` to include a per-holder
        `pnl` object for each combo side.
      operationId: get_combo_condition_holders
      parameters:
        - name: condition_id
          in: path
          description: Combo condition ID (0x-prefixed 32-byte hex)
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: 'Per-position results limit (default: 50, max: 500)'
          required: false
          schema:
            type: integer
            format: int32
        - name: min_shares
          in: query
          description: Minimum combo balance held, in decimal shares
          required: false
          schema:
            type: string
        - name: max_shares
          in: query
          description: Maximum combo balance held, in decimal shares
          required: false
          schema:
            type: string
        - name: include_pnl
          in: query
          description: 'Include nested holder PnL data for each combo side (default: false)'
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Combo holders grouped by associated position ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComboConditionHoldersResponse'
        '400':
          description: Invalid parameter
components:
  schemas:
    ComboConditionHoldersResponse:
      type: object
      required:
        - condition_id
        - position_ids
        - positions
      properties:
        condition_id:
          type: string
          description: Normalized combo condition ID.
        position_ids:
          type: array
          items:
            type: string
          description: >-
            Combo side position IDs associated with this condition
            (`yes_position_id` and `no_position_id`).
        positions:
          type: array
          items:
            $ref: '#/components/schemas/ComboConditionPositionHolders'
          description: Holder pages for each associated combo position.
    ComboConditionPositionHolders:
      type: object
      required:
        - position_id
        - total_holders
        - holders
        - has_more
      properties:
        position_id:
          type: string
          description: >-
            Combo side position ID (`yes_position_id` or `no_position_id`) for
            this side.
        condition_id:
          type:
            - string
            - 'null'
          description: Combo condition ID this side position belongs to.
        outcome_name:
          type:
            - string
            - 'null'
          description: Outcome name (`Yes` or `No`).
        outcome_index:
          type:
            - integer
            - 'null'
          format: int32
          description: Outcome index (`0` = Yes, `1` = No).
        total_holders:
          type: integer
          description: Total unique holders for this combo position.
          minimum: 0
        holders:
          type: array
          items:
            $ref: '#/components/schemas/ComboHolder'
          description: Holders sorted by combo position balance descending.
        has_more:
          type: boolean
          description: Whether this position has more holders available.
        pagination_key:
          type:
            - string
            - 'null'
          description: >-
            Cursor for paging this side via
            `/polymarket/combos/{position_id}/holders`.
    ComboHolder:
      type: object
      required:
        - wallet
        - balance
        - balance_raw
      properties:
        wallet:
          type: string
          description: Holder wallet address.
        balance:
          type: number
          format: double
          description: Decimal combo position balance.
        balance_raw:
          type: string
          description: Raw combo position balance before decimals.
        pnl:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/PositionHolderPnl'
              description: Position-level PnL for this holder on the queried combo side.
    PositionHolderPnl:
      type: object
      description: Position-level PnL for a holder, included when `include_pnl=true`.
      properties:
        total_buys:
          type:
            - integer
            - 'null'
          format: int64
          description: Total buys.
        total_sells:
          type:
            - integer
            - 'null'
          format: int64
          description: Total sells.
        total_shares_bought:
          type:
            - number
            - 'null'
          format: double
          description: Total shares bought.
        total_shares_sold:
          type:
            - number
            - 'null'
          format: double
          description: Total shares sold.
        total_buy_usd:
          type:
            - number
            - 'null'
          format: double
          description: Total buy in USD.
        total_sell_usd:
          type:
            - number
            - 'null'
          format: double
          description: Total sell in USD.
        redemption_usd:
          type:
            - number
            - 'null'
          format: double
          description: Redemption in USD.
        merge_usd:
          type:
            - number
            - 'null'
          format: double
          description: |-
            Merge proceeds (combining outcome tokens back to collateral).
            Counted toward realized PnL alongside sells and redemptions.
        convert_collateral_usd:
          type:
            - number
            - 'null'
          format: double
          description: Convert collateral in USD.
        converted_count:
          type:
            - integer
            - 'null'
          format: int64
          description: Converted count.
        converted_shares_gained:
          type:
            - number
            - 'null'
          format: double
          description: Converted shares gained.
        converted_shares_lost:
          type:
            - number
            - 'null'
          format: double
          description: Converted shares lost.
        avg_entry_price:
          type:
            - number
            - 'null'
          format: double
          description: Average entry price.
        avg_exit_price:
          type:
            - number
            - 'null'
          format: double
          description: Average exit price.
        avg_price:
          type:
            - number
            - 'null'
          format: double
          description: Volume-weighted average trade price across buys + sells.
        realized_pnl_usd:
          type: number
          format: double
          description: Realized PnL in USD.
        total_pnl_usd:
          type: number
          format: double
          description: Total PnL in USD.
        unrealized_pnl_usd:
          type: number
          format: double
          description: Unrealized PnL in USD.
        total_fees:
          type:
            - number
            - 'null'
          format: double
          description: Total fees.
        first_trade_at:
          type:
            - integer
            - 'null'
          format: int64
          description: First trade at timestamp.
        last_trade_at:
          type:
            - integer
            - 'null'
          format: int64
          description: Last trade at timestamp.
        last_traded_price:
          type:
            - number
            - 'null'
          format: double
          description: Last traded price.
        realized_pnl_pct:
          type:
            - number
            - 'null'
          format: double
          description: Realized PnL percent.
        total_pnl_pct:
          type:
            - number
            - 'null'
          format: double
          description: Total PnL percent.
        won:
          type:
            - boolean
            - 'null'
          description: Won.
        redeemable:
          type:
            - boolean
            - 'null'
          description: Redeemable.
        mergeable:
          type:
            - boolean
            - 'null'
          description: Mergeable.

````