Skip to main content

Wallet & User Activity API

Get user- and wallet-level data for Polymarket: recent activity, positions, trade volume, and market counts. Use Bitquery GraphQL to analyze trader behavior by wallet address, and combine with the Polymarket API overview for trades and market data.

Check if an address ever interacted with Polymarket (on-chain transfers)

Polymarket collateral on Polygon flows through conditional tokens keyed to USDC denomination at 0x4d97DCd97eC945f40cF65F87097ACe5EA0476045. To see whether a wallet likely has any Polymarket-related receipts, query for at least one inbound transfer of that token (limit: { count: 1 }). Empty results mean no indexed match—not a guarantee that the wallet never traded (e.g. only outbound paths), but useful for onboarding and tagging.

The same pattern is documented under Polygon (MATIC) Transfers.

Try it: IDE — Polymarket interaction check

query ($address: String) {
EVM(dataset: combined, network: matic) {
Transfers(
limit: { count: 1 }
orderBy: { descending: Block_Time }
where: {
Transfer: {
Currency: {
SmartContract: { is: "0x4d97DCd97eC945f40cF65F87097ACe5EA0476045" }
}
Receiver: { is: $address }
}
}
) {
Block {
Time
Number
}
Transaction {
Hash
}
Transfer {
Sender
Receiver
Amount
}
}
}
}

Variables:

{
"address": "0x0c79f21ec570f5cc0d52d1bc640845faef430ad2"
}

Recent user activity by wallet

Get aggregate stats for a trader over the last 5 hours: total outcomes traded, collateral amounts, and number of distinct markets.

Run query in IDE

query MyQuery($trader: String) {
EVM(network: matic) {
PredictionTrades(
where: {
TransactionStatus: { Success: true }
any: [
{ Trade: { OutcomeTrade: { Buyer: { is: $trader } } } }
{ Trade: { OutcomeTrade: { Seller: { is: $trader } } } }
]
Block: { Time: { since_relative: { hours_ago: 5 } } }
}
) {
Total_Outcomes_traded: count
Total_Outcome_Amount: sum(of: Trade_OutcomeTrade_Amount)
Total_Collateral_Amount: sum(of: Trade_OutcomeTrade_CollateralAmount)
Total_Markets: count(distinct: Trade_Prediction_Question_MarketId)
}
}
}

Variables:

{
"trader": "0x101f2f96db1e39a9f36a1fa067751d541fd38e1a"
}

Replace trader with any Polygon wallet address (EOA or proxy wallet).


What you can get by wallet

DataSourceNotes
Recent activity & volumeBitquery (above)GraphQL PredictionTrades filtered by Buyer/Seller
Closed positionsPolymarket CLOBProfile API
User activity timelinePolymarket CLOBProfile API
Total value of positionsPolymarket CLOBProfile API
Trades for a user or marketPolymarket CLOBProfile API
Positions for a specific marketPolymarket CLOBProfile API
Public profile by walletPolymarket Gamma APIGET /public-profile?address=<wallet> (no auth)
Deposits & withdrawalsPolymarket Bridge APISupported assets, deposit/withdrawal addresses, transaction status

NeedAPI
Trades, prices, volumePolymarket API · Prediction Trades API
Filter by market slug, condition ID, tokenPolymarket Markets API
Settlements & redemptionsPrediction Settlements API
Market lifecycle & resolutionPrediction Market API
On-chain contracts & eventsMain Polymarket Contract (on-chain)

Support