---
title: "Get recent market trades"
method: GET
path: "/v4/data/prediction/markets/{id}/trades"
tags: ["Prediction API"]
---

# Get recent market trades

`GET /v4/data/prediction/markets/{id}/trades`

/v4/data/prediction/markets/{id}/trades

**100 credits per API call**

Recent trades feed for a single market. Each row is one fill — outcome side, buy/sell direction, price, size and notional value — with the taker wallet attribution when the upstream exposes it.

**Filtering and pagination**

*   `after` and `before` are ISO-8601 timestamps that define an inclusive time window. They are honoured by Kalshi natively. On Polymarket the upstream `/trades` feed has no time-window filter, so passing `after` or `before` against a Polymarket market returns `400` — set the platform via the path id rather than attempting cross-platform time queries.
*   Pagination is cursor-based. The first call returns a `pagination.cursor`; pass it back verbatim as `?cursor=…` on the next call. Cursors are fingerprint-bound to the time-window filter set.

**Other notes**

*   `taker` is the wallet that crossed the spread on this fill. Populated on Polymarket; `null` on Kalshi (the public trades feed does not expose per-trade wallet attribution there).
*   `txHash` is the on-chain settlement transaction hash where one exists. Populated on Polymarket and `null` on Kalshi.
*   `side` is the outcome side (`yes` / `no`); `direction` is the order side (`buy` / `sell`) — both are surfaced because they answer different questions.

## Path parameters

- `id` string, required

## Query parameters

- `after` string, date-time
- `before` string, date-time
- `cursor` string — Opaque base64-encoded pagination token. Returned in `pagination.cursor` on responses that have more pages. Pass back verbatim as `?cursor=…` to fetch the next page. Cursors are fingerprint-bound to the filter set — modifying any filter between calls invalidates the cursor and returns `400`. The field is omitted from `pagination` on the last page.
- `limit` integer

## Response `200`

OK

- PredictionTradesListResponse — Paginated list of market trades.
  - `data` PredictionTrade[], required
    - `tradeId` string, required — Platform-native trade identifier.
    - `marketId` string, required — Platform-native market identifier.
    - `platform` 'polymarket' | 'kalshi', required — Prediction-market platform identifier.
    - `side` 'yes' | 'no', required — Which outcome of a binary market a row refers to.
    - `direction` 'buy' | 'sell', required — Order side — whether the taker bought or sold the outcome.
    - `price` number, required — Fill price in [0, 1].
    - `size` number, required — Fill size (outcome tokens / contracts).
    - `notionalValue` number, required — Fill notional in the market's quote currency (price × size).
    - `taker` string, nullable, required — Wallet that crossed the spread. Populated on Polymarket; `null` on Kalshi (the public trades feed does not expose per-trade wallet attribution there).
    - `txHash` string, nullable, required — On-chain settlement transaction hash where one exists. Populated on Polymarket; `null` on Kalshi.
    - `timestamp` string, date-time, required — ISO-8601 timestamp the trade settled at.
  - `pagination` PredictionCursorPagination, required — Cursor-based pagination wrapper. The `cursor` field is omitted on the last page; `pageSize` reflects the page size of the call that produced this response.
    - `cursor` string — Opaque base64-encoded pagination token. Returned in `pagination.cursor` on responses that have more pages. Pass back verbatim as `?cursor=…` to fetch the next page. Cursors are fingerprint-bound to the filter set — modifying any filter between calls invalidates the cursor and returns `400`. The field is omitted from `pagination` on the last page.
    - `pageSize` integer, required — Page size of the page that produced this response.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `404` — Market not found on any supported platform.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.dev/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.dev/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tatum/blockchain-data/revisions/8622ee4b8fae/schema)
