Skip to main content
Returns Polymarket activity on Polygon, newest first: trade fills, plus splits, merges, and redeems. Each row is one side of one event, with the wallet, the outcome token, the price, the size in shares and USDC, and, on maker rows, the wallet on the other side. Use it to show a trader’s history, follow the trades in one market, or watch for large fills.

Parameters

Every parameter is optional, but a request must be narrow enough to answer quickly. Send at least one of:
  • address
  • token_id
  • start_block and end_block, at most 300,000 blocks apart
  • start_time and end_time, at most 7 days (604,800 seconds) apart
A request with none of these returns 400 MISSING_SELECTIVE_FILTER, with one exception. A request with no parameters except limit, set to 100 or less, returns the newest activity across all of Polymarket. That form returns one page only: its next_cursor can’t be followed, so add a filter to page further.
string
Only return activity by this wallet: 0x followed by 40 hex characters, in any case.
string
Comma-separated outcome token IDs. Only return activity in these tokens.
string
Comma-separated event types, such as TRADE. Values are case-sensitive and match event_type in the response.
string
BUY or SELL. Case-sensitive.
string
maker or taker. Case-sensitive.
string
Only return activity at or after this time, as an RFC 3339 timestamp such as 2026-10-01T00:00:00Z or as Unix seconds.
string
Only return activity at or before this time, in the same formats as start_time.
integer
Only return activity at or after this Polygon block. Can’t be combined with start_time or end_time. Mixing the two returns 422 CONFLICTING_FILTERS.
integer
Only return activity at or before this Polygon block.
number
Only return rows whose amount_usdc is at least this value.
string
default:"block_desc"
block_desc, the only order: newest block first.
integer
default:"100"
Rows per page, up to 1000. See pagination.
string
The next_cursor from a previous response.

Response

object[]
One entry per side of each event, newest first by block_number.
integer
The page size used for this response.
string | null
Pass it as cursor to get the next page. null on the last page.

How the data behaves

  • One trade, several rows. A fill appears once for each side. The taker’s row and each maker’s row share a transaction_hash and token_id.
  • Amounts are plain numbers. price, amount_shares, amount_usdc, and fee are JSON numbers already in shares and USDC, and amount_usdc / amount_shares equals price. Positions and Balances are different: they return strings in raw units of 10^6.
  • Timestamps are Unix seconds. block_timestamp is an integer, not an RFC 3339 string as in the wallet feeds.
  • Recent results can change. Responses for an open window carry Cache-Control: public, max-age=2. A request with end_time or end_block carries public, max-age=300.

Errors

This endpoint returns the same errors as the other feeds. These are specific to it:

Billing

With an API key, each row returned is one compute unit, at $10 per million. An empty page is free. With x402, each request costs 10 atomic USDC ($0.00001), however many rows it returns. See Feeds pricing.

Example

Get the two most recent rows for a wallet:
The response has this shape. The values are illustrative, and hashes and IDs are shortened: