Skip to main content
The Data API is about traders and settlements: wallets, PnL, positions, history and leaderboards derived from on-chain settlement (/trader-analytics/*), and market-wide Polymarket Combos data (/v2/data/combos/*). One credential with analytics.read covers both. For realtime market data, live trades and order books, see Market Data. Older material calls this product the “Trader Data API” or “Analytics API”; it is the same endpoint.
Bravado’s Data API combines on-chain settlement history, FIFO cost-basis accounting and current market prices to serve wallet performance. You can query performance data for your own wallet or any public address, useful for leaderboard analysis, due diligence on traders you want to copy, and year-end tax reporting. The base URL for all analytics endpoints is https://partner-api.bravadotrade.com/trader-analytics.

Authentication

Sign Data API requests with your partner API key, using the same HMAC scheme as the Trade API. Send these headers on every call: Your key needs the analytics.read scope (select the Data API product when creating the key in the Console), and your partner account needs the request’s venue enabled — see Venues below. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset; a 429 includes Retry-After.
No credentials needed for GET /healthz and the free tax-report surface: /traders/{address}/tax-report, /traders/{address}/tax-report/8949, and /traders/{address}/event-graph are public.
Deprecated: Authorization: Bearer <token> with a Bravado-issued static token still works during the key-migration window and will be removed once all partners are migrated. New integrations must sign with partner keys.

Venues

Every Data API request belongs to exactly one venue, and your partner account must have that venue enabled (403 VENUE_NOT_ENABLED otherwise):
All numeric fields in Data API responses, including PnL, volume, and prices, are returned as JSON strings. Always parse them as BigDecimal (or your language’s equivalent arbitrary-precision type). Parsing as a float risks silent rounding errors on large values.

Accounting coverage

Bravado reconstructs wallet cost basis and realized PnL using a share-level FIFO engine. Open positions are marked to market. You can read public wallet analytics without a funded trading account. On Polymarket, processed wallets can also return PMWAS statements, R1 dispositions, performance metrics and R8 reconciliation certificates. A certificate reports internal accounting checks; it is not an independent audit opinion. Full statements depend on wallet processing and can return 503 with available: false while unavailable. Tax reports disclose whether they use PMWAS statements or a serving-engine FIFO fallback. The fallback does not provide the same lot lineage and cash-flow coverage as a full statement. Entity rollups aggregate mapped member wallets; they do not infer arbitrary wallet clusters. Predict.fun supports core wallet analytics. PMWAS statements, tax reports, reconciliation and entity rollups are Polymarket-only today.

Data-only access and onboarding

You can use the Data API with an analytics.read key and no trading permissions. Bravado can arrange evaluation access, venue enablement and the appropriate request allowance directly. Confirm commercial use and redistribution terms during onboarding. Create an account in the Bravado Console, then open Endpoints to configure your product and API keys to manage credentials. Contact the team if your organisation needs additional venue or product access. See API credits for published request costs; exact quotas and historical coverage depend on the product and dataset.

Kalshi market data

With analytics.read and an explicit Kalshi data grant, a Data credential can read native Kalshi market data: current order books, catalogue metadata, public trades and native candles. It can also query captured Kalshi order-book history under /market-data/v1, with an explicit Kalshi read-only data grant. This is a separate, limited captured dataset, not Kalshi trader analytics or a live WebSocket. Discover the available generations and capture intervals before integrating.

Trader intelligence

Beyond leaderboards, use wallet profiles, open and closed positions, trade history and category performance. Polymarket top holders are available through GET /clob-proxy/holders?market={conditionId}; this proxies venue holder data and is not a smart-money score. For similar-wallet discovery, clusters, per-market intelligence or additional style labels, contact us to scope the analysis. These are custom development requests rather than existing general-purpose endpoints.

Key metrics

Realized PnL

FIFO-realized net profit over the full position lifecycle including trades, splits, merges and market resolutions. Fees are already inside proceeds and cost basis (the figure is never reduced by fees a second time). A gain is realized when the market resolves or the position is sold; a later redemption only collects the cash. Splits and merges are correctly excluded from volume inflation.

Unrealized PnL

Open position shares marked to the latest CLOB midpoint prices. Updates in real time as market prices move.

Volume

USDC notional traded, filtered to exclude CTF split, merge, and redeem transactions. This gives you true trading volume, not inflated on-chain throughput.

Win rate

Closed-position stats at the outcome level, a position is a “win” if it closed with positive realized PnL. Calculated independently of position size.

The window parameter

Analytics endpoints that document window accept a ?window= query parameter that controls the rolling lookback period for returned metrics. What the window affects: PnL, volume, and trade counts use daily or hourly rollups that respect the window boundary. Windowed queries are fast because they aggregate pre-computed buckets. What the window does not affect: Fee totals, streak metadata, and drawdown statistics are always computed all-time regardless of the window value. This is by design, these metrics are meaningless when truncated to a short window.
Wallet addresses are matched case-insensitively, and the 0x prefix is optional — a bare 40-hex address, as returned in leaderboard rows, is accepted and treated identically.

Leaderboards

Bravado maintains two live leaderboards ranked by the window you specify:
Returns traders ranked over the selected window. The ranking runs in the database over the complete candidate set on the served column, with a deterministic tie-break, so pages never overlap. Default ranking is total_pnl for window=all and realized_pnl (what was realized inside the window) for windowed boards.
The response carries total (size of the candidate set after min_trades and the bot filter; null only if it could not be counted), has_more (offset + rows < total), and echoes the resolved sort and order.It also carries a totals object — a board-wide aggregate over that same candidate set, for a stat-strip header rather than for paging:
traders always equals total. profitable_traders/unprofitable_traders classify by the sign of total_pnl (realized + current open mark-to-market) — the one figure defined the same way on every window. totals is null only if it could not be computed; it never adds latency, since it’s computed alongside the ranked page rather than after it.

Trader profile

The trader endpoints return comprehensive performance data for a single wallet across all markets.
The response includes: Additional per-wallet endpoints:

Combos data

The same Data API credential also serves market-wide data on Polymarket Combos (multi-leg parlays): every combo settlement on the venue, each combo’s legs mapped to its underlying markets, aggregate stats and a combo trader leaderboard, plus a live settlement stream. These routes live under /v2/data/combos on the same host and cost 1 credit per request like the rest of the product. See the Combos Data API reference. To quote and buy combos, use the Combos API instead.

Perps data

The same Data API credential also serves read-only market data for Polymarket Perps (perpetual futures): funding history and cross-venue funding comparison, open-interest and mark-versus-index basis rollups, long/short account skew and detected liquidations. These routes live under /perps on the same host and cost 1 credit per successful response like the rest of the product. This is market data, not execution — to trade perps, use the Polymarket Perps Trade API instead. See the Perps Data overview.

UMA resolution

The same Data API credential also serves UMA resolution data — how Polymarket markets settle through UMA’s Optimistic Oracle (proposals, disputes and final settlement outcomes). These routes live under /uma on the same host and cost 1 credit per successful response like the rest of the product. They come in two surfaces: The live push stream (/uma/ws) is a separate Market Data surface on the stream.read credential. See the UMA overview.

Tax statements

Bravado generates formal accounting documents for tax reporting and financial reconciliation. Each statement type covers a specific aspect of wallet activity.
Lists every disposition as a row with disposal date, proceeds, cost basis and gain/loss, formatted to mirror IRS Form 8949 for US taxpayers. For wallets in the PMWAS batch each row also carries the acquisition date and the holding-period term (SHORT for positions held ≤ 365 days, LONG for positions held > 365 days). For every other wallet the trading engine records no acquisition date per lot, so date_acquired and term are UNKNOWN (never guessed) and the response says so under disclosure; a combo row whose acquisition date is not recorded is UNKNOWN too. A redemption of a position that already resolved is a cash event, not a disposition: it is reported per year as redemption_cash. The row count is total_rows (X-Total-Rows on the CSV); pages never stand for the whole period.
Itemizes non-trade income received by the wallet: liquidity rewards, maker rebates and other program rewards, with count and fair-market value per kind. For wallets in the PMWAS batch this is attributed to tax years; for every other wallet only the all-time total (income_all_time) is available, per-year income is null (listed in not_computed) and is not included in net_taxable_uusdc.
A point-in-time snapshot of all open positions, share balances, cost bases, mark prices, and unrealized PnL. Useful for year-end Schedule D footnotes.
A chronological log of deposits into and withdrawals from the wallet. Distinguishes between USDC.e and pUSD flows.
Quantitative performance summary:
A machine-readable report of internal reconciliation checks for the processed statement. Read the individual check results and coverage disclosures; the certificate is not a guarantee of complete source history or an independent audit.