Documentation
Documentation
https://docs.therundown.io/introduction
Authentication
https://docs.therundown.io/authentication
openapi: 3.0.3
info:
title: TheRundown Sports V1 Delta V2 Stats API
version: 2.0.0
description: 'Real-time and historical sports betting data, odds, lines, and statistics across major North American and international sports leagues.
## Authentication
All endpoints (except `/sports` and `/affiliates`) require authentication. Pass your API key using one of:
- **Query parameter**: `?key=YOUR_API_KEY`
- **Header**: `X-Therundown-Key: YOUR_API_KEY`
## Off-the-Board Sentinel Value
The value **0.0001** indicates a line is "off the board" — the sportsbook has temporarily removed pricing (e.g., pending injury news). This is NOT an error. Display as "Off Board" or "N/A" in your UI.
## Rate Limiting
Requests are rate-limited per API key tier. Check response headers for current limits.
## Data Updates
- Live odds update in real-time during games
- Use delta endpoints for efficient polling of changes
- WebSocket connections available for streaming updates
## V1 vs V2
V2 endpoints use market-based data structures (market_id, participants, line prices). V1 endpoints use legacy line-based structures (moneyline, spread, total objects). V2 is recommended for new integrations.
'
contact:
name: TheRundown API Support
url: https://therundown.io
email: support@therundown.io
termsOfService: https://therundown.io/terms
servers:
- url: https://therundown.io
description: Production
security:
- ApiKeyQuery: []
- ApiKeyHeader: []
tags:
- name: V2 Stats
description: Team and player statistics (V2)
paths:
/api/v2/events/{eventID}/stats:
get:
operationId: v2GetStatsByEvent
tags:
- V2 Stats
summary: Get team game stats for an event
parameters:
- $ref: '#/components/parameters/EventIDPath'
- name: stats_ids
in: query
schema:
type: string
description: Comma-separated stat IDs (max 12)
- name: team_id
in: query
schema:
type: integer
description: Filter by team ID
responses:
'200':
description: Team game stats
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TeamGameStatResponse'
example:
- team:
team_id: 11
name: Atlanta Hawks
mascot: Hawks
abbreviation: ATL
meta:
complete: true
stats:
- team_id: 11
stat_id: 1242
stat:
id: 1242
name: avgRebounds
display_name: Rebounds Per Game
abbreviation: REB
sport_id: 4
event_id: 5a0c9d5d8d3e2c0001a1b2c3
value: '42'
- team_id: 11
stat_id: 1243
stat:
id: 1243
name: assistTurnoverRatio
display_name: Assist To Turnover Ratio
abbreviation: AST/TO
sport_id: 4
event_id: 5a0c9d5d8d3e2c0001a1b2c3
value: '2.26'
/api/v2/events/{eventID}/players/stats:
get:
operationId: v2GetPlayerStatsByEvent
tags:
- V2 Stats
summary: Get player game stats for an event
parameters:
- $ref: '#/components/parameters/EventIDPath'
- name: stats_ids
in: query
schema:
type: string
description: Comma-separated stat IDs (max 12)
- name: player_ids
in: query
schema:
type: string
description: Comma-separated player IDs (max 6)
responses:
'200':
description: Player game stats
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PlayerGameStatResponse'
example:
- player:
id: 16627
sport_id: 4
team_id: 11
first_name: Trae
last_name: Young
display_name: Trae Young
jersey: '11'
position: Guard
position_abbreviation: G
meta:
complete: true
stats:
- stat:
id: 1288
name: points
display_name: Points
abbreviation: PTS
sport_id: 4
value: '28'
- stat:
id: 1289
name: assists
display_name: Assists
abbreviation: AST
sport_id: 4
value: '11'
/api/v2/stats:
get:
operationId: v2GetAllStats
tags:
- V2 Stats
summary: List all stat definitions
parameters:
- name: id
in: query
schema:
type: integer
description: Filter by stat ID
- name: sport_id
in: query
schema:
type: integer
description: Filter by sport ID
responses:
'200':
description: Stat definitions
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StatDefinition'
example:
- id: 1
name: completionPct
display_name: Completion Percentage
abbreviation: CMP%
description: The percentage of completed passes.
sport_id: 2
- id: 2
name: completions
display_name: Completions
abbreviation: CMP
description: The times a player completes a pass to another player.
sport_id: 2
- id: 1242
name: avgRebounds
display_name: Rebounds Per Game
abbreviation: REB
description: The average rebounds per game.
sport_id: 4
components:
schemas:
PlayerNormalized:
type: object
properties:
id:
type: integer
sport_id:
type: integer
team_id:
type: integer
updated_at:
type: string
format: date-time
nullable: true
first_name:
type: string
last_name:
type: string
display_name:
type: string
weight:
type: number
height:
type: number
display_weight:
type: string
display_height:
type: string
age:
type: integer
date_of_birth:
type: string
slug:
type: string
jersey:
type: string
position:
type: string
position_abbreviation:
type: string
debut_year:
type: integer
birth_place_city:
type: string
birth_place_country:
type: string
experience_years:
type: integer
active:
type: boolean
status:
type: string
bats:
type: string
description: MLB only — batting side
throws:
type: string
description: MLB only — throwing arm
TeamGameStats:
type: object
properties:
team_id:
type: integer
nullable: true
team:
$ref: '#/components/schemas/TeamNormalized'
stat_id:
type: integer
nullable: true
stat:
$ref: '#/components/schemas/StatDefinition'
event_id:
type: string
value:
type: string
StatDefinition:
type: object
properties:
id:
type: integer
nullable: true
name:
type: string
category:
type: string
display_name:
type: string
abbreviation:
type: string
description:
type: string
sport_id:
type: integer
Conference:
type: object
properties:
conference_id:
type: integer
sport_id:
type: integer
name:
type: string
StatsMeta:
type: object
properties:
complete:
type: boolean
TeamGameStatResponse:
type: object
properties:
team:
$ref: '#/components/schemas/TeamNormalized'
meta:
$ref: '#/components/schemas/StatsMeta'
stats:
type: array
items:
$ref: '#/components/schemas/TeamGameStats'
TeamNormalized:
type: object
properties:
team_id:
type: integer
name:
type: string
mascot:
type: string
abbreviation:
type: string
record:
type: string
is_home:
type: boolean
is_away:
type: boolean
ranking:
type: integer
nullable: true
conference:
$ref: '#/components/schemas/Conference'
division:
$ref: '#/components/schemas/Division'
PlayerGameStats:
type: object
properties:
event_id:
type: string
player_id:
type: integer
nullable: true
player:
$ref: '#/components/schemas/PlayerNormalized'
stat_id:
type: integer
nullable: true
stat:
$ref: '#/components/schemas/StatDefinition'
value:
type: string
updated_at:
type: string
format: date-time
nullable: true
Division:
type: object
properties:
division_id:
type: integer
conference_id:
type: integer
sport_id:
type: integer
name:
type: string
PlayerGameStatResponse:
type: object
properties:
player:
$ref: '#/components/schemas/PlayerNormalized'
meta:
$ref: '#/components/schemas/StatsMeta'
stats:
type: array
items:
$ref: '#/components/schemas/PlayerGameStats'
parameters:
EventIDPath:
name: eventID
in: path
required: true
schema:
type: string
description: Canonical V2 event ID from the `event_id` field returned by event endpoints
securitySchemes:
ApiKeyQuery:
type: apiKey
in: query
name: key
description: API key as query parameter
ApiKeyHeader:
type: apiKey
in: header
name: X-Therundown-Key
description: API key as request header