Skip to main content
Every distinct builder that has tagged at least one v2 fill, ranked by cumulative notional USDC. This is v2-exclusive — v2 is the first Polymarket exchange to carry a builder field on every order. For each builder you get the total fills, notional traded, fees collected on attributed fills, and average fill size.

Request

GET /clobv2/builders

Authentication

Paid tier required. See /clobv2/trades for auth formats.

Query parameters

ParameterTypeRequiredDescription
start / start_timeintegerNoUnix seconds — only count fills at or after this time.
end / end_timeintegerNoUnix seconds — only count fills at or before this time.
limitintegerNoMax builders returned (1-500, default 50).

Parameter validation

  • Timestamps: non-negative i64.
  • limit: 1-500.
Bad input → 400 Bad Request.

Response

{
  "count": 3,
  "source": "onchain-v2",
  "builders": [
    {
      "builder": "0x950f0672f032daa0ae4e0f94920cf6fa567cc597685622a609d97c872190d6d4",
      "fills": 34,
      "notional_usdc": "4751.20043600000000000000",
      "fee_collected_usdc": "2.603250000000000000000000",
      "avg_fill_usdc": "139.74118929411764705882"
    },
    {
      "builder": "0xa08e0a8aa56078aae802c7c5e0832b9f56c697603ac8e68e0c1acc895746c569",
      "fills": 6,
      "notional_usdc": "45.0000000000000000",
      "fee_collected_usdc": "0.000000000000000000000000",
      "avg_fill_usdc": "7.5000000000000000"
    }
  ]
}

Response fields

FieldTypeDescription
countintegerNumber of builders returned.
sourcestringAlways "onchain-v2".
builders[].builderstring32-byte builder tag. Always non-zero — the zero sentinel (0x000…000) is filtered out because it means “no builder”.
builders[].fillsintegerNumber of fills attributed to this builder.
builders[].notional_usdcstring (numeric)Cumulative USDC notional of attributed fills (from the maker side of each fill).
builders[].fee_collected_usdcstring (numeric)Total protocol fees paid on the attributed fills. This is NOT the builder’s rev share — builder rev share is paid off-chain weekly, not per-fill, and is a separate number.
builders[].avg_fill_usdcstring (numeric)notional_usdc / fills.

Rate-limit headers

Standard: x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset.

Examples

# Top 50 builders all-time
curl "https://api.polynode.dev/clobv2/builders" \
  -H "x-api-key: pn_live_..."

# Last 24 hours
curl "https://api.polynode.dev/clobv2/builders?start=$(( $(date +%s) - 86400 ))&end=$(date +%s)" \
  -H "x-api-key: pn_live_..."

# Top 5
curl "https://api.polynode.dev/clobv2/builders?limit=5" \
  -H "x-api-key: pn_live_..."

Error responses

StatusBodyWhen
400{"error": "invalid integer limit ..."} or {"error": "invalid timestamp ..."}Bad limit or timestamp.
401{"error": "missing API key ..."}No key or bad key.
402{"error": "paid plan required ..."}Free tier.
429{"error": "rate limit exceeded", "reset_at": <unix>}Rate limit hit.
5xx{"error": "temporary_data_provider_error"}Temporary data provider issue. Retry with backoff.

Notes

  • Builders are 32-byte tags stored on every v2 order; pull specific builder values from this endpoint and then filter /clobv2/trades?builder=... to see their individual fills.
  • Sorted by notional_usdc DESC. limit applies after sort.
  • fee_collected_usdc is the protocol fee that the matched orders paid at settlement time — not the builder’s rev share. Builder rev shares are paid off-chain on a weekly cadence and are not derivable from on-chain data alone.
  • The zero-address builder tag (0x0000…0000) means the order was submitted without a builder attribution, and is excluded from this leaderboard. Count it via /clobv2/trades?builder=0x0000…0000 if you need to measure the unattributed share.
  • Time filtering is inclusive on both ends.