Prediction markets API

Prediction trader markets brief: a trader's results per market

At most 20 markets with volume, PnL and per-outcome position and result.

GET/api/external/prediction/prediction-trader-markets-brief/{id}

What it returns

The brief of prediction-trader-markets; prefer it unless you need each outcome's fills and volumes. The same trader, ranking and paging. It lists the page's first 20 rows in the ranking, each with every market-level field prediction-trader-markets gives, and per outcome the shares held, entry and current price, realized and unrealized PnL and result. Page with offset as the full endpoint does; a limit above 20 still lists 20, and rowCount says how many the page held.

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-trader-markets-brief/<id>"
Parameters
ParameterDescription
sort_by

query · string · optional

Which figure to rank the trader's markets by. Defaults to USD volume.volumeUsdrealizedPnlUsdtradeslastTradeTimestampprofitPerTradeUsd
sort_type

query · string · optional

Sort direction. Defaults to descending.ASCDESC
limit

query · integer · optional

How many rows to return. Defaults to 20; this endpoint caps it at 100.
offset

query · integer · optional

0-based row offset, for paging through the ranking. At most 1000000.
id

path · string · required

A prediction-market trader id, e.g. "<walletAddress>:Polymarket", as traderId in prediction-trades and prediction-market-traders rows — not a bare wallet address, and not scoped to any chain this API otherwise supports.

Response fields

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

Response fields of Prediction trader markets brief: a trader's results per market
FieldTypeDescription
rowCountintegerRows on the page, up to limit; a page shorter than limit is the last one. Only the first 20 are listed.
itemsobject[]The page's first 20 rows, in its ranking.
items[].marketIdstring | nullThe market's id, as prediction-market and prediction-market-traders take it.
items[].questionstring | nullThe market's question.
items[].labelstring | nullThe market's short name inside its event, e.g. 25 bps decrease. Null when it has none.
items[].eventIdstring | nullThe event the market belongs to, as prediction-event takes it.
items[].eventLabelstring | nullThe event's name.
items[].statusstring | nullThe market's status, e.g. OPEN, RESOLVED. Open set: other values can appear.
items[].closesAtnumber | nullWhen the market closes to trading, Unix seconds.
items[].resolvedAtnumber | nullWhen the market resolved, Unix seconds. Null while it has not.
items[].hasOpenPositionboolean | nullWhether the trader still holds shares on this market.
items[].realizedPnlUsdnumber | nullThe trader's realized PnL on this market, USD. A real 0 is possible.
items[].unrealizedPnlUsdnumber | nullUnrealized PnL on the open position, USD.
items[].currentPositionValueUsdnumber | nullWhat the shares held now are worth, USD.
items[].volumeUsdnumber | nullUSD the trader traded on this market.
items[].volumeSharesnumber | nullShares traded, summed across outcomes.
items[].costBasisUsdnumber | nullWhat the shares held now cost, USD.
items[].sharesHeldnumber | nullShares held now, summed across outcomes — outcomes has the position per outcome.
items[].buysnumber | nullNumber of buy fills.
items[].sellsnumber | nullNumber of sell fills.
items[].tradesnumber | nullNumber of fills, buys plus sells.
items[].pnlPerVolumenumber | nullRealized PnL divided by USD volume, as a fraction (0.0021 is 0.21%).
items[].profitPerTradeUsdnumber | nullRealized PnL divided by trades, USD.
items[].firstTradeTimestampnumber | nullUnix seconds.
items[].lastTradeTimestampnumber | nullUnix seconds.
items[].outcomesobject[]At most one entry per outcome, outcome 0 first (e.g. Yes then No). An outcome with no record is left out, so read label, not the position.
items[].outcomes[].labelstring | nulle.g. Yes.
items[].outcomes[].isWinningOutcomeboolean | nullWhether this outcome won, once the market has resolved. Null while it is open, and for a market that ended any other way.
items[].outcomes[].sharesHeldnumber | nullShares of this outcome held now.
items[].outcomes[].avgEntryPriceUsdnumber | nullAverage price paid per share of the shares held now, 0 to 1. Null when none are held.
items[].outcomes[].currentPriceUsdnumber | nullThe outcome's current price, 0 to 1. Null once the market has resolved.
items[].outcomes[].realizedPnlUsdnumber | null
items[].outcomes[].unrealizedPnlUsdnumber | null
items[].outcomes[].pnlStatusstring | nullThe trader's result on this outcome, e.g. WIN, NEUTRAL — WIN is possible on the losing outcome when it was sold at a profit. Open set: new values can appear.

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