SportStatsAPI Coverage API

The coverage API from SportStatsAPI — 2 operation(s) for coverage.

GitHub OpenAPI

Operations 2

GET /coverage Data coverage per league #
GET /coverage/{sport}/{league} Data coverage of one league #

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/sportstatsapi:sportstatsapi-coverage-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

sportstatsapi-coverage-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: SportStatsAPI
    url: https://sportstatsapi.com
  description: 'Every public endpoint of SportStatsAPI. Endpoints marked with x-x402 can also be paid per call by an AI agent; the curated list of those is https://api.sportstatsapi.com/api/openapi.agents.json.


    Authentication: an API key (header X-API-Key, or Authorization: Bearer ), or without a key an x402 payment (header PAYMENT-SIGNATURE, USDC on Base). Prices and payment offers: https://api.sportstatsapi.com/.well-known/x402. Docs for AI models: https://api.sportstatsapi.com/llms.txt. MCP server: https://mcp.sportstatsapi.com/mcp.'
  summary: Sports data API and x402 pay-per-call endpoints
  title: SportStats Coverage API
  version: '1.0'
servers:
- url: https://api.sportstatsapi.com/api/v1
tags:
- name: Coverage
paths:
  /coverage:
    get:
      description: 'Public, no API key. Per published competition (our league code and site key): live scores (live: updated while matches are on, seen in play; live_expected: covered live by the feed but not seen in play yet; delayed: final results after the match, result_delay_min is the median minutes after the expected end; none: fixtures only), how far back results, box scores and play-by-play go (history, first match date), and what recent matches carry (statistics Full / Basic / Scores only, standings, lineups, play_by_play). With the sold sports'' endpoints: enhanced marks Insights data (briefings, facts, head-to-head), included in Data + Insights plans and never on Free; feature names the plan feature an endpoint needs; data names the league field that says whether a league has it; all_sports_pack_only marks sports sold only in the all-sports pack. Measured from the stored data, rebuilt nightly and before every website build; children''s competitions under 16 are not listed.'
      operationId: getCoverage
      parameters:
      - description: Only this sport (soccer, basketball...)
        in: query
        name: sport
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/middleware.Response'
                - properties:
                    data:
                      $ref: '#/components/schemas/handlers.PublicCoverage'
                  type: object
          description: OK
        '500':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/middleware.Response'
                - properties:
                    error:
                      $ref: '#/components/schemas/middleware.ErrorInfo'
                  type: object
          description: Internal Server Error
      summary: Data coverage per league
      tags:
      - Coverage
  /coverage/{sport}/{league}:
    get:
      description: 'Public, no API key. One competition''s coverage (as GET /coverage) with its sport''s endpoints. league: our league code (l…) or the competition key (england--premier-league, basketball--usa--nba; the sport prefix may be left out).'
      operationId: getCoverageBySportByLeague
      parameters:
      - description: Sport
        in: path
        name: sport
        required: true
        schema:
          type: string
      - description: League code or competition key
        in: path
        name: league
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/middleware.Response'
                - properties:
                    data:
                      $ref: '#/components/schemas/handlers.LeagueCoverageDetail'
                  type: object
          description: OK
        '404':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/middleware.Response'
                - properties:
                    error:
                      $ref: '#/components/schemas/middleware.ErrorInfo'
                  type: object
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/middleware.Response'
                - properties:
                    error:
                      $ref: '#/components/schemas/middleware.ErrorInfo'
                  type: object
          description: Internal Server Error
      summary: Data coverage of one league
      tags:
      - Coverage
components:
  schemas:
    database.History:
      properties:
        box_scores_from:
          description: 'match statistics / box score (cricket: scorecard)'
          type: string
        play_by_play_from:
          type: string
        results_from:
          type: string
      type: object
    database.CoverageLeague:
      properties:
        all_sports_pack_only:
          description: 'AllSportsPackOnly: the sport is sold only in the all-sports pack,

            never as a one-sport or one-league plan (SportAllPackOnly).'
          type: boolean
        code:
          description: our league code (l…)
          type: string
        country:
          type: string
        history:
          $ref: '#/components/schemas/database.History'
        key:
          description: the website's competition key
          type: string
        lineups:
          description: recent matches carry line-ups
          type: boolean
        live:
          description: 'live: scores update while matches are on, and we have seen them

            live; live_expected: the feed covers it live but no match of it was

            seen in play yet (new or off season since tracking began, 4 Oct

            2026); delayed: final results only, after the match; none: fixtures

            only so far.'
          type: string
        name:
          type: string
        play_by_play:
          description: recent matches carry play-by-play
          type: boolean
        result_delay_min:
          description: median minutes from the expected end of a match to its final result
          type: integer
        sport:
          type: string
        standings:
          type: boolean
        statistics:
          description: 'recent results: Full, Basic, Scores only'
          type: string
        updated_at:
          type: string
      type: object
    middleware.Response:
      properties:
        data: {}
        error:
          $ref: '#/components/schemas/middleware.ErrorInfo'
        meta:
          $ref: '#/components/schemas/middleware.MetaInfo'
        success:
          type: boolean
      type: object
    handlers.CoverageEndpoint:
      properties:
        all_sports_pack_only:
          description: 'AllSportsPackOnly: the sport is only in the all-sports pack.'
          type: boolean
        data:
          description: 'Data: the league coverage field that says whether a league has this

            endpoint''s data (live, box_scores, play_by_play, standings, lineups); ""

            for every league.'
          type: string
        enhanced:
          description: 'Enhanced: Insights data (briefings, facts, head-to-head), in the paid

            Data + Insights plans only, never on Free (middleware.TierInsight).'
          type: boolean
        feature:
          description: 'Feature: the plan feature the endpoint needs (insights, play_by_play,

            injuries); "" when every plan of the sport has it.'
          type: string
        path:
          description: under /api/v1
          type: string
        summary:
          type: string
      type: object
    handlers.LeagueCoverageDetail:
      properties:
        all_sports_pack_only:
          description: 'AllSportsPackOnly: the sport is sold only in the all-sports pack,

            never as a one-sport or one-league plan (SportAllPackOnly).'
          type: boolean
        code:
          description: our league code (l…)
          type: string
        country:
          type: string
        endpoints:
          items:
            $ref: '#/components/schemas/handlers.CoverageEndpoint'
          type: array
        history:
          $ref: '#/components/schemas/database.History'
        key:
          description: the website's competition key
          type: string
        lineups:
          description: recent matches carry line-ups
          type: boolean
        live:
          description: 'live: scores update while matches are on, and we have seen them

            live; live_expected: the feed covers it live but no match of it was

            seen in play yet (new or off season since tracking began, 4 Oct

            2026); delayed: final results only, after the match; none: fixtures

            only so far.'
          type: string
        name:
          type: string
        play_by_play:
          description: recent matches carry play-by-play
          type: boolean
        result_delay_min:
          description: median minutes from the expected end of a match to its final result
          type: integer
        sport:
          type: string
        standings:
          type: boolean
        statistics:
          description: 'recent results: Full, Basic, Scores only'
          type: string
        updated_at:
          type: string
      type: object
    handlers.PublicCoverage:
      properties:
        endpoints:
          items:
            $ref: '#/components/schemas/handlers.CoverageEndpoint'
          type: array
        leagues:
          items:
            $ref: '#/components/schemas/database.CoverageLeague'
          type: array
      type: object
    middleware.MetaInfo:
      properties:
        attribution:
          description: Attribution a data source's licence asks for (Cricsheet's history).
          type: string
        has_more:
          description: 'HasMore: the cursor-paged list has more rows now (ask again at once).'
          type: boolean
        limit:
          type: integer
        live:
          description: 'Live: the answer is the live feed''s, kept while the match is played

            (cricket ball by ball before Cricsheet''s file replaces it).'
          type: boolean
        next_cursor:
          description: NextCursor continues a cursor-paged list (GET /changes).
          type: string
        offset:
          type: integer
        sources:
          description: 'Sources: where the answer''s data came from, with each source''s licence

            and the attribution it asks for (docs/source-licences.md).'
          items:
            $ref: '#/components/schemas/middleware.SourceInfo'
          type: array
        total:
          type: integer
        warnings:
          description: 'Warnings: query parameters ignored or changed (a limit above the

            maximum is clamped to it; a from/to that is not a date is ignored).'
          items:
            type: string
          type: array
      type: object
    middleware.SourceInfo:
      properties:
        attribution:
          description: show it with the data
          example: 'Data: nflverse (CC-BY 4.0)'
          type: string
        licence:
          description: the licence or terms the data is served under
          example: CC-BY-4.0
          type: string
        name:
          description: provider = our main licensed feed
          example: nflverse
          type: string
      type: object
    middleware.ErrorInfo:
      properties:
        code:
          type: string
        message:
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: API key
      in: header
      name: X-API-Key
      type: apiKey
    BearerAuth:
      description: The same API key as a bearer token
      scheme: bearer
      type: http
    x402:
      description: x402 v2 payment (USDC on Base, eip155:8453) built from the offers of a 402 answer; see https://api.sportstatsapi.com/.well-known/x402
      in: header
      name: PAYMENT-SIGNATURE
      type: apiKey
externalDocs:
  description: x402 payment offers and prices
  url: https://api.sportstatsapi.com/.well-known/x402