Skip to main content

Predict.fun API

Predict.fun is a prediction market on BNB Smart Chain. It runs the same contract design as Polymarket v1: a CTF exchange, Gnosis conditional tokens, a neg-risk adapter and a UMA-style question adapter. Bitquery decodes it into the same PredictionTrades, PredictionManagements and PredictionSettlements cubes used for Polymarket, so the queries below work with EVM(network: bsc).

Network: BSC (network: bsc). Part of the Prediction Market API lifecycle (Management → Trades → Settlement).

Data coverage

predict.fun data on BSC is available from 22 Oct 2026 in the real-time dataset. Historical (archive) data is not available yet, so dataset: archive returns an error for these cubes on BSC.

What is different from Polymarket​

  • Collateral is BSC USDT (0x55d398326f99059ff775485246999027b3197955) with 18 decimals, not USDC.
  • Marketplace.ProtocolName is predict.fun and ProtocolFamily is Gnosis_CTF.
  • Yield-bearing exchanges keep USDT in Venus. Their trades have ProtocolVersion 1-yield. Standard exchanges have 1.
  • Question.MarketId is empty. Use Question.Id or ConditionId to identify a market.
  • Short crypto markets. predict.fun runs 5-minute and 15-minute Up/Down markets. Their titles look like price round: BTC up or down, 5m from 2026-10-26 13:45:00Z.

Exchange contracts​

Trades come from four exchange contracts (Trade.Prediction.Marketplace.SmartContract):

Exchange contractProtocolVersion
0x8bc070bedab741406f4b1eb65a72bee27894b6891
0x365fb81bd4a24d6303cd2f19c349de6894d8d58a1
0x6beb5a40c032afc305961162d8204cda16decfa51-yield
0x8a289d458f5a134ba40015085a8f50ffb681b41d1-yield

Market creation, resolution and settlements are emitted by the conditional-token contracts, for example 0x22da1810b194ca018378464a58f6ac2b10c9d244.

predict.fun-only filter​

Add this to the where clause of any query to restrict results to predict.fun:

Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }

For PredictionManagements use Management: { Prediction: { Marketplace: ... } }, and for PredictionSettlements use Settlement: { Prediction: { Marketplace: ... } }.


Trades​

Real-time predict.fun trades stream​

Subscribe to live predict.fun trades on BSC.

Run in Bitquery IDE

subscription PredictFunTradesStream {
EVM(network: bsc) {
PredictionTrades(
where: {
TransactionStatus: { Success: true }
Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Block {
Time
}
Transaction {
Hash
From
}
Trade {
OutcomeTrade {
Buyer
Seller
Amount
CollateralAmount
CollateralAmountInUSD
OrderId
IsOutcomeBuy
}
Prediction {
ConditionId
CollateralToken {
Symbol
SmartContract
}
OutcomeToken {
SmartContract
AssetId
}
Marketplace {
SmartContract
ProtocolName
ProtocolVersion
}
Question {
Title
Id
CreatedAt
}
Outcome {
Label
Index
Id
}
}
}
}
}
}

The price of a trade is CollateralAmount / Amount. Use the Price and PriceInUSD fields in queries (see below).

Latest predict.fun trades​

Run in Bitquery IDE

query LatestPredictFunTrades {
EVM(network: bsc) {
PredictionTrades(
limit: { count: 50 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Block {
Time
}
Transaction {
Hash
}
Trade {
OutcomeTrade {
Buyer
Seller
Amount
CollateralAmount
CollateralAmountInUSD
OrderId
Price
PriceInUSD
IsOutcomeBuy
}
Prediction {
ConditionId
CollateralToken {
Name
Symbol
SmartContract
}
OutcomeToken {
SmartContract
AssetId
}
Marketplace {
SmartContract
ProtocolName
ProtocolFamily
ProtocolVersion
}
Question {
Title
Id
CreatedAt
}
Outcome {
Label
Index
Id
}
}
}
}
}
}

Trades of a wallet​

A wallet can be the Buyer or the Seller of a trade. Use any to match both. Replace the address with your wallet.

Run in Bitquery IDE

query PredictFunWalletTrades {
EVM(network: bsc) {
PredictionTrades(
limit: { count: 100 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
any: [
{ Trade: { OutcomeTrade: { Buyer: { is: "0x8a7c3c1b1a3c0a5cdd2490130dd52623cb3eb05d" } } } }
{ Trade: { OutcomeTrade: { Seller: { is: "0x8a7c3c1b1a3c0a5cdd2490130dd52623cb3eb05d" } } } }
]
}
) {
Block {
Time
}
Transaction {
Hash
}
Trade {
OutcomeTrade {
Buyer
Seller
Amount
CollateralAmountInUSD
Price
IsOutcomeBuy
}
Prediction {
Question {
Title
Id
}
Outcome {
Label
}
}
}
}
}
}

Top markets by volume (last 24 hours)​

Run in Bitquery IDE

query PredictFunTopMarkets {
EVM(network: bsc) {
PredictionTrades(
limit: { count: 20 }
orderBy: { descendingByField: "volume" }
where: {
TransactionStatus: { Success: true }
Block: { Time: { since_relative: { hours_ago: 24 } } }
Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Trade {
Prediction {
ConditionId
Question {
Title
Id
}
}
}
trades: count
volume: sum(of: Trade_OutcomeTrade_CollateralAmountInUSD)
}
}
}

Volume per exchange contract (last 24 hours)​

Shows how much volume goes through the standard and yield-bearing exchanges.

Run in Bitquery IDE

query PredictFunVolumeByExchange {
EVM(network: bsc) {
PredictionTrades(
where: {
TransactionStatus: { Success: true }
Block: { Time: { since_relative: { hours_ago: 24 } } }
Trade: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Trade {
Prediction {
Marketplace {
SmartContract
ProtocolVersion
}
}
}
trades: count
volume: sum(of: Trade_OutcomeTrade_CollateralAmountInUSD)
}
}
}

Current price of each outcome in a market​

Returns the latest trade per outcome token. Replace the ConditionId with your market.

Run in Bitquery IDE

query PredictFunOutcomePrices {
EVM(network: bsc) {
PredictionTrades(
limitBy: { by: Trade_Prediction_OutcomeToken_AssetId, count: 1 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Trade: {
Prediction: {
ConditionId: { is: "0x91b57dec0e909ea9f44d00fa5cfdd61575dfac4bc1b3d3c513aa217c5c7828dd" }
}
}
}
) {
Block {
Time
}
Trade {
OutcomeTrade {
Price
PriceInUSD
}
Prediction {
Question {
Title
}
Outcome {
Label
Index
}
OutcomeToken {
AssetId
}
}
}
}
}
}

Volume and traders per outcome in a market​

Run in Bitquery IDE

query PredictFunMarketVolume {
EVM(network: bsc) {
PredictionTrades(
where: {
TransactionStatus: { Success: true }
Trade: {
Prediction: {
ConditionId: { is: "0x91b57dec0e909ea9f44d00fa5cfdd61575dfac4bc1b3d3c513aa217c5c7828dd" }
}
}
}
) {
Trade {
Prediction {
Outcome {
Label
}
}
}
trades: count
volume: sum(of: Trade_OutcomeTrade_CollateralAmountInUSD)
buyers: uniq(of: Trade_OutcomeTrade_Buyer)
}
}
}

Markets (Managements)​

Latest new markets​

Lists newly created markets. The notLike filter hides the 5m and 15m price rounds, which make up most of the new markets.

Run in Bitquery IDE

query PredictFunNewMarkets {
EVM(network: bsc) {
PredictionManagements(
limit: { count: 20 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Management: {
EventType: { is: "Created" }
Prediction: {
Marketplace: { ProtocolName: { is: "predict.fun" } }
Question: { Title: { notLike: "price round%" } }
}
}
}
) {
Block {
Time
}
Transaction {
Hash
}
Management {
EventType
Prediction {
Condition {
Id
Oracle
QuestionId
Outcomes {
Id
Index
Label
}
}
Question {
Title
Id
CreatedAt
}
CollateralToken {
Symbol
SmartContract
}
}
}
}
}
}

Latest resolved markets​

Run in Bitquery IDE

query PredictFunResolvedMarkets {
EVM(network: bsc) {
PredictionManagements(
limit: { count: 20 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Management: {
EventType: { is: "Resolved" }
Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } }
}
}
) {
Block {
Time
}
Transaction {
Hash
}
Management {
EventType
Prediction {
Condition {
Id
Oracle
Outcomes {
Label
Index
}
}
Question {
Title
Id
}
}
}
}
}
}

5m and 15m BTC price rounds​

predict.fun opens new Up/Down rounds for crypto prices every few minutes. Filter on the title to get the rounds for one asset. Change BTC to ETH or another asset.

Run in Bitquery IDE

query PredictFunBTCRounds {
EVM(network: bsc) {
PredictionManagements(
limit: { count: 20 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Management: {
EventType: { is: "Created" }
Prediction: { Question: { Title: { includes: "BTC up or down" } } }
}
}
) {
Block {
Time
}
Management {
Prediction {
Condition {
Id
Outcomes {
Label
Index
Id
}
}
Question {
Title
Id
}
}
}
}
}
}

Some rounds show a feed id instead of an asset name in the title, for example price round: feed 0x0003…3f38 up or down, 15m from ….

Market event counts (last 24 hours)​

Run in Bitquery IDE

query PredictFunManagementCounts {
EVM(network: bsc) {
PredictionManagements(
where: {
TransactionStatus: { Success: true }
Block: { Time: { since_relative: { days_ago: 1 } } }
Management: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Management {
EventType
}
count
}
}
}

Settlements​

Settlements are Split (USDT into outcome tokens), Merge (outcome tokens back into USDT) and Redemption (winning tokens paid out after resolution).

Latest settlements​

Run in Bitquery IDE

query PredictFunSettlements {
EVM(network: bsc) {
PredictionSettlements(
limit: { count: 20 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Settlement: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Block {
Time
}
Transaction {
Hash
}
Log {
Signature {
Name
}
SmartContract
}
Settlement {
EventType
Holder
OutcomeTokenIds
Amounts {
Amount
CollateralAmount
CollateralAmountInUSD
}
Prediction {
ConditionId
CollateralToken {
Symbol
SmartContract
}
Question {
Title
Id
}
}
}
}
}
}

Redemptions of a wallet​

Shows payouts a wallet received from resolved markets. Replace the address with your wallet.

Run in Bitquery IDE

query PredictFunWalletRedemptions {
EVM(network: bsc) {
PredictionSettlements(
limit: { count: 50 }
orderBy: { descending: Block_Time }
where: {
TransactionStatus: { Success: true }
Settlement: {
EventType: { is: "Redemption" }
Holder: { is: "0xf29f1d048f138a22ba159f530ac3a7575694b69e" }
Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } }
}
}
) {
Block {
Time
}
Transaction {
Hash
}
Settlement {
EventType
Holder
Amounts {
CollateralAmount
CollateralAmountInUSD
}
Prediction {
ConditionId
Question {
Title
}
}
}
}
}
}

Settlement counts by type (last 24 hours)​

Run in Bitquery IDE

query PredictFunSettlementCounts {
EVM(network: bsc) {
PredictionSettlements(
where: {
TransactionStatus: { Success: true }
Block: { Time: { since_relative: { days_ago: 1 } } }
Settlement: { Prediction: { Marketplace: { ProtocolName: { is: "predict.fun" } } } }
}
) {
Settlement {
EventType
}
count
collateral: sum(of: Settlement_Amounts_CollateralAmountInUSD)
}
}
}
Build with Bitquery

Ready to run this in production?

Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.