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.
Polygon on-chain via Substreams, CLOB trades & books, Gamma metadata
1m · 5m · 15m · 1h · 4h · 1d, continuously aggregated
Global and per-category leaderboards, refreshed hourly
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.
02Trades
GET /v1/tradesOn-chain fills and CLOB executions in one normalized history — per market, per wallet, or global.
03Orderbooks
GET /v1/orderbook/historyLive books for every outcome plus historical snapshots for replaying liquidity.
04Wallets
GET /v1/wallets/{address}/statsPositions with cost basis, full history, and all-time PnL for any address.
05Leaderboards
GET /v1/leaderboardTop-1000 trader rankings, global and per category, refreshed hourly.
06Microstructure
GET /v1/analytics/informed-flowExecution quality, liquidity fragility, and informed flow in 5-minute and daily buckets.
07Market matching
POST /v1/markets/matchPro-tier free text in, ranked condition IDs out — tweets and headlines resolved to markets.
08Candles
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,
baseUrl: "https://api.polysink.net",
wsBaseUrl: "wss://api.polysink.net",
});
// 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/matchPro-only 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/tradesPaid global trade firehoseWS/v1/ws/marketsLive market updatesOne key.
The whole market.
Start free, then scale from $25/month. Sign up, create a key, point your client at api.polysink.net — and you're streaming markets, books, and flow the same day.