The Soccer Data API for developers ballers.

One soccer API across every major competition: live scores, pre-match and in-play odds, confirmed lineups, and stats down to xG. The Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, and the Champions League, all live, plus the completed World Cup 2026, all under one schema and one key.

1,000 req/day free (2,000 with GitHub). No credit card.

EPL · La Liga · Bundesliga · Serie A · Ligue 1 · MLS · UCL · WC2026

US developers usually search "soccer"; elsewhere it is "football". See the Football Data API →

Stats included

Every soccer stat field the API returns today — 80 in total, grouped by how they are produced. Each group carries its own freshness, because a sport is rarely uniformly current.

Season player stats

Post-game

Written after the game ends — not a live in-game feed. Last ingested 2026-08-27.

Endpoint
/v1/players/:id/stats
Last updated
2026-08-27

Fields (42)

Shooting
Dribbles Attempted, Shots on Target, Shots, Npxg, XG, XG Buildup, XG Chain
Scoring
Match Rating, Goals, Npg
Passing
Assists, Pass Accuracy, Key Passes, Passes, Xa
Possession
Dribbled Past, Dribbles Completed
Defending
Duels, Duels Won, Blocks, Interceptions, Tackles
Goalkeeping
Goals Conceded, Saves
Discipline
Red Cards, Yellow Cards, Second Yellow (red), Fouls Committed, Fouls Drawn, Penalties Conceded, Penalties Missed, Penalties Saved, Penalties Scored, Penalties Won
Appearances
Appearances, Starts, Minutes Played, Unused Substitute, Substituted On, Substituted Off, Games, Minutes

Team stats (per game)

Post-game

Written after the game ends — not a live in-game feed. Last ingested 2026-08-30.

Endpoint
/v1/matches/:id/statistics
Last updated
2026-08-30

Fields (38)

Shooting
Shot %, Shots on Target, Total Shots
Scoring
Final Score, Tournament Topscorers
Passing
Accurate Crosses, Accurate Long Balls, Accurate Passes, Cross Accuracy %, Long-Ball Accuracy %, Pass Accuracy %, Total Crosses, Total Long Balls, Total Passes
Possession
Momentum, Possession %, Team Form, Team Match Stats, Won Corners
Defending
Blocked Shots, Effective Clearances, Effective Tackles, Interceptions (defensive), Tackle %, Total Clearance, Total Tackles
Goalkeeping
Saves (goalkeeper)
Discipline
Fouls Committed, Offsides, Penalty Goals, Penalty Shots, Red Cards, Yellow Cards
Appearances
Average Positions, Best Players, Away Lineup, Home Lineup, Player Match Stats

Not included

  • Not shown here — team_per_game_advanced: advanced team stats that no route currently serves.
  • Not shown here — injuries: injury reports — reference data with its own endpoint.

Missing a stat?

We build what people actually ask for. If a field you need is not on this page, tell us — requests are how we decide what to add next.

Name the field or the endpoint shape. Specifics help more than categories.

Goes straight to the team as a product signal. No newsletter, no account, nothing else done with your address.

What you can build

  • Multi-league score widget

    One integration covers every competition you want to show.

  • Matchday companion

    Confirmed lineups, formations, and live stats alongside the game.

  • Fantasy soccer tool

    Per-player goals, assists, and xG across leagues in one feed.

  • Betting research tool

    Pre-match and in-play odds with against-the-spread splits.

  • xG analytics dashboard

    Player-season xG, xA, npxG and xG chain across twelve seasons, for season-over-season analysis.

  • World Cup 2026 companion

    Elo predictions, group standings, and xG for the tournament.

Endpoints

On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys.

MethodPathReturnsPlan
GET/v1/leagues?sport=footballEvery soccer league key you can filter byFree
GET/v1/matches?sport=football&league=eplLive + scheduled fixtures (swap the league key)Free
GET/v1/standings?sport=football&league=eplLeague table for any competitionFree
GET/v1/matches/:id/odds?sport=footballPre-match + in-play odds across 16+ booksEdge
GET/v1/stored/matches/:id/lineupsStarting XI + bench when publishedFree
GET/v1/stored/matches/:id/statsPossession, shots, xG, passesFree
GET/v1/players/:id/stats?sport=footballPer-season player stats (goals, assists, xG)Free
GET/v1/matches/:id/events?sport=footballGoals, cards, substitutionsFree
GET/v1/players/:id/club-formClub season stats: appearances, goals, assists, minutes, rating (top 5 leagues, 2025-26)Solo

Start on the free tier

100 requests per minute and 1,000 per day, free — the highest per-minute burst of any free sports API we checked. Burst is what matters when something asks several questions in a row and waits on each answer.

  • Every sport and league we cover — the paid tiers add history depth and premium fields, not more leagues.
  • Calls are counted one for one — no credit weighting, no markets-times-regions arithmetic.
  • Link GitHub and the daily cap goes to 2,000.
  • No credit card.
Get a key →

Or ask your AI tool directly

Connect your account to Claude, ChatGPT, Cursor, Perplexity or any other MCP-compatible tool and ask for soccer data in conversation — scores, standings, player stats and Elo ratings, with no API key to paste and no code to write. Your plan and limits carry over exactly as they do here.

Connect your AI tool →

Integrate in a few lines

Node.js, @bigballsdata/sdktypescript
import { BigBallSportsClient } from '@bigballsdata/sdk';

const client = new BigBallSportsClient(process.env.BBS_API_KEY!);

// Live matches across every soccer league in one call. Returns an empty array
// when nothing is in play — that is a valid answer, not an error.
const matches = await client.matches.list({ sport: 'football', status: 'live' });
if (matches.data.length === 0) console.log('No soccer matches in play right now.');
for (const m of matches.data) {
  // Score lives on m.score ({home, away}), not m.scores.value.
  console.log(m.league, m.home.name, 'v', m.away.name, m.score ? `${m.score.home}-${m.score.away}` : '-');
}

Free covers a real app. Scale when you need to.

1,000 req/day free (2,000 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.

Frequently asked

Does the API include La Liga and Ligue 1?
Yes, La Liga and Ligue 1, plus the Premier League, Bundesliga, Serie A, MLS, the Champions League, and the FIFA World Cup 2026. Call /v1/leagues?sport=football for the full, current list of league keys.
Is there a free soccer data API?
Yes. Scores, lineups, stats, standings, and events on the free tier at 1,000 req/day (2,000 with GitHub), no credit card. Odds require the Edge plan ($149/mo) or higher.
Does it include xG?
Yes. /v1/stored/matches/:id/stats returns match-level xG and possession where the upstream feed supplies it.
Does this soccer API cover the World Cup 2026?
Yes. All 104 World Cup 2026 matches are part of the same soccer surface, with final odds, Elo-based match predictions, and final group standings from the completed tournament (June 11 - July 19, 2026). See the dedicated World Cup 2026 API page.
Can I get soccer player statistics through this API?
Yes. Club season stats for the top 5 European leagues are available via GET /v1/players/:id/club-form. Returns appearances, goals, assists, minutes and rating for the 2025-26 season. WC2026 squad players are linked automatically.

Get an API key in 30 seconds