> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/polymarket/markets-conditionid-trades>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/polymarket/markets-conditionid-trades.mdx>

---

# Polymarket Market Trades API

Every public fill in one market, newest first, with side, price, shares and trader.

`GET /v1/polymarket/markets/{conditionId}/trades` returns `data.trades`, newest first. Each row has `transactionHash`, `at`, `side` (`BUY` or `SELL`), `price`, `shares`, `outcome`, `outcomeIndex`, `tokenId`, `conditionId`, a `market` object and a `trader` object with `wallet`, `name`, `pseudonym` and `image`.

Filters are `side`, `minSize` (US dollars), `from` and `to` (unix seconds), plus `limit` and `cursor`. `limit` is 1 to 1000 and defaults to 100. A market that exists with no trades yet returns a found answer with an empty list. An unknown condition id returns `not_found`.

## Request

- **Endpoint:** `GET /v1/polymarket/markets/{conditionId}/trades`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by condition id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/polymarket/markets/conditionid/trades/get)
- **Platform page:** [/platforms/polymarket](https://www.socialfetch.dev/platforms/polymarket)

## FAQ

### How do I page through trades?

Read data.page.nextCursor and pass it as cursor with the same filters. Newest first means a cursor walk moves backwards in time. Stop when data.page.hasMore is false.

### What does minSize filter on?

The dollar value of the trade, not the number of shares. A trade of 500 shares at 0.10 passes minSize=40. Combine it with from and to to focus on a window.

### Are these fills or aggregated candles?

These are individual public fills, each with a transaction hash. For aggregated price points use the price history route. For a whole market's activity, this is the most granular route.

### What does lookupStatus mean on this route?

found means the object or list was returned. not_found means no matching object exists. HTTP 200 only means the request finished, so branch on data.lookupStatus before storing a row.

### How much does this route cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
