Skip to main content
Room ID: polymarket_holder_metrics
Endpoint: wss://api.struct.to/ws
Rate: 0.025 credits per message
Stream real-time holder counts for positions, conditions (markets), and events, batched per block. Subscribe with at least one identifier array. Only the families you filter on are delivered.
Related guide: Holder metrics tracking tracks holder growth across positions, markets, and events.

Subscribe

At least one identifier array is required. Each array accepts up to 500 entries, and the combined total across all arrays may not exceed 500. You receive only the families whose filter you supply.

Filters

FilterTypeDescription
position_idsstring[]Position token IDs, delivering position holder metrics
condition_idsstring[]Condition IDs, delivering condition holder metrics
event_slugsstring[]Event slugs, delivering event holder metrics

Example

{
  "type": "join_room",
  "payload": {
    "room_id": "polymarket_holder_metrics"
  }
}
{
  "type": "room_message",
  "payload": {
    "room_id": "polymarket_holder_metrics",
    "message": {
      "action": "subscribe",
      "condition_ids": ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]
    }
  }
}

Response

{
  "type": "holder_metrics_stream_subscribe_response",
  "room_id": "polymarket_holder_metrics",
  "data": {
    "position_ids": [],
    "condition_ids": ["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"],
    "event_slugs": [],
    "rejected": [],
    "error": null
  }
}

Events

holder_metrics_position_batch

Holder metrics per position.
{
  "type": "holder_metrics_position_batch",
  "room_id": "polymarket_holder_metrics",
  "block": 68420001,
  "data": [
    {
      "ts": 1743500000,
      "block": 68420001,
      "position_id": "12345678901234567",
      "holder_count": 1820,
      "total_balance": 4250000.0,
      "total_cost_basis": 2870000.0,
      "condition_holder_count": 3100,
      "event_holder_count": 5400
    }
  ]
}
FieldTypeDescription
tsintTimestamp (Unix seconds)
blockintBlock number
position_idstringPosition token ID
holder_countintHolders of this position
total_balancenumberTotal shares held across holders
total_cost_basisnumberTotal cost basis across holders, in USD
condition_holder_countint | nullHolders of the owning condition
event_holder_countint | nullHolders of the owning event

holder_metrics_condition_batch

Holder metrics per condition (market).
{
  "type": "holder_metrics_condition_batch",
  "room_id": "polymarket_holder_metrics",
  "block": 68420001,
  "data": [
    {
      "ts": 1743500000,
      "block": 68420001,
      "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
      "holder_count": 3100
    }
  ]
}
FieldTypeDescription
tsintTimestamp (Unix seconds)
blockintBlock number
condition_idstringCondition ID
holder_countintHolders of this condition

holder_metrics_event_batch

Holder metrics per event.
{
  "type": "holder_metrics_event_batch",
  "room_id": "polymarket_holder_metrics",
  "block": 68420001,
  "data": [
    {
      "ts": 1743500000,
      "block": 68420001,
      "event_slug": "bitcoin-price-markets",
      "holder_count": 5400
    }
  ]
}
FieldTypeDescription
tsintTimestamp (Unix seconds)
blockintBlock number
event_slugstringEvent slug
holder_countintHolders of this event
Last modified on June 13, 2026