Skip to main content
GET
/
polymarket
/
holders
/
positions
/
{position_id}
Get position holders
curl --request GET \
  --url https://api.struct.to/v1/polymarket/holders/positions/{position_id}
{
  "position_id": "<string>",
  "total_holders": 123,
  "holders": [
    {
      "trader": {
        "address": "<string>",
        "name": "<string>",
        "pseudonym": "<string>",
        "profile_image": "<string>",
        "x_username": "<string>",
        "verified_badge": true
      },
      "shares": "<string>",
      "shares_usd": "<string>",
      "usd_balance": "<string>",
      "pnl": {
        "buy_usd": 123,
        "sell_usd": 123,
        "avg_entry_price": 123,
        "avg_exit_price": 123,
        "total_buys": 123,
        "total_sells": 123,
        "total_fees": 123,
        "first_trade_at": 123,
        "last_trade_at": 123
      }
    }
  ],
  "condition_id": "<string>",
  "outcome_name": "<string>",
  "outcome_index": 123,
  "price": 123
}

Path Parameters

position_id
string
required

Position ID (ERC1155 token ID)

Query Parameters

limit
integer<int32>

Results limit (default: 10, max: 100)

pagination_key
string

Cursor-based pagination key

min_shares
string

Minimum shares held (decimal string)

max_shares
string

Maximum shares held (decimal string)

ai
boolean

Return truncated response optimized for AI consumers (default: false)

Response

Position holders (sorted by shares DESC). Each holder has pnl: PositionHolderPnl with outcome-specific trading stats. Response includes pagination: { has_more, pagination_key } for cursor-based pagination.

Response for position (position_id) holders endpoint

position_id
string
required

Position ID (ERC1155 token ID)

total_holders
integer<int64>
required

Total holders count from holder_stats

holders
object[]
required

Top holders

condition_id
string | null

Condition ID this position belongs to

outcome_name
string | null

Outcome name

outcome_index
integer<int32> | null

Outcome index

price
number<double> | null

Current price

Last modified on March 17, 2026