Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Realtimesportsapi Com Teams API
version: 1.0.0
contact:
name: Realtime Sports API support
email: austin@elcodev.com
url: https://www.realtimesportsapi.com/?utm_source=openapi
license:
name: Proprietary
url: https://www.realtimesportsapi.com/terms?utm_source=openapi
termsOfService: https://www.realtimesportsapi.com/terms?utm_source=openapi
description: 'Operations tagged Teams across 2 of this provider''s published API definitions: original.json, realtimesportsapi-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
security:
- BearerAuth: []
- ApiKeyHeader: []
tags:
- name: Teams
description: Teams, rosters and depth charts
paths:
/sports/{sport}/leagues/{league}/teams:
get:
operationId: listTeams
tags:
- Teams
summary: List teams
description: Paginated. College football has 800+ teams across all divisions; for FBS only use the group endpoint (/seasons/{season}/types/2/groups/80/teams).
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: limit
in: query
required: false
description: Maximum teams to return (default 50, max 200).
schema:
type: integer
example: 50
default: 50
minimum: 1
maximum: 200
- name: page
in: query
required: false
description: Page number (1-based).
schema:
type: integer
example: 1
default: 1
minimum: 1
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: array
items:
$ref: '#/components/schemas/Team'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
pagination:
$ref: '#/components/schemas/Pagination'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
/sports/{sport}/leagues/{league}/teams/{teamId}:
get:
operationId: getTeam
tags:
- Teams
summary: Get a team
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: teamId
in: path
required: true
description: Team id, as returned by the teams endpoints.
schema:
type: string
example: '12'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
$ref: '#/components/schemas/Team'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Team not found (TEAM_NOT_FOUND).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
/sports/{sport}/leagues/{league}/teams/{teamId}/roster:
get:
operationId: getTeamRoster
tags:
- Teams
summary: Get team roster
description: Current roster grouped by position plus a flat list. Pass `season` for a historical season roster (flat list).
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: teamId
in: path
required: true
description: Team id, as returned by the teams endpoints.
schema:
type: string
example: '12'
- name: season
in: query
required: false
description: Historical season year.
schema:
type: integer
example: 2025
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
$ref: '#/components/schemas/Roster'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Roster not found (ROSTER_NOT_FOUND).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
/sports/{sport}/leagues/{league}/teams/{teamId}/depthchart:
get:
operationId: getTeamDepthChart
tags:
- Teams
summary: Get depth chart
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: teamId
in: path
required: true
description: Team id, as returned by the teams endpoints.
schema:
type: string
example: '12'
- name: season
in: query
required: false
description: Season year (defaults to current).
schema:
type: integer
example: 2026
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
$ref: '#/components/schemas/DepthChart'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Depth chart not found (DEPTH_CHART_NOT_FOUND).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
/sports/{sport}/leagues/{league}/seasons/{season}/types/{typeId}/groups/{groupId}/teams:
get:
operationId: listGroupTeams
tags:
- Teams
summary: List teams in a group
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: season
in: path
required: true
description: Season year, e.g. 2026.
schema:
type: integer
example: 2026
- name: typeId
in: path
required: true
description: 'Season type id: 1 = preseason, 2 = regular season, 3 = postseason (4 = off-season for some leagues).'
schema:
type: string
example: '2'
- name: groupId
in: path
required: true
description: 'Group (conference/division) id. College football: 80 = FBS, 81 = FCS.'
schema:
type: string
example: '80'
- name: pageSize
in: query
required: false
description: Teams per page (default 25, max 200). `limit` is accepted as an alias.
schema:
type: integer
example: 25
maximum: 200
- name: page
in: query
required: false
description: Page number (1-based).
schema:
type: integer
example: 1
default: 1
minimum: 1
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: array
items:
$ref: '#/components/schemas/Team'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
pagination:
$ref: '#/components/schemas/Pagination'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Teams not found (TEAMS_NOT_FOUND).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
/sports/{sport}/leagues/{league}/seasons/{season}/teams/{teamId}/events:
get:
operationId: listTeamSeasonEvents
tags:
- Teams
summary: List a team's events in a season
parameters:
- name: sport
in: path
required: true
description: 'Sport slug: football, basketball, baseball, hockey, soccer.'
schema:
type: string
example: football
- name: league
in: path
required: true
description: League slug, e.g. nfl, college-football, nba, mens-college-basketball, mlb, nhl, eng.1, usa.1.
schema:
type: string
example: nfl
- name: season
in: path
required: true
description: Season year, e.g. 2026.
schema:
type: integer
example: 2026
- name: teamId
in: path
required: true
description: Team id, as returned by the teams endpoints.
schema:
type: string
example: '12'
- name: page
in: query
required: false
description: Page number (1-based).
schema:
type: integer
example: 1
default: 1
minimum: 1
- name: pageSize
in: query
required: false
description: Source page size (default 25).
schema:
type: integer
example: 25
- name: limit
in: query
required: false
description: Maximum events from the page to return (default 50).
schema:
type: integer
example: 50
default: 50
minimum: 1
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: array
items:
$ref: '#/components/schemas/Event'
meta:
type: object
properties:
rateLimit:
$ref: '#/components/schemas/RateLimit'
pagination:
$ref: '#/components/schemas/Pagination'
required:
- success
- data
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Events not found (EVENTS_NOT_FOUND).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
$ref: '#/components/responses/RateLimitExceeded'
'500':
$ref: '#/components/responses/ServerError'
servers:
- url: https://www.realtimesportsapi.com/api/v1
description: Production
components:
schemas:
Team:
type: object
properties:
id:
type: string
example: '12'
uid:
type: string
slug:
type: string
example: kansas-city-chiefs
location:
type: string
example: Kansas City
name:
type: string
example: Chiefs
nickname:
type: string
example: Chiefs
abbreviation:
type: string
example: KC
displayName:
type: string
example: Kansas City Chiefs
shortDisplayName:
type: string
example: Chiefs
color:
type: string
alternateColor:
type: string
logos:
type: array
items:
type: object
properties:
href:
type: string
width:
type: integer
height:
type: integer
rel:
type: array
items:
type: string
record:
type: string
example: 3-1
standingSummary:
type: string
example: 1st in AFC West
league:
type: object
properties:
id:
type: string
name:
type: string
abbreviation:
type: string
slug:
type: string
venue:
type:
- object
- 'null'
properties:
id:
type: string
name:
type: string
city:
type: string
state:
type: string
capacity:
type: integer
indoor:
type: boolean
grass:
type: boolean
isActive:
type: boolean
isAllStar:
type: boolean
InningState:
type: object
properties:
number:
type: integer
example: 5
half:
type:
- string
- 'null'
example: bottom
enum:
- top
- bottom
- middle
- end
outs:
type: integer
example: 2
balls:
type: integer
example: 3
strikes:
type: integer
example: 1
onFirst:
type: boolean
example: true
onSecond:
type: boolean
example: false
onThird:
type: boolean
example: true
description: MLB only; absent for other leagues and before first pitch. half, the count and the runner flags are set while the game is live and null otherwise.
Roster:
type: object
properties:
team:
type: object
properties:
id:
type: string
displayName:
type: string
abbreviation:
type: string
season:
type: integer
example: 2026
count:
type: integer
example: 53
groups:
type: array
items:
type: object
properties:
position:
type: string
example: offense
athletes:
type: array
items:
$ref: '#/components/schemas/RosterAthlete'
athletes:
type: array
items:
$ref: '#/components/schemas/RosterAthlete'
Event:
type: object
properties:
id:
type: string
example: '401772982'
uid:
type: string
name:
type: string
example: Kansas City Chiefs at Baltimore Ravens
shortName:
type: string
example: KC @ BAL
date:
type: string
example: 2026-10-04T17:00Z
format: date-time
status:
$ref: '#/components/schemas/EventStatus'
homeTeam:
$ref: '#/components/schemas/EventTeam'
awayTeam:
$ref: '#/components/schemas/EventTeam'
competition:
type: object
properties:
attendance:
type: integer
neutralSite:
type: boolean
conferenceCompetition:
type: boolean
divisionCompetition:
type: boolean
playByPlayAvailable:
type: boolean
highlightsAvailable:
type: boolean
venue:
type:
- object
- 'null'
properties:
id:
type: string
name:
type: string
city:
type: string
state:
type: string
indoor:
type: boolean
grass:
type: boolean
notes:
type: array
items:
type: string
season:
type: object
properties:
year:
type: integer
example: 2026
displayName:
type: string
example: '2026'
type:
type: object
properties:
id:
type: string
example: '2'
name:
type: string
example: Regular Season
abbreviation:
type: string
example: reg
week:
type: object
properties:
number:
type: integer
example: 5
startDate:
type: string
endDate:
type: string
text:
type: string
example: Week 5
broadcasts:
type: array
items:
type: object
properties:
network:
type: string
example: CBS
type:
type: string
example: TV
officials:
type: array
items:
type: object
properties:
id:
type: string
fullName:
type: string
displayName:
type: string
order:
type: integer
position:
type: string
odds:
allOf:
- $ref: '#/components/schemas/Odds'
description: Present only when includeOdds=true and odds are available.
Error:
type: object
properties:
success:
type: boolean
example: false
error:
type: object
properties:
code:
type: string
example: MISSING_TOKEN
message:
type: string
example: Authorization required
hint:
type: string
example: 'Use Authorization: Bearer <your-api-key> or X-API-Key: <your-api-key>.'
required:
- code
- message
required:
- success
- error
Pagination:
type: object
properties:
page:
type: integer
example: 1
pageSize:
type: integer
example: 25
total:
type: integer
example: 180
totalPages:
type: integer
example: 8
pageCount:
type: integer
example: 8
description: Present on some endpoints instead of totalPages.
hasNextPage:
type: boolean
example: true
hasPreviousPage:
type: boolean
example: false
RosterAthlete:
type: object
properties:
id:
type: string
displayName:
type: string
firstName:
type: string
lastName:
type: string
jersey:
type: string
position:
type: string
age:
type: integer
height:
type: string
weight:
type: string
experience:
type: integer
status:
type: string
headshot:
type: string
EventStatus:
type: object
properties:
state:
type: string
example: in
enum:
- pre
- in
- post
completed:
type: boolean
example: false
period:
type: integer
example: 2
clock:
type: string
example: '5:23'
detail:
type: string
example: 5:23 - 2nd Quarter
halftime:
type: boolean
example: false
firstHalfEnded:
type: boolean
example: false
inning:
$ref: '#/components/schemas/InningState'
EventTeam:
type: object
properties:
id:
type: string
example: '12'
name:
type: string
example: Kansas City Chiefs
abbreviation:
type: string
example: KC
logo:
type:
- string
- 'null'
description: Team logo URL when available.
color:
type: string
example: e31837
alternateColor:
type: string
example: ffb612
winner:
type: boolean
example: false
record:
type: string
example: 3-1
score:
type: integer
example: 14
DepthChart:
type: object
properties:
formations:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
example: Base 4-3 D
positions:
type: array
items:
type: object
properties:
position:
type: string
example: QB
positionName:
type: string
example: Quarterback
athletes:
type: array
items:
type: object
properties:
id:
type: string
displayName:
type: string
position:
type: string
jersey:
type: string
rank:
type: integer
example: 1
slot:
type: integer
RateLimit:
type: object
properties:
limit:
type: integer
example: 10000
description: Calls included this month.
remaining:
type: integer
example: 9876
description: Calls remaining this month (approximate; updated asynchronously).
reset:
type: integer
example: 1767225600000
description: Quota reset time, Unix epoch milliseconds.
Odds:
type: object
properties:
provider:
type: string
description: Name of the single source book.
spread:
type:
- object
- 'null'
properties:
line:
type: number
example: -3.5
home:
type: number
example: -110
away:
type: number
example: -110
moneyline:
type:
- object
- 'null'
properties:
home:
type: number
example: -180
away:
type: number
example: 150
overUnder:
type:
- object
- 'null'
properties:
total:
type: number
example: 48.5
over:
type: number
example: -110
under:
type: number
example: -110
updatedAt:
type: string
format: date-time
responses:
RateLimitExceeded:
description: 'Too many requests: either the monthly quota is exhausted (code RATE_LIMIT_EXCEEDED; upgrade or enable overage) or the plan''s per-second rate was exceeded (code RATE_LIMIT_PER_SECOND; Free 1/s, Starter 5/s, Growth 10/s, Pro 20/s, Scale 100/s). Wait for `Retry-After` seconds.'
headers:
Retry-After:
description: Seconds until you may retry.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: 'Missing, malformed, unknown or expired API key (codes: MISSING_TOKEN, USER_NOT_FOUND, TRIAL_EXPIRED).'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ServerError:
description: Unexpected error. Safe to retry with backoff.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: 'Your API key from the dashboard: `Authorization: Bearer <api key>`. Keys are opaque strings, not JWTs.'
ApiKeyHeader:
type: apiKey
in: header
name: X-API-Key
description: Alternative to the Authorization header (useful behind proxies that strip Authorization).
externalDocs:
description: Guides, WebSocket and webhook docs
url: https://www.realtimesportsapi.com/docs?utm_source=openapi
x-refined-from:
- original.json
- realtimesportsapi-com-openapi.json