Genius Sports Venues API

The Venues API from Genius Sports — 3 operation(s) for venues.

Operations 8

OPTIONS /venues
GET /venues Retrieve venues by ID/s. MAX 200 per page.
POST /venues Create new venue
PUT /venues Update existing venue
OPTIONS /venues/{id}
GET /venues/{id} Retrieve venues details by ID.
DELETE /venues/{id} Delete existing venue
GET /v1/venues List venues #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/genius-sports-venues-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

genius-sports-venues-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Genius Sports Venues API
  version: '1.0'
  description: 'Operations tagged Venues across 2 of this provider''s published API definitions: genius-sports-fixtures-v2-openapi.yml, genius-sports-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://fixtures.api.geniussports.com/v2
- url: https://api.wh.geniussports.com
  description: Data Warehouse
tags:
- name: Venues
paths:
  /venues:
    options:
      responses:
        '200':
          description: 200 response
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
            Access-Control-Allow-Methods:
              schema:
                type: string
            Access-Control-Allow-Headers:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
      tags:
      - Venues
    get:
      tags:
      - Venues
      summary: Retrieve venues by ID/s. MAX 200 per page.
      description: Returns venues 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)'
        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/VenueResponseModelHATEOASReponseModel'
        '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: []
    post:
      tags:
      - Venues
      summary: Create new venue
      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
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VenueResponseModel'
        '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/CreateVenue'
        required: true
    put:
      tags:
      - Venues
      summary: Update existing venue
      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/VenueResponseModel'
        '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/UpdateVenue'
        required: true
    servers:
    - url: https://fixtures.api.geniussports.com/v2
  /venues/{id}:
    options:
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: 200 response
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
            Access-Control-Allow-Methods:
              schema:
                type: string
            Access-Control-Allow-Headers:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
      tags:
      - Venues
    get:
      tags:
      - Venues
      summary: Retrieve venues details by ID.
      description: Returns venues 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 venues 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/VenueResponseModel'
        '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: []
    delete:
      tags:
      - Venues
      summary: Delete existing venue
      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
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
        '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'
      security:
      - Auth0: []
      - api_key: []
    servers:
    - url: https://fixtures.api.geniussports.com/v2
  /v1/venues:
    get:
      tags:
      - Venues
      summary: List venues
      operationId: listVenues
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          description: Venues envelope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEnvelope'
      security:
      - apiKey: []
    servers:
    - url: https://api.wh.geniussports.com
      description: Data Warehouse
components:
  schemas:
    Empty:
      type: object
    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.
    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.
    Error:
      type: object
      required:
      - domain
      - message
      - reason
      properties:
        reason:
          type: string
        domain:
          type: string
        locationType:
          type: string
        location:
          type: string
        message:
          type: string
    HALEmbededResponse:
      type: object
      required:
      - id
      - name
      - ref
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        externalIds:
          $ref: '#/components/schemas/ExternalIdsViewModel'
        ref:
          type: string
    VenueResponseModelHATEOASReponseModel:
      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/VenueResponseModel'
        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
    CreateVenue:
      type: object
      required:
      - name
      - sports
      properties:
        name:
          type: string
          description: The name of the venue
          title: Venue name
          maxLength: 250
        cityName:
          type: string
          description: Name of the city where the Venue is
          title: City name
          maxLength: 256
        longitude:
          type: number
          format: double
          description: Longitude of the city where the Venue is
          title: Longitude
        latitude:
          type: number
          format: double
          description: Latitude of the city where the Venue is
          title: Latitude
        localityId:
          type: integer
          format: int64
          description: Id of the country,virtual place, etc. where the venue is located.
          title: Locality Id
        parentVenueId:
          type: integer
          format: int64
          description: The id of the parent venue
          title: Parent Venue Id
        sports:
          type: array
          description: Array of sport Ids which can be played on this venue
          title: Sports
          items:
            type: integer
            description: Sports ids which can be played on the venue.
            title: Sport ids
        metadataProperties:
          type: array
          description: In order to retrieve allowed metadata properties with their values execute get request on this path - /sports/{id}/venue/metadata
          items:
            $ref: '#/components/schemas/JsonbModelViewModel'
        externalIds:
          $ref: '#/components/schemas/ExternalIdsViewModel'
    AcceptedModel:
      type: object
      properties:
        messages:
          type: array
          items:
            type: string
    ErrorModel:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        error:
          $ref: '#/components/schemas/Error'
    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.
    VenueResponseModel:
      type: object
      required:
      - createdOn
      - id
      - latitude
      - longitude
      - name
      - 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
          description: In order to retrieve allowed metadata properties with their values execute get request on this path - /sports/{id}/venue/metadata
          items:
            $ref: '#/components/schemas/JsonbModel'
        externalIds:
          $ref: '#/components/schemas/ExternalIdsViewModel'
        name:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        locality:
          $ref: '#/components/schemas/HALEmbededResponse'
        capacity:
          type: integer
          format: int32
        cityName:
          type: string
        sports:
          type: array
          items:
            $ref: '#/components/schemas/HALEmbededResponse'
        parentVenue:
          $ref: '#/components/schemas/HALEmbededResponse'
    UpdateVenue:
      type: object
      required:
      - name
      - sports
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          description: The name of the venue
          title: Venue name
          maxLength: 250
        cityName:
          type: string
          description: Name of the city where the Venue is
          title: City name
          maxLength: 256
        localityId:
          type: integer
          format: int64
          description: Id of the country,virtual place, etc. where the venue is located.
          title: Locality Id
        sports:
          type: array
          description: Array of sport Ids which can be played on this venue
          title: Sports
          items:
            type: integer
            description: Sports ids which can be played on the venue.
            title: Sport ids
        metadataProperties:
          type: array
          description: In order to retrieve allowed metadata properties with their values execute get request on this path - /sports/{id}/venue/metadata
          items:
            $ref: '#/components/schemas/JsonbModelViewModel'
        externalIds:
          $ref: '#/components/schemas/ExternalIdsViewModel'
    ResponseEnvelope:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          oneOf:
          - type: object
          - type: array
            items:
              type: object
    ResponseMeta:
      type: object
      properties:
        version:
          type: string
        code:
          type: integer
        status:
          type: string
          enum:
          - success
          - failure
        request:
          type: string
        time:
          type: integer
        count:
          type: integer
        limit:
          type: integer
  parameters:
    Offset:
      name: offset
      in: query
      description: Skip the first N records
      schema:
        type: integer
        default: 0
    Limit:
      name: limit
      in: query
      description: Record limit (default 10, maximum 500)
      schema:
        type: integer
        default: 10
        maximum: 500
    Fields:
      name: fields
      in: query
      description: Comma-separated list of fields to return
      schema:
        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
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key identifying the caller (deprecated ak query parameter also supported)
x-refined-from:
- genius-sports-fixtures-v2-openapi.yml
- genius-sports-openapi.yml
x-amazon-apigateway-security-policy: TLS_1_0