Genius Sports Competitors/players API
Groups the operations related to competitors of type Player
Groups the operations related to competitors of type Player
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/genius-sports-competitors-players-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: This is Genius Sports Services Fixture API.
version: 2.0.280
title: Fixtures-v2 Competitors/players API
contact:
email: sbonboarding@geniussports.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://fixtures.api.geniussports.com/v2
tags:
- name: competitors/players
description: Groups the operations related to competitors of type Player
paths:
/competitors/players:
get:
tags:
- competitors/players
summary: Retrieve competitors (players) by ID/s. MAX 200 per page
description: Returns competitors (players) wrapped inside a HATEOAS model
parameters:
- name: page
in: query
description: The number of page to be returned. The default value is 1.
required: false
schema:
type: string
- name: pageSize
in: query
description: The size of the page to be returned. The default value is 10.
required: false
schema:
type: string
- name: sortBy
in: query
description: 'The field to ''order by'' by. Descending ordering also allowed. Fields to order by for this endpoint: (id, name, sportId, genderType, localityId, venueId, competitorStatusType)'
required: false
schema:
type: string
- name: x-api-key
in: header
required: true
schema:
type: string
- name: filter
in: query
description: 'The field to ''filter'' by. Check main description for filter comparators. Fields to filter by for this endpoint: (id, name, sportId, genderType, localityId, venueId, competitorStatusType)'
required: false
schema:
type: string
responses:
'200':
description: successful operation
headers:
Access-Control-Allow-Origin:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/PlayerCompetitorResponseModelHATEOASReponseModel'
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'415':
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'429':
description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
security:
- Auth0: []
- api_key: []
operationId: getCompetitorsPlayers
x-operation-id-source: derived
post:
tags:
- competitors/players
summary: Create new player
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
- name: gs-fixtures-api-sub-source
in: header
description: Sub Source Name
required: false
schema:
type: string
responses:
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'201':
description: Created
headers:
gs-duplicate-entity-replaced:
description: Returned when a duplicate entity has been replaced. Value is the 'duplicateEntityId' and the 'originalEntityId'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/PlayerCompetitorResponseModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptedModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'429':
description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'409':
description: Conflict, see the response message or the 'geniussports-conflict-id' header to see the ID of the conflict!
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDuplicateModel'
security:
- Auth0: []
- api_key: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePlayerCompetitor'
required: true
operationId: postCompetitorsPlayers
x-operation-id-source: derived
put:
tags:
- competitors/players
summary: Update existing player
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
- name: gs-fixtures-api-sub-source
in: header
description: Sub Source Name
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PlayerCompetitorResponseModel'
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptedModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'409':
description: Conflict, see the response message or the 'geniussports-conflict-id' header to see the ID of the conflict!
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDuplicateModel'
security:
- Auth0: []
- api_key: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePlayerCompetitor'
required: true
operationId: putCompetitorsPlayers
x-operation-id-source: derived
/competitors/players/{id}:
get:
tags:
- competitors/players
summary: Retrieve competitors (players) details by ID
description: Returns competitors (players) details including sport specific details (metadata properties)
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
- name: id
in: path
description: Single competitors (players) ID to return details for
required: true
schema:
type: string
responses:
'200':
description: successful operation
headers:
Access-Control-Allow-Origin:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/PlayerCompetitorResponseModel'
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptedModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'415':
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'429':
description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
security:
- Auth0: []
- api_key: []
operationId: getCompetitorsPlayersById
x-operation-id-source: derived
/competitors/players/{id}/rounds:
get:
tags:
- competitors/players
summary: Retrieve rounds in which the Player will take part by Team ID/s.
description: Returns the rounds in which the player will take part by GSS Player Id in the path, wrapped inside a HATEOAS model
parameters:
- name: page
in: query
description: The number of page to be returned. The default value is 1.
required: false
schema:
type: string
- name: pageSize
in: query
description: The size of the page to be returned. The default value is 10.
required: false
schema:
type: string
- name: sortBy
in: query
description: 'The field to ''order by'' by. Descending ordering also allowed. Fields to order by for this endpoint: (id, name)'
required: false
schema:
type: string
- name: x-api-key
in: header
required: true
schema:
type: string
- name: filter
in: query
description: 'The field to ''filter'' by. Check main description for filter comparators. Fields to filter by for this endpoint: (id, name, isactive (default = true))'
required: false
schema:
type: string
- name: id
in: path
description: Single competitors (players) ID to return details for
required: true
schema:
type: string
responses:
'200':
description: successful operation
headers:
Access-Control-Allow-Origin:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/CompetitorRoundsResponseModelHATEOASReponseModel'
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'415':
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'429':
description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
security:
- Auth0: []
- api_key: []
operationId: getCompetitorsPlayersByIdRounds
x-operation-id-source: derived
/competitors/players/{id}/seasons:
get:
tags:
- competitors/players
summary: Retrieve seasons in which the Player will take part by Team ID/s.
description: Returns the seasons in which the player will take part by GSS Player Id in the path, wrapped inside a HATEOAS model
parameters:
- name: page
in: query
description: The number of page to be returned. The default value is 1.
required: false
schema:
type: string
- name: pageSize
in: query
description: The size of the page to be returned. The default value is 10.
required: false
schema:
type: string
- name: sortBy
in: query
description: 'The field to ''order by'' by. Descending ordering also allowed. Fields to order by for this endpoint: (id, name)'
required: false
schema:
type: string
- name: x-api-key
in: header
required: true
schema:
type: string
- name: filter
in: query
description: 'The field to ''filter'' by. Check main description for filter comparators. Fields to filter by for this endpoint: (id, name, isactive (default = true))'
required: false
schema:
type: string
- name: id
in: path
description: Single competitors (players) ID to return details for
required: true
schema:
type: string
responses:
'200':
description: successful operation
headers:
Access-Control-Allow-Origin:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/CompetitorSeasonsResponseModelHATEOASReponseModel'
'520':
description: Unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestModel'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'413':
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'415':
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
'429':
description: Too Many Requests OR Limit Exceeded - On reason = Too Many requests one should re-try, for Limit Exceeded that does not help you
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorModel'
security:
- Auth0: []
- api_key: []
operationId: getCompetitorsPlayersByIdSeasons
x-operation-id-source: derived
components:
schemas:
CreatePlayerCompetitor:
type: object
required:
- sportId
properties:
metadataProperties:
type: array
items:
$ref: '#/components/schemas/JsonbModelViewModel'
personId:
type: integer
format: int64
description: If the person is already existing set its Id, otherwise leave it empty and populate the person object
minimum: 1.0
sportId:
type: integer
format: int64
description: Id of the sport in which the competitor can be used
minimum: 1.0
person:
description: Person information if not been created early, if the person already exists - leave empty.
$ref: '#/components/schemas/CreatePersonViewModel'
CompetitorStatusType:
type: integer
title: Competitor Status Type
format: int32
description: 'This property defines the possible status types which can be set as integer values. Each integer value is associated with relevant status type as follows: 0 - Active; 1 - Retired; 2 - Unattached.'
enum:
- '0'
- '1'
- '2'
HALEmbededResponse:
type: object
required:
- id
- name
- ref
properties:
id:
type: integer
format: int64
name:
type: string
externalIds:
$ref: '#/components/schemas/ExternalIdsViewModel'
ref:
type: string
JsonbModelViewModel:
type: object
required:
- name
properties:
name:
type: string
description: Name of the property.
title: Property name
value:
type: string
description: Value of the property.
title: Property value
title: Create/Update Property Model
description: This model should be used to create or update single property value for specific property name for specific model.
PlayerCompetitorResponseModel:
type: object
required:
- competitorStatusType
- createdOn
- id
- name
- person
- sport
- updatesCount
properties:
id:
type: integer
format: int64
createdOn:
type: string
format: date-time
modifiedOn:
type: string
format: date-time
updatesCount:
type: integer
format: int32
metadataProperties:
type: array
items:
$ref: '#/components/schemas/JsonbModel'
externalIds:
$ref: '#/components/schemas/ExternalIdsViewModel'
name:
type: string
sport:
$ref: '#/components/schemas/HALEmbededResponse'
genderType:
type: string
locality:
$ref: '#/components/schemas/HALEmbededResponse'
competitorStatusType:
type: string
person:
$ref: '#/components/schemas/PersonForPlayerResponseModel'
isProtected:
type: boolean
description: Whether the competitor is protected or not.
CompetitorRoundsResponseModelHATEOASReponseModel:
type: object
properties:
page:
type: integer
format: int32
pageSize:
type: integer
format: int32
totalItems:
type: integer
format: int64
items:
type: array
items:
$ref: '#/components/schemas/CompetitorRoundsResponseModel'
self:
type: string
previous:
type: string
next:
type: string
first:
type: string
last:
type: string
AcceptedModel:
type: object
properties:
messages:
type: array
items:
type: string
UpdatePlayerCompetitor:
type: object
required:
- competitorStatusType
- id
properties:
metadataProperties:
type: array
items:
$ref: '#/components/schemas/JsonbModelViewModel'
id:
type: integer
format: int64
minimum: 1.0
competitorStatusType:
$ref: '#/components/schemas/CompetitorStatusType'
ErrorModel:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
error:
$ref: '#/components/schemas/Error'
PersonGenderType:
type: integer
title: Gender Type
format: int32
description: 'This property defines the possible person gender types which can be set as integer values. Each integer value is associated with relevant gender type as follows: 0 - Undefined; 1 - Male; 2 - Female;'
enum:
- '0'
- '1'
- '2'
BadRequestModel:
type: object
properties:
messages:
type: array
items:
type: string
ErrorDuplicateModel:
type: object
properties:
messages:
type: array
items:
type: string
geniusSportsConflictId:
type: string
description: This is the official genius sports ID, which you have conflict with.
CompetitorSeasonsResponseModel:
type: object
required:
- id
- name
- ref
properties:
id:
type: integer
format: int64
description: Id of the season
name:
type: string
description: Name of the season
ref:
type: string
description: Endpoint to season
Error:
type: object
required:
- domain
- message
- reason
properties:
reason:
type: string
domain:
type: string
locationType:
type: string
location:
type: string
message:
type: string
ExternalIdsViewModel:
type: object
properties:
optaId:
type: string
optaLegacyId:
type: string
fibaId:
type: string
vesselId:
type: string
statsEngineId:
type: string
description: External system identifiers. Key represents the external system name (e.g., 'optaId', 'optaLegacyId', 'fibaId', 'vesselId','statsEngineId'), value represents the identifier. The property also allows filtering by specific external system identifiers. For example '?filter=externalIds.optaId[equals]:12345' to filter entities with a specific Opta ID.
CreatePersonViewModel:
type: object
required:
- firstName
- genderType
- lastName
- localityId
- useNickname
properties:
firstName:
type: string
description: The first name of the person
title: First Name
maxLength: 256
lastName:
type: string
description: The last name of the person
title: Last Name
maxLength: 256
nickName:
type: string
description: The nickname of the person
title: Nickname
maxLength: 128
useNickname:
type: boolean
description: Whether the nickname should be used instead of the name of the person when displaying the person. If the useNickname property is set to true nickname is required!
title: Is active
localityId:
type: integer
format: int64
description: Id of the country,virtual place, etc. of the person!
title: Locality Id
dateOfBirth:
type: string
format: date-time
description: The date of birth of the person
title: Date of birth
genderType:
$ref: '#/components/schemas/PersonGenderType'
sports:
type: array
description: Array of sport Ids to be added to the person.
title: Sports
items:
type: integer
description: Sports to which the person belongs to.
title: Sports
CompetitorSeasonsResponseModelHATEOASReponseModel:
type: object
properties:
page:
type: integer
format: int32
pageSize:
type: integer
format: int32
totalItems:
type: integer
format: int64
items:
type: array
items:
$ref: '#/components/schemas/CompetitorSeasonsResponseModel'
self:
type: string
previous:
type: string
next:
type: string
first:
type: string
last:
type: string
JsonbModel:
type: object
properties:
name:
type: string
value:
type: string
isDeleted:
type: boolean
CompetitorRoundsResponseModel:
type: object
required:
- genderType
- id
- name
- ref
properties:
id:
type: integer
format: int64
description: Id of the round
name:
type: string
description: Name of the round
ref:
type: string
description: Endpoint to round
genderType:
type: string
description: Gender of the competitor
locality:
$ref: '#/components/schemas/HALEmbededResponse'
PersonForPlayerResponseModel:
type: object
required:
- createdOn
- firstName
- fullName
- genderType
- id
- isActive
- lastName
- locality
- ref
- updatesCount
- useNickname
properties:
id:
type: integer
format: int64
createdOn:
type: string
format: date-time
modifiedOn:
type: string
format: date-time
updatesCount:
type: integer
format: int32
fullName:
type: string
nickName:
type: string
useNickname:
type: boolean
firstName:
type: string
lastName:
type: string
genderType:
type: string
dateOfBirth:
type: string
format: date-time
isActive:
type: boolean
locality:
$ref: '#/components/schemas/HALEmbededResponse'
sports:
type: array
items:
$ref: '#/components/schemas/HALEmbededResponse'
ref:
type: string
PlayerCompetitorResponseModelHATEOASReponseModel:
type: object
properties:
page:
type: integer
format: int32
pageSize:
type: integer
format: int32
totalItems:
type: integer
format: int64
items:
type: array
items:
$ref: '#/components/schemas/PlayerCompetitorResponseModel'
self:
type: string
previous:
type: string
next:
type: string
first:
type: string
last:
type: string
securitySchemes:
Auth0:
type: apiKey
name: Authorization
in: header
x-amazon-apigateway-authtype: oauth2
api_key:
type: apiKey
name: x-api-key
in: header
x-amazon-apigateway-security-policy: TLS_1_0