Skip to main content
The Sports WebSocket provides real-time sports results updates, including scores, periods, and game status. No authentication required.

Endpoint

wss://sports-api.polymarket.com/ws
No subscription message required — connect and start receiving data for all active sports events.

Heartbeat

The server sends ping every 5 seconds. Respond with pong within 10 seconds or the connection will close.
ws.onmessage = (event) => {
  if (event.data === "ping") {
    ws.send("pong");
    return;
  }

  // Handle JSON messages...
};

Message Type

Each message is a JSON object with game state fields.

sport_result

Emitted when:
  • A match goes live
  • The score changes
  • The period changes (e.g., halftime, overtime)
  • A match ends
  • Possession changes (NFL and CFB only)
NFL (in progress):
{
  "gameId": 19439,
  "leagueAbbreviation": "nfl",
  "slug": "nfl-lac-buf-2025-01-26",
  "homeTeam": "LAC",
  "awayTeam": "BUF",
  "status": "InProgress",
  "score": "3-16",
  "period": "Q4",
  "elapsed": "5:18",
  "live": true,
  "ended": false,
  "turn": "lac"
}
Esports — CS2 (finished):
{
  "gameId": 1317359,
  "leagueAbbreviation": "cs2",
  "slug": "cs2-arcred-the-glecs-2025-07-20",
  "homeTeam": "ARCRED",
  "awayTeam": "The glecs",
  "status": "finished",
  "score": "000-000|2-0|Bo3",
  "period": "2/3",
  "live": false,
  "ended": true,
  "finished_timestamp": "2025-07-20T18:30:00.000Z"
}
The finished_timestamp field is an ISO 8601 timestamp only present when ended: true. The slug field follows the format {league}-{team1}-{team2}-{date} (e.g., nfl-buf-kc-2025-01-26).

Period Values

PeriodDescription
1HFirst half
2HSecond half
1Q, 2Q, 3Q, 4QQuarters (NFL, NBA)
HTHalftime
FTFull time (match ended in regulation)
FT OTFull time with overtime
FT NRFull time, no result (draw or canceled)
End 1, End 2, …End of inning (MLB)
1/3, 2/3, 3/3Map number in Bo3 series (Esports)
1/5, 2/5, …Map number in Bo5 series (Esports)

Game Status Values

Game status values vary by sport:

NFL

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
FinalGame completed in regulation
F/OTFinal after overtime
SuspendedGame suspended
PostponedGame postponed
DelayedGame delayed
CanceledGame canceled
ForfeitGame forfeited
NotNecessaryScheduled, but not needed

NHL

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
FinalGame completed in regulation
F/OTFinal after overtime
F/SOFinal after shootout
SuspendedGame suspended
PostponedGame postponed
DelayedGame delayed
CanceledGame canceled
ForfeitGame forfeited
NotNecessaryScheduled, but not needed

MLB

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
FinalGame completed
SuspendedGame suspended
DelayedGame delayed
PostponedGame postponed
CanceledGame canceled
ForfeitGame forfeited
NotNecessaryScheduled, but not needed

NBA and CBB

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
FinalGame completed
F/OTFinal after overtime
SuspendedGame suspended
PostponedGame postponed
DelayedGame delayed
CanceledGame canceled
ForfeitGame forfeited
NotNecessaryScheduled, but not needed

CFB

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
FinalGame completed
F/OTFinal after overtime
SuspendedGame suspended
PostponedGame postponed
DelayedGame delayed
CanceledGame canceled
ForfeitGame forfeited

Soccer

StatusDescription
ScheduledGame not yet started
InProgressGame currently playing
BreakHalftime or other break
SuspendedGame suspended
PenaltyShootoutPenalty shootout in progress
FinalGame completed
AwardedResult awarded due to ruling/forfeit
PostponedGame postponed
CanceledGame canceled

Esports

StatusDescription
not_startedMatch not yet started
runningMatch currently playing
finishedMatch completed
postponedMatch postponed
canceledMatch canceled

Tennis

StatusDescription
scheduledMatch not yet started
inprogressMatch currently playing
suspendedMatch suspended
finishedMatch completed
postponedMatch postponed
cancelledMatch canceled