api-ninjas-com Football (Soccer) API

Fixtures, live scores and results, league tables, clubs and squads for the Premier League (epl), La Liga (laliga), Bundesliga, Serie A (seriea), Ligue 1 (ligue1), UEFA Champions League (ucl), UEFA Europa League (uel) and MLS (mls). The free plan covers the current season and masks scores, period and clock of games in progress; paid plans get live data and the three previous seasons; the Business tier and above gets the full season archive.

Operations 4

GET /v1/soccermatches Get fixtures, live scores and results #
GET /v1/soccerstandings Get league standings #
GET /v1/soccerclubs List teams #
GET /v1/soccerplayers Get rosters and player profiles #

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/api-ninjas-com:api-ninjas-com-football-soccer-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

api-ninjas-com-football-soccer-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ninjas Football (Soccer) API
  description: 'Combined OpenAPI specification for every API Ninjas endpoint. Requests go to https://api.api-ninjas.com with an `X-Api-Key` header; get a free key at https://api-ninjas.com/register. Human-readable docs: https://api-ninjas.com/api. Index for LLMs: https://api-ninjas.com/llms.txt.'
  version: 1.0.0
  contact:
    name: API Ninjas
    url: https://api-ninjas.com
  license:
    name: Proprietary
servers:
- url: https://api.api-ninjas.com
  description: API Ninjas Production
security:
- ApiKeyAuth: []
tags:
- name: Football (Soccer)
  description: Fixtures, live scores and results, league tables, clubs and squads for the Premier League (epl), La Liga (laliga), Bundesliga, Serie A (seriea), Ligue 1 (ligue1), UEFA Champions League (ucl), UEFA Europa League (uel) and MLS (mls). The free plan covers the current season and masks scores, period and clock of games in progress; paid plans get live data and the three previous seasons; the Business tier and above gets the full season archive.
paths:
  /v1/soccermatches:
    get:
      summary: Get fixtures, live scores and results
      description: Returns matches for one day, a team's season, a season (50 per page; use offset, or limit on paid plans) or one game id. With only league, returns today's matches in the league's home time zone.
      operationId: getSoccerMatches
      parameters:
      - name: league
        in: query
        required: false
        description: epl, laliga, bundesliga, seriea, ligue1, ucl, uel or mls. Required unless game_id or a team id is given.
        schema:
          type: string
          example: epl
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
      - name: date
        in: query
        required: false
        description: 'Game day in the league''s home time zone (YYYY-MM-DD): US Eastern for the US leagues and MLS, UK time for the Premier League, Central European time for the other European competitions.'
        schema:
          type: string
          example: '2026-10-22'
      - name: team
        in: query
        required: false
        description: 'Team id, abbreviation or name: that team''s games in the season.'
        schema:
          type: string
          example: ARS
      - name: season
        in: query
        required: false
        description: Season as the year it starts (2026 = 2026-27 for seasons that span two years). Defaults to the current season.
        schema:
          type: integer
          example: 2026
      - name: season_type
        in: query
        required: false
        description: Only this part of the season.
        schema:
          type: string
          enum:
          - regular
          - postseason
          - group_stage
          - league_phase
          - knockout
      - name: status
        in: query
        required: false
        description: Only games with this status.
        schema:
          type: string
          enum:
          - scheduled
          - in_progress
          - final
          - postponed
          - canceled
          - suspended
          - delayed
      - name: game_id
        in: query
        required: false
        description: Return one game.
        schema:
          type: string
          example: epl-20261025-new-cry
      - name: limit
        in: query
        required: false
        description: Results per page (1-500). Premium only. Default 50.
        schema:
          type: integer
      - name: offset
        in: query
        required: false
        description: Results to skip, for paging.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoccerGame'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoccerError'
      security:
      - ApiKeyAuth: []
      tags:
      - Football (Soccer)
  /v1/soccerstandings:
    get:
      summary: Get league standings
      description: Returns the league table for a season, ordered by league rank, or by conference or division rank when filtered.
      operationId: getSoccerStandings
      parameters:
      - name: league
        in: query
        required: true
        description: epl, laliga, bundesliga, seriea, ligue1, ucl, uel or mls.
        schema:
          type: string
          example: epl
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
      - name: season
        in: query
        required: false
        description: Season as the year it starts. Defaults to the current season.
        schema:
          type: integer
          example: 2026
      - name: conference
        in: query
        required: false
        description: Only this conference, e.g. AFC, Eastern or AL.
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoccerStanding'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoccerError'
      security:
      - ApiKeyAuth: []
      tags:
      - Football (Soccer)
  /v1/soccerclubs:
    get:
      summary: List teams
      description: Lists the clubs with domestic league and country and home venue.
      operationId: getSoccerClubs
      parameters:
      - name: league
        in: query
        required: false
        description: Only this league; every league of the API when absent.
        schema:
          type: string
          example: epl
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
      - name: team
        in: query
        required: false
        description: 'Team id, abbreviation or name: one team.'
        schema:
          type: string
          example: ARS
      - name: active
        in: query
        required: false
        description: false lists former teams that appear in past seasons.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoccerTeam'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoccerError'
      security:
      - ApiKeyAuth: []
      tags:
      - Football (Soccer)
  /v1/soccerplayers:
    get:
      summary: Get rosters and player profiles
      description: Returns current rosters and player profiles. Provide league with team or name, or a player_id.
      operationId: getSoccerPlayers
      parameters:
      - name: league
        in: query
        required: false
        description: epl, laliga, bundesliga, seriea, ligue1, ucl, uel or mls.
        schema:
          type: string
          example: epl
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
      - name: team
        in: query
        required: false
        description: 'Team id, abbreviation or name: the team''s current roster.'
        schema:
          type: string
          example: ARS
      - name: name
        in: query
        required: false
        description: Full or partial player name (case and accent insensitive).
        schema:
          type: string
      - name: player_id
        in: query
        required: false
        description: Return one player.
        schema:
          type: string
      - name: position
        in: query
        required: false
        description: Only this position, e.g. F.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Results per page (1-500). Premium only. Default 50.
        schema:
          type: integer
      - name: offset
        in: query
        required: false
        description: Results to skip, for paging.
        schema:
          type: integer
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SoccerPlayer'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoccerError'
      security:
      - ApiKeyAuth: []
      tags:
      - Football (Soccer)
components:
  schemas:
    SoccerGame:
      type: object
      properties:
        game_id:
          type: string
          example: epl-20261025-new-cry
          description: Unique, permanent id of the game.
        league:
          type: string
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
        sport:
          type: string
          enum:
          - soccer
        season:
          type: integer
          example: 2026
          description: Year the season starts.
        season_label:
          type: string
          example: 2026-27
        season_type:
          type: string
          enum:
          - regular
          - postseason
          - group_stage
          - league_phase
          - knockout
        round:
          type:
          - string
          - 'null'
          description: the cup or playoff round, e.g. Round of 16, Quarterfinals, Final; null for league matches.
        leg:
          type:
          - integer
          - 'null'
          description: 1 or 2 for a two-legged knockout tie, otherwise null.
        date:
          type: string
          format: date
          description: Match day in the competition's home time zone.
        start_time:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - scheduled
          - in_progress
          - final
          - postponed
          - canceled
          - suspended
          - delayed
        status_detail:
          type:
          - string
          - 'null'
          description: 'While a match is in progress: halftime, extra_time_break or penalties. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.'
        period:
          type:
          - integer
          - 'null'
          description: 'Current or last half played: 1 and 2, then 3 and 4 for extra time. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.'
        clock:
          type:
          - string
          - 'null'
          description: Match minute while in progress, e.g. 67' or 90'+3'. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
        home_team:
          $ref: '#/components/schemas/SoccerTeamRef'
        away_team:
          $ref: '#/components/schemas/SoccerTeamRef'
        home_score:
          type:
          - integer
          - 'null'
          description: While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
        away_score:
          type:
          - integer
          - 'null'
          description: While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
        period_scores:
          type:
          - object
          - 'null'
          description: Goals per half, with both halves of extra time when played. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
          properties:
            home:
              type: array
              items:
                type: integer
            away:
              type: array
              items:
                type: integer
        penalty_scores:
          type:
          - object
          - 'null'
          description: penalty shootout score when a match is decided on penalties. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
          properties:
            home:
              type: integer
            away:
              type: integer
        aggregate_scores:
          type:
          - object
          - 'null'
          description: aggregate score of a two-legged tie after this match. While a game is in progress, the free plan receives the string "This field is for premium subscribers only." instead.
          properties:
            home:
              type: integer
            away:
              type: integer
        decided_in:
          type:
          - string
          - 'null'
          enum:
          - regulation
          - extra_time
          - penalties
          - null
        winner:
          type:
          - string
          - 'null'
          description: team_id of the winner of a final match (the shootout winner for a match decided on penalties); null before then and for draws.
        venue:
          $ref: '#/components/schemas/SoccerVenue'
        neutral_site:
          type: boolean
        original_date:
          type:
          - string
          - 'null'
          format: date
          description: First scheduled date of a moved game.
        updated_at:
          type: string
          format: date-time
    SoccerPlayer:
      type: object
      properties:
        player_id:
          type: string
          description: Permanent id, the same in every league.
        league:
          type: string
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
        team:
          allOf:
          - $ref: '#/components/schemas/SoccerTeamRef'
        name:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        position:
          type: string
        jersey_number:
          type:
          - string
          - 'null'
        height_in:
          type:
          - integer
          - 'null'
        height_cm:
          type:
          - integer
          - 'null'
        weight_lb:
          type:
          - integer
          - 'null'
        weight_kg:
          type:
          - integer
          - 'null'
        birth_date:
          type:
          - string
          - 'null'
          format: date
        birth_place:
          type:
          - object
          - 'null'
          properties:
            city:
              type:
              - string
              - 'null'
            state:
              type:
              - string
              - 'null'
            country:
              type:
              - string
              - 'null'
        roster_status:
          type: string
          example: active
        nationality:
          type: string
    SoccerTeam:
      type: object
      properties:
        team_id:
          type: string
          example: soccer-arsenal
          description: Club id, the same in every competition.
        league:
          type:
          - string
          - 'null'
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
          - null
          description: The team's league; for a soccer club its domestic league, or null for a club from another country's league seen in the UEFA competitions.
        sport:
          type: string
          enum:
          - soccer
        abbreviation:
          type: string
        name:
          type: string
        short_name:
          type:
          - string
          - 'null'
        city:
          type: string
        country:
          type:
          - string
          - 'null'
          description: 'Soccer clubs: ISO 3166-1 alpha-2'
        venue:
          $ref: '#/components/schemas/SoccerVenue'
        active:
          type: boolean
    SoccerVenue:
      type:
      - object
      - 'null'
      properties:
        name:
          type: string
        city:
          type:
          - string
          - 'null'
        state:
          type:
          - string
          - 'null'
        country:
          type:
          - string
          - 'null'
          description: ISO 3166-1 alpha-2
    SoccerStanding:
      type: object
      description: Fields that do not apply to a league are omitted.
      properties:
        league:
          type: string
          enum:
          - epl
          - laliga
          - bundesliga
          - seriea
          - ligue1
          - ucl
          - uel
          - mls
        sport:
          type: string
          enum:
          - soccer
        season:
          type: integer
        season_label:
          type: string
        team:
          $ref: '#/components/schemas/SoccerTeamRef'
        conference:
          type:
          - string
          - 'null'
          description: 'MLS: conference (Eastern or Western); null in the European competitions.'
        division:
          type:
          - string
          - 'null'
        group:
          type: string
          description: UEFA seasons with a group stage, e.g. Group C.
        games_played:
          type: integer
        wins:
          type: integer
        draws:
          type: integer
        losses:
          type: integer
        points:
          type: integer
        goals_for:
          type: integer
        goals_against:
          type: integer
        goal_difference:
          type: integer
        points_deducted:
          type: integer
          description: 'Soccer: points deducted by the competition, when any'
        league_rank:
          type: integer
        conference_rank:
          type: integer
        division_rank:
          type: integer
        group_rank:
          type: integer
          description: 'UEFA group stage: position in the group'
        qualification:
          type: string
          description: 'Soccer: what the position leads to, e.g. Champions League or Relegation'
        final:
          type: boolean
    SoccerError:
      type: object
      properties:
        error:
          type: string
    SoccerTeamRef:
      type: object
      properties:
        team_id:
          type: string
          example: soccer-arsenal
          description: Club id, the same in every competition, e.g. soccer-arsenal.
        name:
          type: string
        abbreviation:
          type: string
          example: ARS
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
externalDocs:
  description: API Ninjas documentation
  url: https://api-ninjas.com/api