Sources
The prediction market platforms PredictorSDK aggregates.
PredictorSDK currently aggregates markets from nine prediction market platforms.
Each platform's source key below is the value it carries in a market's
provider field, and the value
GET /v1/markets?provider= takes to
return only that platform's markets.
Kalshi
A CFTC-regulated exchange for event contracts. Markets use ticker symbols (e.g., KXNBAGAME-26OCT20OKCSAS) and binary yes/no positions. Kalshi covers moneylines, spreads, totals, and player props for major sports.
The catalog deliberately excludes Kalshi's multivariate-event markets (KXMVECROSSCATEGORY… tickers). These are user-built parlays: each distinct combination of legs someone assembles on Kalshi is minted as its own market, every leg is already listed individually, and they have no counterpart on any other venue. They made up 97% of Kalshi's open markets when the exclusion was introduced. GET /v1/markets and pagination.total describe Kalshi's ordinary markets only; a parlay ticker still resolves on GET /v1/markets/{market_id}, which fetches Kalshi live.
A Kalshi market's category is the category Kalshi itself gives its series (Sports, Elections, Financials and so on), mapped to the canonical categories; Kalshi's Mentions, Health and Transportation series are other.
Kalshi spells one NFL team differently from the canonical codes: its tickers use JAC for Jacksonville (canonical jax). Matching normalizes this, so source_id=kalshi:KXNFLGAME-26OCT11PHIJAC finds the canonical event nfl-phi-jax-2026-10-11.
Source key: kalshi
Polymarket
A decentralized prediction market on Polygon. PredictorSDK identifies events and markets with Polymarket's Gamma IDs/slugs and identifies tradeable selections with CLOB token IDs. A market's condition ID, which wallet positions carry, works as an identifier too: GET /v1/markets/polymarket:<condition_id> returns the market, and source_id=polymarket:<condition_id> finds its matched event. Polymarket covers moneylines, spreads, totals, and player props.
Two Polymarket NFL conventions are normalized during matching. It spells the Los Angeles Rams as a bare la (the Chargers are lac), and it dates NFL game slugs by the UTC date of kickoff rather than the Eastern one — so nfl-buf-la-2026-10-13 is the Bills at the Rams on Monday night, October 12 in Eastern time, and carries the canonical event ID nfl-buf-lar-2026-10-12. Every prime-time NFL game is affected. Match by canonical event_id rather than by parsing a provider slug.
Source key: polymarket
Predict
A prediction market platform with numeric market IDs. Coverage includes moneylines for major sports, plus spreads and totals for the NFL and the NBA when Predict lists them: on 2026-10-10 its open NFL markets were moneylines only. Its NBA games (39 that evening, each with a moneyline, and the six nearest their start with three to seven spreads and totals each) sit under a market variant of their own, which matching reads: 39 of the 43 NBA events carried Predict's moneyline. A Predict NBA market is matched only when it is one game's full-game moneyline, spread or total whose teams, outcomes, line and rules text all agree (a spread names the team giving the points, at a negative half-point line), and a row whose twin on Polymarket, which Predict declares by condition ID, reads as another market is dropped from the run. Its team-match listing held no WNBA game.
Predict dates NFL game slugs by the UTC date of kickoff, the same convention Polymarket uses for NFL and the opposite of what both use for MLB. Matching resolves the game day from the category's real start time instead, so Predict's nfl-sea-dal-2026-08-16 and Kalshi's Eastern-dated ticker land on one canonical event.
Source key: predict
SX.Bet
A blockchain-based sports betting exchange. Markets use on-chain IDs and cover moneylines, spreads, and totals.
Source key: sxbet
Hyperliquid
A decentralized exchange with HIP-4 outcome markets. Hyperliquid markets are available through GET /v1/markets, GET /v1/markets/{market_id}, and GET /v1/events/{event_id} as provider-native markets. Its NFL game winners are also matched into GET /v1/matching-markets/sports (see Matched Sports Coverage).
Source key: hyperliquid
AlphaArcade
A prediction market settled on Algorand. Markets are binary (Yes/No) or multi-choice (an options[] array, each option its own submarket), and are available through GET /v1/markets, GET /v1/markets/{market_id}, and GET /v1/events/{event_id}. AlphaArcade's full-game moneylines are additionally matched into GET /v1/matching-markets/sports for every league the matcher supports when its structured start date agrees with any explicit date in its display fields; contradictory rows remain available in the provider-native catalog but are not used for identity matching. So are its full-game spreads that are one market with one line ("Will Capitals -1.5 win?", the NHL puck lines): the game and its two teams are read from the game line the spread is listed beside, and the spread is matched only when its rules agree with its title. Everything else is exposed as provider-native passthrough markets.
Source key: alpha-arcade
ProphetX
A sports betting exchange (Market Maker API). Events are bare integer ids and markets carry a per-event type id, so the stable market key is <event_id>:<market_id> and v1 routing is composite-only (prophetx:<event_id>, prophetx:<event_id>:<market_id>) or ?provider=prophetx. That key resolves whichever line ProphetX currently flags favourite; <event_id>:<market_id>:<line> names one line, and matched player props use it. Markets are available through GET /v1/markets, GET /v1/markets/{market_id}, and GET /v1/events/{event_id}. ProphetX's full-game moneylines are additionally matched into GET /v1/matching-markets/sports for NFL, MLB, NBA, and NHL; verified NFL player props also join same-prop comparisons with explicit settlement-rule differences. Spreads, totals, halves, and unverified props remain passthrough. Reads are authenticated (session tokens, one shared session per process) and paced to the keypair limit.
Source key: prophetx
Limitless
A prediction market exchange on Base (USDC collateral) with hourly/daily crypto price markets, sports fixtures, and event markets. Markets are binary (Yes/No) with kebab-case slugs (e.g. england-vs-sri-lanka-1789383376774); group (NegRisk) markets hold one submarket per outcome, each with its own slug. Markets are available through GET /v1/markets, GET /v1/markets/{market_id}, and GET /v1/events/{event_id} as provider-native passthrough markets. Slugs are kebab-case — the shared Polymarket/Predict shape — so v1 routing is composite-only (limitless:<slug>) or ?provider=limitless. Quotes come from the YES-side order book with the NO side derived by the venue's own complement; recurring up-or-down markets label the same YES/NO indices Up/Down. Reads are public and keyless. Limitless's NFL game moneylines, which mirror Polymarket's markets for the same games, are additionally matched into GET /v1/matching-markets/sports; everything else it lists stays passthrough.
Source key: limitless
Pred
A peer-to-peer sports prediction exchange on Base (USDC collateral) with a central limit order book. The tradeable unit is the child market: parents group the selections of one market (e.g. the three 1x2 outcomes of a soccer moneyline), each with its own 0x + 64-hex market_id. An NFL moneyline is a single child for the home team; its No side is the away team. Markets are available through GET /v1/markets, GET /v1/markets/{market_id}, and GET /v1/events/{event_id} as provider-native passthrough markets. The id halves share their shape with SX Bet market hashes, so v1 routing is composite-only (pred:<parent_market_id>:<child_market_id>) or ?provider=pred, and bare ids are never inferred. Quotes come from the child's LONG-side book (prices in cents) with the SHORT side derived by complement. Reads are public and keyless — login-with-signature mints a JWT for trading routes only, so there is no read credential to configure.
Source key: pred
Matched Sports Coverage
Hyperliquid is matched for NFL full-game moneylines only (since October 2026). Each NFL game is one Hyperliquid market with two sides, one per team, and two market creators list most games, so a game can carry two Hyperliquid markets. They name the teams in opposite orders and neither says which team is home, so a Hyperliquid market joins the event other venues already list for the same two teams on the same day, and each side is matched to its team by name. A game no other venue lists, or one the venues disagree on, is left out. A Hyperliquid game winner counts overtime and pays 0.5 to each side on a tie, as Kalshi, Polymarket, Predict, Pred and Limitless do. Its outcome IDs are its spot coins (#114580), the same IDs market detail returns. Its other markets stay catalog-only. Limitless is matched for NFL full-game moneylines only. Each one mirrors a Polymarket market for the same game, so it joins that game's event beside Polymarket; its other markets stay catalog-only. A Limitless moneyline is one binary question: its yes side pays on the team named first in its title (Polymarket's first outcome, the away team) and its no side on the other, and a tie resolves 50-50, as it does on Polymarket, Kalshi, Pred, Predict, and AlphaArcade. A Limitless game appears only when its title, its rules text and its Polymarket slug name the same two teams in the same order and agree on the date; otherwise it is left out rather than guessed. Limitless's start time is a copy taken when it lists the game and does not follow a schedule change, so it dates the game but is never published as its scheduled_start. Pred is matched for NFL full-game moneylines, spreads, and totals, and for NBA moneylines (first matched on preseason games in October 2026) — its team-total and other families stay passthrough-only, and all other leagues are catalog-only. AlphaArcade is matched for full-game moneylines (MLB, WNBA, NHL and NFL have matched live) and for full-game spreads that are one market with one line (the NHL puck lines have matched live, each joining Polymarket, Kalshi, and SX.Bet). Its yes side is the team covering the line and its no side the team not covering it, under the same token ids Polymarket's market for that spread uses. A spread is matched only when its line is a negative half point, its game line is listed beside it, and its rules agree with its title and do not limit the result to regulation. Its spreads that list several lines as options of one market, its totals, and its first-half and team-total markets (sub-markets of the game line, never treated as the moneyline) are not matched, and its other markets are exposed through the catalog and detail/event endpoints.
Matched leagues are NBA, WNBA, NHL, MLB, and NFL. A game carries the venues that list it, and a venue can be mapped for a league while listing nothing there. One league-specific gap is worth knowing about: WNBA events match across Kalshi, Polymarket, SX.Bet, and AlphaArcade (when it lists a game) only, because Predict and Pred list no WNBA games and ProphetX's are not ingested yet. NBA events carry Kalshi, Polymarket, Predict, SX.Bet, ProphetX and Pred: Predict lists its NBA games under a market variant of their own, which matching reads, and its NBA spreads and totals match when it lists them. NFL is mapped for Kalshi, Polymarket, Predict (moneyline, and spread and total when it lists them), SX.Bet, Pred (moneyline, spread and total), AlphaArcade (moneyline, when it lists a game), ProphetX (moneyline and verified props), Limitless (moneyline), and Hyperliquid (moneyline), with a matching scope of full-game moneyline, spread, and total plus verified player props with rule comparisons. NFL half and quarter spreads and totals match across Kalshi, Polymarket, and SX.Bet: the first half and the first three quarters on all three, the fourth quarter on Kalshi and Polymarket (SX.Bet lists no NFL fourth quarter). The NFL second half matches across Kalshi and Polymarket, whose second halves both count overtime (see the overtime rule below); SX.Bet lists no NFL second half. NFL team totals match across Kalshi and Polymarket (see Team totals below); ProphetX's half and quarter lines are not matched yet. Predict listed NFL moneylines only for the week being played on 2026-10-10 (all 15 of its games, none of the next week's) and no NFL spreads or totals, and AlphaArcade lists NFL game lines for most but not all games of a week (Week 1 of 2026: 14 of 16) and listed none on 2026-10-09, so an NFL event carries the venues that actually list it. Games appear once at least two venues list them; Kalshi and SX.Bet typically open a week's games a week or two ahead, Polymarket several weeks ahead.
| Market Type | Kalshi | Polymarket | Predict | SX.Bet | AlphaArcade | ProphetX | Pred | Limitless | Hyperliquid |
|---|---|---|---|---|---|---|---|---|---|
| Moneyline (full) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | NFL | NFL |
| Spread (full) | Yes | Yes | NBA and NFL, when listed | Yes | Single-line | No | NFL | No | No |
| Total (full) | Yes | Yes | NBA and NFL, when listed | Yes | No | No | NFL | No | No |
| Spread and total (1H and quarters, NBA/WNBA/NFL) | Yes | Yes | No | 1H, Q1–Q3 | No | No | No | No | No |
| Spread and total (2H, NBA/WNBA/NFL) | Yes | Yes | No | No | No | No | No | No | No |
| Moneyline (halves and quarters) | As −0.5 spreads | No | No | No | No | No | No | No | No |
| Team total (NFL: full game and 1H) | Yes | Yes | No | No | No | No | No | No | No |
| NFL player props (same-prop policy) | Yes | Yes | No | No | No | Yes | No | No | No |
| Player Points | Yes | Yes | No | No | No | No | No | No | No |
| Player Rebounds | Yes | Yes | No | No | No | No | No | No | No |
| Player Assists | Yes | Yes | No | No | No | No | No | No | No |
The table describes supported matching shapes, not a guarantee that every current slate has cross-provider overlap. NBA, WNBA and NFL can match half and quarter spreads and totals; MLB and NHL stay full-game only. Two settlement rules decide which period lines join:
- Ties. A half or quarter can end level, and the venues settle a tied
period three ways: Kalshi lists the tie as its own contract, Polymarket
resolves it 50-50, and SX.Bet voids the bet. Half and quarter
moneylines are therefore not matched. Kalshi's team legs lose on a tie,
so "Golden State wins the 1st quarter" is Golden State −0.5 for that
quarter. They are matched as that spread (key
spread|quarter:1|spread:gs|0.5), next to other venues' −0.5 quarter spreads. - Overtime. A half or quarter segment means regulation play, but the
second half and the fourth quarter end where overtime begins, and venues
disagree about crossing that line. Each such line is matched under its own
overtime rule, read from the venue's market text. A line that excludes
overtime keeps its plain key (
total|half:2|game_total|82.5) and joins only other lines that exclude it. A line that counts overtime carriesincl_ot(total|half:2|game_total:incl_ot|82.5), publishesrules.settlementofincl_otand adisplay_nameending "(incl. OT)", and joins only others that count it. Two venues therefore share a submarket only when they state the same rule, and a rule that is unreadable or stated both ways leaves the line unmatched. Kalshi's NBA and WNBA second halves and fourth quarters exclude overtime; Polymarket's WNBA second half counts it, so the two never join there, and its fourth quarter excludes it. In the NFL both Kalshi's and Polymarket's second halves count overtime (each market says so) while their fourth quarters exclude it, so NFL second-half lines match across the two underincl_otand fourth-quarter lines under the plain key. The rule is read from each market's own text, so a venue that changes it changes the result without a release.
Overtime always decides a full basketball game, so full-game moneylines are unaffected. All player-prop rows require verified identity and the selected settlement policy; supported statistics and available lines differ by provider.
Team totals
A team total is a team's own points in a game, such as the Eagles over 24.5
(market_type team_total). It matches in the NFL, across Kalshi and
Polymarket, for the full game and the first half. On 2026-10-09 Kalshi listed
379 full-game and 331 first-half team totals (KXNFLTEAMTOTAL and
KXNFL1HTEAMTOTAL) and Polymarket 946 full-game, 688 first-half and 688
second-half ones (team_totals, first_half_team_totals and
second_half_team_totals); 236 sub-markets were listed by both (66 full-game
and 170 first-half). Each venue's team is read from its own structure, never
from a substring of its title: Kalshi's ticker suffix (-JAC11 is Jacksonville,
which the alias table reads as jax) and Polymarket's market slug
(...-team-total-la-10pt5 is the Rams, whom Polymarket spells la). A team
that is neither of the game's participants, or that its own title or line
contradicts, is left out rather than filed under a guess. Two teams' lines never
share a sub-market, because the key names its team.
A full-game team total counts overtime, as a full-game total does (Kalshi's
football terms say so, and Polymarket's game rules read "Overtime is included
if played"); a first half ends before overtime can begin. Polymarket's
second-half team total counts overtime too and carries incl_ot in its key, and
it stays one venue's line because Kalshi lists no second-half team total.
Other leagues' team totals are not matched yet. On the same day Kalshi listed
180 NHL, 36 WNBA and 28 MLB ones (none for the NBA, which was in preseason) and
Polymarket only 10 MLB ones, for a single postseason game, so no league but the
NFL has two venues listing them at any volume.
Looking up by provider
Look up matches on GET /v1/matching-markets/sports/lookup by any ID a venue
market publishes, prefixed with its source key, as source_id={provider}:{id}:
?source_id=kalshi:KXNBAGAME-26OCT20OKCSAS # Kalshi event ticker
?source_id=sxbet:L19766755 # SX Bet fixture
?source_id=polymarket:nfl-pit-no-2026-10-25 # Polymarket slug
?source_id=prophetx:YOUR_EVENT_ID:YOUR_MARKET_ID
?source_id=alpha-arcade:YOUR_MARKET_ULID
?source_id=pred:YOUR_PARENT_ID:YOUR_CHILD_ID
?source_id=limitless:<market_slug>Replace YOUR_EVENT_ID:YOUR_MARKET_ID with a ProphetX source market's
market_id, YOUR_MARKET_ULID with an AlphaArcade source market's
market_id, YOUR_PARENT_ID:YOUR_CHILD_ID with a Pred source market's
market_id, and <market_slug> with a Limitless source market's market_id,
which is its slug (its event_id is the same slug). A ProphetX or Pred source
market's bare event_id works too. Limitless's yes and no name a side of
each of its markets, so they are a 400 rather than an identifier. Game
IDs can disappear after the venue delists them. See
Filtering for the rules.