Skip to main content
GET
/
v2
/
markets
/
search
Search Markets Across Venues
curl --request GET \
  --url https://api.predexon.com/v2/markets/search \
  --header 'x-api-key: <api-key>'
{
  "query": "trump",
  "count": 10,
  "venues_searched": [
    "kalshi",
    "limitless",
    "opinion",
    "polymarket",
    "predict"
  ],
  "markets": [
    {
      "venue": "polymarket",
      "title": "Will Trump acquire Greenland?",
      "status": "open",
      "price": 0.28,
      "volume": 32541564.57,
      "market_slug": "will-trump-acquire-greenland",
      "predexon_id": "px-abc123def456",
      "end_time": "2026-12-31T00:00:00+00:00"
    },
    {
      "venue": "kalshi",
      "title": "Will Trump buy Greenland?",
      "status": "open",
      "price": 0.28,
      "volume": 33047.86,
      "market_id": "KXGREENLAND-29",
      "end_time": "2029-01-20T15:00:00+00:00"
    }
  ]
}

Overview

One request, five venues. Given a search query, returns markets from Polymarket, Kalshi, Limitless, Opinion, and Predict.fun.
Use this when you want broad cross-venue discovery. If you already know the Polymarket or Kalshi identifier and want the equivalent market on the other platform, use Find Matching Markets instead.

Venues

Venuevenue value
Polymarketpolymarket
Kalshikalshi
Limitlesslimitless
Opinionopinion
Predict.funpredict
Pass a comma-separated list to restrict the search (e.g. venue=polymarket,kalshi). Order doesn’t matter — polymarket,kalshi and kalshi,polymarket return the same results.

Result Shape

Each row in markets[] always includes venue, title, and status. Remaining fields are venue-dependent and null values are omitted:
FieldPresent on
market_slugPolymarket, Limitless, Predict.fun
market_idKalshi, Opinion
condition_idPolymarket
predexon_idAll venues
end_timeAll venues except those without close times
price, volumeAll venues (when available)

Behavior

Results are interleaved across venues rather than grouped. If you request limit=20 across 5 venues, you’ll get roughly 4 per venue, alternating — so the top of the list isn’t monopolized by the highest-volume venue.
Within each venue, results are sorted by volume and relevance before interleaving.
Responses are cached for 15 seconds per unique (q, status, venue, limit) tuple.
If one venue’s database is unreachable, the endpoint still returns results from the remaining venues. The venues_searched array reflects which venues were actually queried.

Errors

StatusReason
400Invalid status or venue value
422q missing or shorter than 3 characters

Authorizations

x-api-key
string
header
required

Query Parameters

q
string
required

Search query

Required string length: 3 - 200
status
enum<string>
default:open

Market status filter

Available options:
open,
closed
venue
string | null

Comma-separated venues to search (e.g. polymarket,kalshi). Defaults to all 5. Comma-separated venues to search. Defaults to all 5. Valid values: polymarket, kalshi, limitless, opinion, predict

limit
integer
default:20

Total results to return

Required range: 1 <= x <= 100

Response

Successful Response

query
string
required

The search query that was executed

count
integer
required

Number of markets returned

venues_searched
string[]
required

Venues included in the search (sorted alphabetically)

markets
object[]
required

Interleaved results across venues. Null fields are omitted per-row.