Football Stats API: Football Data For Developers (2026)

Get goals, assists, possession, shots, player ratings and xG via the GOAL API football stats API. REST + WebSocket. 5 SDKs. Free tier — no card required.

GOAL API

6 min read

If you are building a sports app, analytics dashboard, fantasy platform, or betting product, the quality of your football statistics layer determines everything. Not just goals and scores — formations, progressive passes, xG, defensive actions, physical metrics, and player ratings all live inside a well-structured football stats API.

This guide covers exactly what football statistics are available through GOAL API, which endpoints to call, what fields come back, and how to use them across common developer use cases in 2026.

GOAL API provides match statistics, player statistics, team statistics, standings with form data, top scorers, and head-to-head records — all via REST, with official SDKs in JavaScript, Python, Go, Dart and PHP. Free tier available at goal-api.com/signup — no credit card required.

What "Football Stats API" Actually Means

Football statistics data splits into four categories, each served by different endpoints:

  • Match statistics — possession, shots, corners, fouls, offsides, saves, big chances (per fixture)
  • Player statistics — goals, assists, minutes, ratings, passes, tackles, cards (per match or per season)
  • Team statistics — season-level aggregates: form, goals per game, clean sheets, average possession
  • League statistics — standings tables, top scorers, top assisters, form guides

A complete integration typically pulls from two or three of these categories depending on your product type.

Match Statistics Endpoints

GET /v1/results

Returns per-match statistics for both teams. Fields returned include:

Stat Field Description Example Value
Ball Possession Percentage share of possession 58% / 42%
Total Shots All attempts on goal including blocked 14 / 9
Shots on Target Attempts requiring save or resulting in goal 6 / 3
Blocked Shots Attempts blocked by outfield player 3 / 2
Shots off Target Attempts wide or over the bar 5 / 4
Corner Kicks Corners awarded in the match 7 / 4
Offsides Offside decisions against each team 2 / 1
Fouls Total fouls committed 11 / 14
Yellow Cards Bookings issued 1 / 2
Red Cards Dismissals issued 0 / 1
Goalkeeper Saves Saves made by keeper 3 / 5
Total Passes All passes attempted 487 / 332
Pass Accuracy Percentage of passes completed 89% / 81%

Example call:

curl "https://api.goal-api.com/v1/fixtures/cmt63it4jf96dt107junqu2m0/statistics" \
  -H "Authorization: Bearer YOUR_API_KEY"

Python SDK:

from goal_api import GoalAPI

goal = GoalAPI(api_key="YOUR_KEY")
stats = goal.fixtures.statistics("cmt63it4jf96dt107junqu2m0")

for s in stats["data"]["match"]["fullTime"]:
    print(f"{s['type']}: {s['home']} / {s['away']}")

GET /v1/results/today

Returns goals, cards, substitutions and VAR decisions in chronological order. Each event includes minute, player ID, player name, team, and event type. Use this to power live event feeds, timeline visualisations, and auto-generated match reports.

Player Statistics Endpoints

GET /v1/players/search?q=ronaldo

Returns season-level statistics for a single player across all competitions they have appeared in. Fields include:

Category Fields Available
Attacking Goals, assists, shots total, shots on target, dribbles attempted/succeeded
Passing Total passes, key passes, pass accuracy, crosses
Defensive Tackles, interceptions, blocks, clearances, duels won/total
Discipline Yellow cards, red cards, fouls committed, fouls drawn
Goalkeeping Saves, goals conceded, clean sheets, penalties saved
Physical Minutes played, appearances, starts, substitutions on/off
Ratings Average match rating (where available from data source)

GET /v1/leagues/:id/top-scorers

Returns the top goalscorers for any league and season. Each entry includes player name, team, goals, assists, penalties scored, and appearances. This endpoint is commonly used for golden boot trackers, fantasy league scoring tables, and editorial statistics pages.

curl "https://api.goal-api.com/v1/leagues/cmr77dvkr005nrx06lp7rvp49/top-scorers?season=2025-2026" \
  -H "Authorization: Bearer YOUR_API_KEY"

GET /v1/players/top/:stat

Returns the top-performing players across all tracked leagues for a given statistic. The :stat parameter accepts values including goals, assists, rating, and saves. Use this to build cross-league leaderboards or compare performers across competitions.

goal.players.top("goals", limit=20)   # Python SDK

GET /v1/players/compare?ids=

Accepts two player IDs and returns a side-by-side statistical comparison. Useful for player profile pages, transfer analysis tools, and editorial content generators.

Team Statistics Endpoints

GET /v1/teams/:id/statistics

Returns season-level team statistics. Includes goals scored and conceded, clean sheets, average possession, form (last 5 results), wins/draws/losses split home and away, and average shots per game.

curl "https://api.goal-api.com/v1/teams/cmr7fp1wp2n8yrx061vxmb1a5/statistics?season=2025-2026" \
  -H "Authorization: Bearer YOUR_API_KEY"

Pass ?season= to get historical data. The season parameter accepts the format YYYY-YYYY (e.g. 2024-2025).

Standings and Form Statistics

GET /v1/leagues/:id

Returns the full league table with all standard standing columns: position, team, played, won, drawn, lost, goals for, goals against, goal difference, points. Also includes:

  • Recent form — last 5 result string (e.g. W W D L W)
  • Home and away record split
  • Promotion and relegation zone flags

GET /v1/leagues/:id/standings

Returns teams ranked by current form rather than points total. Useful for form-guide widgets, tipster tools, and "in-form team" editorial sections.

GET /standings/:leagueId/home and /away

Returns separate home and away league tables — commonly used in betting analytics to identify teams who perform significantly differently at home versus away.

Head-to-Head Statistics

GET /h2h/:team1Id/:team2Id

Returns a summary of all historical matches between two teams: total matches, wins for each side, draws, goals scored. Includes the most recent fixtures.

GET /v1/h2h/:team1Id/:team2Id/stats

Returns aggregated H2H statistics: average goals per game, clean sheet rate, both-teams-to-score rate, and form in head-to-head fixtures specifically. Use this for pre-match analytics pages and betting insight tools.

Use Cases by Product Type

Product Type Primary Endpoints Key Stats Used
Live score app /fixtures/:id/events, /fixtures/live Goals, cards, match status
Fantasy football /fixtures/:id/statistics, /players/:id/statistics Goals, assists, minutes, ratings
Betting analytics /fixtures/:id/statistics, /h2h/:id/:id/stats Shots, possession, H2H form
Sports media / editorial /leagues/:id/top-scorers, /players/compare Leaderboards, player comparisons
ML / prediction models /teams/:id/statistics, /standings/:id/form Season aggregates, form strings
Football analytics dashboard /fixtures/:id/statistics, /players/top/:stat Full match and player data

Python Example: Build a Top Scorers Table

from goal_api import GoalAPI
from tabulate import tabulate

goal = GoalAPI(api_key="YOUR_KEY")
scorers = goal.leagues.top_scorers("cmr77dvkr005nrx06lp7rvp49", limit=20)  # Premier League

rows = [
    [
        i + 1,
        p["playerName"],
        p["teamName"],
        p.get("goals", 0),
        p.get("assists", 0),
        p.get("penaltyGoals", 0),
    ]
    for i, p in enumerate(scorers["data"])
]

print(tabulate(rows, headers=["#", "Player", "Club", "G", "A", "Pens"]))

JavaScript Example: Match Statistics Widget

import { GoalApi } from "@goalapi/sdk";

const goal = new GoalApi({ apiKey: process.env.GOAL_API_KEY });

async function getMatchStats(fixtureId) {
  const stats = await goal.fixtures.statistics(fixtureId);
  const home = {};
  const away = {};

  for (const s of stats.data.match.fullTime) {
    home[s.type] = s.home;
    away[s.type] = s.away;
  }

  return { home, away };
}

Frequently Asked Questions

Question Answer
Does GOAL API provide xG (expected goals)? Check Goal API Coverage — xG availability depends on the data provider for each competition. Not all leagues carry advanced metrics.
Are player ratings included? Yes, where the data provider publishes them. Not all leagues carry per-match ratings; major leagues (EPL, La Liga, UCL) typically do.
How far back does historical stats data go? Historical seasons are available — the exact range per league is listed on goal-api.com/coverage.
Can I get half-time statistics? Yes. The /fixtures/:id/statistics endpoint accepts a half parameter: ?half=1half or ?half=2half for split-period stats.
Is there a rate limit on the stats endpoints? All endpoints share your plan allowance. See goal-api.com/pricing for request limits per plan.

Keep reading

Football Stats API: Goals, xG, Player & Match Data | GOAL API