Skip to main content
GET
cURL
Use this to find wallets on a recent run, then look them up in bulk with Batch traders. The ranking and the P&L figure are Polymarket’s, in Polymarket’s order, so this measures the last 7 or 30 days rather than a wallet’s whole record. For the all-time grade ranking, use Leaderboard.

Parameters

Key response fields

When the cursor expires

A cursor is tied to the limit, the window, and the ranked list it was issued against. If you change any of those, or Polymarket refreshes its list between your requests, the next request answers 400 with error.reason cursor_expired. Discard the cursor, request page 1, and page forward again. A cursor issued before September 22, 2026 carried only a page number. Those answer 400 with error.param set to cursor and no error.reason. Restart from page 1.

When the list is not ready

A 503 with error.reason read_model_warming means the ranking is still being prepared. This is not a rate limit, so do not feed it into a backoff you share with other routes. Wait the number of seconds in Retry-After, or until error.retry_at, and retry this route alone.

Example

What it does not return

  • More than 50 wallets for a window. That is the size of Polymarket’s list.
  • A P&L figure 0xinsider computed. Both trending_pnl_usd and the order are Polymarket’s.
  • A sparkline that adds up to the total. daily_pnl_series[] carries the shape of the run, not its arithmetic.
  • A 500 or an invented ranking when the list is not ready. You get the 503 described above.

Caching

Send the ETag from a response back in an If-None-Match header. If the list has not changed, you get 304 Not Modified with an empty body.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict

Query Parameters

limit
integer
default:20

Polymarket's weekly leaderboard caps the ranked set at 50 wallets; requests above 50 still return at most 50. Out-of-range values are clamped to 1..50.

Required range: 1 <= x <= 50
cursor
string

Opaque pagination cursor from a previous response, bound to its effective limit, window and ranked-board generation. A changed board or request scope returns error.reason=cursor_expired; legacy page-only cursors must restart from page one.

window
enum<string>
default:7d

Trailing window.

Available options:
7d,
30d

Response

Trending wallets list

object
string
required
Allowed value: "list"
data
object[]
required
has_more
boolean
required
meta
object
required
next_cursor
string

Opaque cursor for the next page; absent on the last page.

total
integer

Total ranked rows when the read model exposes a count; may be absent.