Football data

    Football stats APIfor players, teams and 6,400 competitions.

    One JSON API for football statistics: player season and per-match lines, expected goals, shotmaps, lineups, standings and decades of historical seasons. Free key, no SDK, live in a single curl.

    6,400+ football competitions
    ~300ms live score push
    Up to 60 seasons of history

    Stats that go deeper than a scoreboard

    Most football APIs stop at fixtures and results. Ours exposes the same statistical layer analysts use: per-player expected goals, shot locations, duel and pass volumes, and season aggregates you can join straight into a model.

    • Player season, per-match and national-team statistics
    • Expected goals, expected assists, shotmaps and heatmaps
    • Team season stats, standings, rounds and knockout brackets
    • Deep season archives for backtesting
    // Player season statistics — Premier League
    const res = await fetch(
      "https://v2.football.sportsapipro.com/api/players/" +
        "1116/tournament/17/season/61627/statistics",
      { headers: { "x-api-key": process.env.SPORTS_API_KEY } }
    );
    const { statistics } = await res.json();
    
    console.log(statistics.goals);          // 18
    console.log(statistics.expectedGoals);  // 16.42
    console.log(statistics.assists);        // 7
    console.log(statistics.rating);         // 7.61

    What the football stats API returns

    Every group below is available on the same key and the same base URL, https://api.sportsapipro.com/v2/football.

    Player statistics

    Season aggregates and per-match lines: goals, assists, expected goals (xG), expected assists, shots, key passes, duels, tackles, minutes, and ratings.

    • /v2/football/api/players/{playerId}/statistics
    • /v2/football/api/players/{playerId}/tournament/{tid}/season/{sid}/statistics
    • /v2/football/api/match/{matchId}/player/{playerId}/statistics

    Team & competition statistics

    Team season stats, form, standings, rounds, knockout brackets, top scorers, and team-of-the-week for every competition in the catalogue.

    • /v2/football/api/teams/{teamId}/tournament/{tid}/season/{sid}/statistics
    • /v2/football/api/tournament/{tid}/season/{sid}/standings
    • /v2/football/api/tournament/{tid}/season/{sid}/top-players

    Match detail

    Lineups and formations, incidents, substitutions, full match statistics, shotmaps, heatmaps, momentum graphs, and head-to-head history.

    • /v2/football/api/match/{matchId}/statistics
    • /v2/football/api/match/{matchId}/lineups
    • /v2/football/api/match/{matchId}/shotmap

    Historical archive

    Season-by-season archives for backtesting and modelling. Top-flight leagues reach 20-60 seasons; tiers 3-5 typically hold 5-19 seasons.

    • /v2/football/api/tournaments/{tid}/seasons
    • /v2/football/api/tournament/{tid}/season/{sid}/events/last/{page}
    Coverage

    From the Champions League to the 1e Klasse

    Competition access does not depend on your plan — every subscriber sees the same catalogue and the plan only sets your daily request quota. Archive depth, however, scales with the tier of the competition:

    Competition tierTypical archiveAdvanced metrics
    Top flight (e.g. Premier League, Eredivisie)20-60 seasonsFull xG, shotmaps, heatmaps
    Tier 2 (e.g. Championship, 2. Bundesliga)20-40 seasonsUsually full
    Tiers 3-5 (e.g. Regionalliga)5-19 seasonsPartial
    Amateur divisionsCurrent seasonScores and lineups
    Quickstart

    Three calls from signup to a stats table

    Discover the competition, list its seasons, then pull the statistics. IDs are numeric and should always be discovered rather than hardcoded.

    # 1. Find the competition
    curl "https://api.sportsapipro.com/v2/football/api/search?q=premier%20league" \
      -H "x-api-key: $SPORTS_API_KEY"
    
    # 2. List its seasons (returns the full archive depth)
    curl "https://api.sportsapipro.com/v2/football/api/tournaments/17/seasons" \
      -H "x-api-key: $SPORTS_API_KEY"
    
    # 3. Pull the season stats table
    curl "https://api.sportsapipro.com/v2/football/api/tournament/17/season/61627/top-players" \
      -H "x-api-key: $SPORTS_API_KEY"
    Need per-player depth? See the player stats API.Want the broader picture? See the football API overview.

    How we compare

    A like-for-like look at what most football statistics providers charge for versus what is included here by default.

    CapabilitySportsAPI ProTypical alternative
    Football competitions covered6,400+ (incl. amateur tiers)Typically 100-1,000 on entry plans
    Expected goals (xG) & shotmapsIncluded on all paid plansUsually a premium add-on
    Historical seasonsUp to 60 seasons on major leaguesOften gated behind enterprise tiers
    Real-time deliveryREST + WebSocket pushPolling only on lower tiers
    Other sports on the same key30+ sports, one API keyFootball-only or per-sport pricing
    Entry paid plan$45 / month (Pro)Comparable depth commonly $100+

    One key, every plan, the same football data

    Plans differ only by daily request quota. Nothing in the football statistics catalogue is gated behind a higher tier.

    Pro
    $45 / month

    Best starting point for small teams

    Ultra
    $89 / month

    Higher quota for production traffic

    Mega
    $179 / month

    Bulk backfills and heavy polling

    Football stats API FAQ

    Is there a free football stats API tier?

    Yes. Every account starts with a free key that includes 100 requests per day against the full football catalogue, so you can evaluate the exact endpoints and payloads before paying anything. Paid plans start at $45/month (Pro) and only raise your request quota — no data is locked behind a higher tier.

    Which football leagues and competitions are covered?

    The flat football catalogue currently holds over 6,400 competitions, from the Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS and international tournaments down to national amateur divisions such as the Dutch Derde Divisie and German Regionalliga. Coverage is identical on every plan; you can enumerate the whole catalogue yourself via the countries and tournaments endpoints.

    How far back does the historical data go?

    Archive depth scales with the tier of the competition. Major European leagues typically expose 20-60 seasons (Eredivisie, for example, returns 39), tiers 3-5 hold roughly 5-19 seasons, and the lowest amateur divisions are current-season only. Call /tournaments/{id}/seasons on any competition to see its exact depth before you plan a backfill.

    Does the API include expected goals (xG) and advanced metrics?

    Yes for competitions where the underlying data is collected — that includes xG, expected assists, shotmaps, heatmaps, duels, and momentum graphs. Advanced metrics are competition-dependent rather than plan-dependent: they are available on the same endpoints for every subscriber, but not every lower-tier league is tracked at that depth.

    What are the rate limits?

    Quotas are daily and reset at 00:00 UTC. Free keys get 100 requests/day; Pro, Ultra and Mega scale up from there. Exceeding your quota returns HTTP 429. WebSocket streaming is not metered — only REST lookups count against your daily quota.

    Can I get live football stats in real time?

    Yes. Poll the live endpoints for a simple integration, or open a WebSocket connection and subscribe to the live-scores channel for pushed updates. Score and incident updates arrive within roughly 300ms of the source event; odds follow a change-gated cadence of about 30 seconds.

    Can I use the football stats API commercially?

    Yes. All paid plans include commercial use for websites, mobile apps, dashboards, and internal models. If you need bulk historical extraction for a one-off backfill, contact support and we can raise your quota temporarily.

    Which response format and authentication does it use?

    Plain JSON over HTTPS, authenticated with an x-api-key header. No SDK is required — any HTTP client works. Timestamps on V2 are Unix epoch (startTimestamp); V1 and V3 use ISO 8601.

    Start pulling football statistics today

    Free key includes 100 requests a day against the full catalogue — enough to build and validate your integration before you pay anything.