Prediction markets API

Newest trades across every prediction market

The live, cross-venue tape: every prediction-market trade as it fills, newest first, optionally narrowed to one venue.

GET/api/external/prediction/prediction-trades-recent

What it returns

Every prediction-market trade, polymarket and kalshi interleaved by time, newest first — the whole live feed, not one market's tape (that is prediction-trades, keyed on one market id). There is no market or trader filter, only exchange. Only the HEAD of the feed is reachable: there is no cursor or offset, because the source has none that actually pages — a caller who needs the trades AFTER what one response holds has no way to reach them today. marketTitle and eventTitle are resolved from this page's own side-loaded directories and are null when a trade's market or event did not appear there, which is most of them. The trader address, trader username, transaction hash, and event id, slug and image are populated on polymarket only; the yes/no prices (plain, as dollars, and fixed-point), the fixed-point quantity, and the fill count are populated on kalshi only — null on the other venue, never a fabricated zero or empty string.

Chains

This endpoint is not tied to a chain: it takes no chain in its request.

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/prediction/prediction-trades-recent"
Parameters
ParameterDescription
limit

query · integer · optional

How many rows to return, after the exchange filter. Defaults to 50; at most 1000 — the source's own page ceiling.
exchange

query · string · optional

Keep only one venue's trades, e.g. "polymarket" or "kalshi". Case-insensitive. A venue with no matching trades on the current page answers an empty list.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Newest trades across every prediction market
FieldTypeDescription
rowsobject[]Newest first, after the exchange filter and then limit.
rows[].exchangestring | nullThe venue that filled this trade, e.g. polymarket or kalshi. Open set: new venues can appear.
rows[].idstring | nullThis trade's id on its venue.
rows[].marketIdstring | nullThe market traded, in its venue's own id space.
rows[].timestampnumber | nullUnix seconds, when the trade filled.
rows[].sidestring | nullThe side filled, e.g. yes, no, sell. Open set: new values can appear.
rows[].pricenumber | nullPrice per share/contract, 0 to 1.
rows[].quantitynumber | nullShares/contracts traded.
rows[].outcomeIndexnumber | nullWhich outcome of the market this trade is on (0-indexed).
rows[].outcomeLabelstring | nullThe outcome traded, e.g. Yes, MOUZ.
rows[].groupItemTitlestring | nullThe sub-market label inside a multi-outcome event, e.g. "75+", "Tie". Null when the market has none.
rows[].marketTitlestring | nullThe market's title, resolved from this page's own side-loaded market directory. Null when this trade's market did not appear in it.
rows[].eventTitlestring | nullThe event's title grouping this market, when known. Null when it cannot be resolved.
rows[].traderAddressstring | nullThe trader's wallet address. Populated on polymarket only; null elsewhere.
rows[].traderUsernamestring | nullThe trader's chosen display name, when they set one. Populated on polymarket only; null elsewhere, including a polymarket trader who set none.
rows[].txHashstring | nullThe on-chain transaction hash. Populated on polymarket only; null elsewhere.
rows[].eventIdstring | nullThe event id this trade's market belongs to. Populated on polymarket only; null elsewhere.
rows[].eventSlugstring | nullThe event's URL slug. Populated on polymarket only; null elsewhere.
rows[].imagestring | nullAn image representing the market or event. Populated on polymarket only; null elsewhere.
rows[].yesPricenumber | nullThe Yes side's implied price, 0 to 1. Populated on kalshi only; null elsewhere.
rows[].noPricenumber | nullThe No side's implied price, 0 to 1. Populated on kalshi only; null elsewhere.
rows[].yesPriceDollarsstring | nullyesPrice as a decimal-string dollar amount. Populated on kalshi only; null elsewhere.
rows[].noPriceDollarsstring | nullnoPrice as a decimal-string dollar amount. Populated on kalshi only; null elsewhere.
rows[].yesPriceE6number | nullyesPrice scaled by 1e6 (fixed-point). Populated on kalshi only; null elsewhere.
rows[].quantityE2number | nullquantity scaled by 1e2 (fixed-point). Populated on kalshi only; null elsewhere.
rows[].countFpstring | nullThe fill count, as this venue's own fixed-point decimal string. Populated on kalshi only; null elsewhere.

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key