Skip to main content
The arbitrage opportunities endpoint is the core data feed for API key customers. It returns a scored and classified list of price discrepancies detected across Arbitrage integrated platforms — Polymarket, Limitless, Predict.fun, Manifold, PredictIt, Azuro, and Drift — so your bot can evaluate and act on them programmatically. Every opportunity includes fee-adjusted profit estimates, lifecycle status, and a multi-factor quality score to help you separate signal from noise.

Endpoint

Authentication: X-API-Key header with your pdx_ key. This endpoint requires the read:arbitrage permission.

Query parameters

Understanding classification

Arbitrage scoring engine assigns each opportunity a score from 0 to 100 based on three factors:
  • Execution quality — spread magnitude, net profit after fees, fee efficiency
  • Market quality — liquidity depth, 24-hour trading volume
  • Temporal quality — time remaining before market expiry (longer is better)
That score maps to a classification tier:

Understanding risk gate

The risk_gate_state field reflects the current runtime governance state:
  • allowed — no restrictions; normal execution
  • degraded — execution may be affected by platform or global controls
  • blocked — execution is blocked by policy
Combine classification=actionable and risk_gate=allowed to get the best opportunities with no execution restrictions. Add status=active to exclude stale or resolved entries.

Example request

The following fetches up to 25 actionable, active opportunities with a minimum score of 70, filtered to risk gate allowed:

Sample response

Reading the response

Opportunity fields

Each object in opportunities represents a detected price discrepancy. Key fields:

Stats object

The stats object summarizes the most recent scan across all opportunities (not just the filtered subset you received): Use stats to understand current market conditions before acting on individual opportunities. A low actionable_count or low avg_spread signals a quiet market.

meta.source

The meta.source field tells you where the data came from:

Polling for opportunities

Most trading bots poll this endpoint on a schedule. The background scanner runs continuously, so polling every 30–60 seconds gives you fresh data without burning your rate limit.
Check X-RateLimit-Remaining on each response. If it drops near zero, slow your polling cadence or upgrade your key’s rate limit in the Developer Console.