Skip to main content

Overview

The Games endpoints give you a single call for everything happening in one match: every market type (moneyline, spread, totals, halftime, props) × every bookmaker, laid out in a matrix with Pinnacle as the reference column. This is the fastest way to build a comparison view — no joins, no multiple calls.

How game IDs work

Every game has a stable game_id UUID derived from (competition, match_name):
The same game always gets the same UUID — store it in your DB, use it in WebSocket filters, or share it in URLs. It never changes while the game is live.

GET /api/games

List all games currently in the odds database.

Query Parameters

Response

Response Fields

Code Example


GET /api/games/{game_id}

All odds for one game — every market type × every bookmaker in a single matrix response. Markets are grouped by (market_type, period). Within each market, selections are rows and bookmakers are columns, with Pinnacle always shown separately.

Path Parameter

Query Parameters

Response

Response Fields

Top-level data: MarketMatrix object: MatrixRow object: PinnacleCell: BookOddsCell:

Code Examples


Using game_id with WebSocket

Subscribe to live updates for a single game by passing game_id as a query parameter when connecting:
Combine GET /api/games/{id} on page load (full snapshot) with a game_id-filtered WebSocket connection for real-time updates — you get a complete live odds comparison view with a single REST call and one WebSocket.

WebSocket Guide

Full tutorial for building real-time odds feeds.

Value Bets

Pre-calculated +EV opportunities against Pinnacle.