POLYSINK — POLYMARKET INDEXER
EVERY MARKETINDEXED.
Polysink indexes the entire Polymarket universe — on-chain fills, CLOB orderbooks, wallet PnL, and research-grade analytics — into one low-latency REST + WebSocket API.
pnpm add @tenz-app/polysink-sdkPolygon on-chain via Substreams, CLOB trades & books, Gamma metadata
1m · 5m · 15m · 1h · 4h · 1d, continuously aggregated
Global and per-category trader rankings, refreshed continuously
WebSocket market, trade, and firehose feeds with 30s heartbeats
01 — Dataset
What gets indexed
Eight data domains served from a single continuously reconciled store.
Markets & events
GET /v1/marketsThe full catalog with outcomes, tags, and categories, resolved against on-chain state.
Trades
GET /v1/tradesOn-chain fills and CLOB executions in one normalized history — per market, per wallet, or global.
Orderbooks
GET /v1/orderbook/historyLive books for every outcome plus historical snapshots for replaying liquidity.
Wallets
GET /v1/wallets/{address}/statsPositions with cost basis, full history, and all-time PnL for any address.
Leaderboards
GET /v1/leaderboardTop-1000 trader rankings, global and per category, refreshed continuously.
Microstructure
GET /v1/analytics/informed-flowExecution quality, liquidity fragility, and informed flow in 5-minute and daily buckets.
Market matching
POST /v1/markets/matchFree text in, ranked condition IDs out — tweets and headlines resolved to markets.
Candles
GET /v1/markets/{id}/candlesOHLCV from one-minute to daily per outcome token, served from continuous aggregates.
02 — Integration
Typed end to end
A TypeScript SDK generated from the API's Rust models — or go direct over REST and WebSocket.
import { Polysink } from "@tenz-app/polysink-sdk";
const client = new Polysink({ apiKey: process.env.POLYSINK_KEY });
// Search the catalog
const markets = await client.markets.list({
category: "politics",
search: "election",
limit: 25,
});
// Chart-ready candles
const candles = await client.markets.candles(markets[0].condition_id, {
interval: "1h",
});
// Any wallet, fully reconciled
const stats = await client.wallets.stats("0x7ef9…");
console.log(stats.realized_pnl, stats.win_rate);03 — Surface
The API surface
Everything lives under /v1 behind one bearer token.
/v1/marketsList & search marketsPOST/v1/markets/matchFree text → ranked marketsGET/v1/markets/{id}/candlesOHLCV, 1m → 1dGET/v1/markets/{id}/orderbookLive books per outcomeGET/v1/orderbook/historyHistorical book snapshotsGET/v1/wallets/{addr}/statsAll-time wallet PnLGET/v1/leaderboardTop-1000 tradersGET/v1/analytics/informed-flowSmart-money metricsWS/v1/ws/tradesGlobal trade firehoseWS/v1/ws/marketsLive market updatesOne key.
The whole market.
Plans start at $49/month. Sign up, create a key, point your client at api.polysink.io — and you're streaming markets, books, and flow the same day.