The Bundesliga API for developers ballers.
Live Bundesliga scores, pre-match and in-play odds, standings, and end-of-match stats including xG. Sub-100ms REST.
250 req/day free (500 with GitHub). No credit card.
Bundesliga · all 18 clubs
Seasons: 2014-15, 2015-16, 2016-17, 2017-18, 2018-19, 2019-20, 2020-21, 2021-22, 2022-23, 2023-24, 2024-25, 2025-26, 2026-27
- 13
- seasons in the archive
- 3,724 finished games, back to 2014-15
How far back the Bundesliga archive goes
13 seasons are on record, back to 2014-15 — 3,724 finished games you can query today. One route serves the full span. These figures are measured from the customer-facing routes listed below, so this page cannot silently drift from the product.
| Archive | Route | Seasons | Reaches back to | Finished games |
|---|---|---|---|---|
| Bundesliga | /v1/matches | 13 | 2014-15 – 2026-27 | 3,724 |
What each plan reaches
- Edge & Pro
- all 13 seasons
- Solo & Trio
- 5 seasons
- Free
- the current season
Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.
Stats included
Every soccer stat field the API returns today — 82 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-gameWritten after the game ends — not a live in-game feed. Last ingested 2026-09-15.
- Endpoint
- /v1/players/:id/stats
- Last updated
- 2026-09-15
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-gameWritten after the game ends — not a live in-game feed. Last ingested 2026-09-16.
- Endpoint
- /v1/matches/:id/statistics
- Last updated
- 2026-09-16
Fields (40)
- Shooting
- Shot %, Shots on Target, Total Shots
- Scoring
- Final Score Ft Away, Final Score Ft Home, 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.
What you can build
Live score widget
Embed real-time Bundesliga scores and goal events on any site.
Matchday companion
Confirmed lineups, formations and live scores alongside the game.
Fantasy tool
Per-player season stats (goals, assists) and injury status in one feed. Player-season xG is on the Solo plan and above.
Betting research tool
Pre-match and in-play odds across major books with against-the-spread splits.
Table tracker
Full Bundesliga table, refreshed within 60 seconds of a final whistle.
xG analytics dashboard
Player-season xG, xA, npxG and xG chain across twelve seasons, for season-over-season analysis. Needs the Solo plan or above.
Endpoints
On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys. Click any endpoint to see every field it returns.
6 endpoints · 83 documented fields. Click any row to see every field it returns.
Next Bundesliga fixtures
12 matches, 17 Oct 2026 – 24 Oct 2026, from GET /v1/matches?sport=football&league=bundesliga. Kickoffs are UTC.
| Kickoff (UTC) | Home | Away | Odds |
|---|---|---|---|
| 2026-10-17 13:30 | SV Elversberg | FC Augsburg | Yes |
| 2026-10-17 13:30 | Werder Bremen | SC Paderborn 07 | Yes |
| 2026-10-17 13:30 | Hamburger SV | VfB Stuttgart | Yes |
| 2026-10-17 13:30 | 1. FC Union Berlin | Borussia Dortmund | Yes |
| 2026-10-17 13:30 | Schalke 04 | Mainz | Yes |
| 2026-10-17 16:30 | Bayern Munich | RB Leipzig | Yes |
| 2026-10-18 13:30 | Bayer Leverkusen | SC Freiburg | Yes |
| 2026-10-18 15:30 | Borussia Mönchengladbach | TSG Hoffenheim | Yes |
| 2026-10-23 18:30 | VfB Stuttgart | Borussia Mönchengladbach | Yes |
| 2026-10-24 13:30 | Mainz | Werder Bremen | — |
| 2026-10-24 13:30 | SC Paderborn 07 | Hamburger SV | — |
| 2026-10-24 13:30 | FC Augsburg | 1. FC Union Berlin | — |
The tables below cover the completed season; these are the matches still to be played.
The Bundesliga table, as we serve it
2026-27 · 18 teams · 6 matches played. Served by GET /v1/standings?league=bundesliga.
| # | Team | P | W | D | L | GF | GA | GD | Pts |
|---|---|---|---|---|---|---|---|---|---|
| 1 | SC Freiburg | 5 | 4 | 1 | 0 | 14 | 4 | +10 | 13 |
| 2 | Borussia Dortmund | 5 | 4 | 1 | 0 | 11 | 4 | +7 | 13 |
| 3 | Bayern Munich | 5 | 3 | 2 | 0 | 16 | 4 | +12 | 11 |
| 4 | Bayer Leverkusen | 5 | 3 | 1 | 1 | 14 | 8 | +6 | 10 |
| 5 | RB Leipzig | 5 | 3 | 0 | 2 | 15 | 5 | +10 | 9 |
| 6 | FC Augsburg | 5 | 2 | 2 | 1 | 13 | 8 | +5 | 8 |
| 7 | Werder Bremen | 5 | 2 | 2 | 1 | 10 | 10 | 0 | 8 |
| 8 | Eintracht Frankfurt | 6 | 2 | 2 | 2 | 10 | 16 | -6 | 8 |
| 9 | Mainz | 5 | 2 | 1 | 2 | 13 | 10 | +3 | 7 |
| 10 | SV Elversberg | 5 | 2 | 1 | 2 | 8 | 8 | 0 | 7 |
| 11 | FC Cologne | 6 | 2 | 1 | 3 | 8 | 11 | -3 | 7 |
| 12 | VfB Stuttgart | 5 | 2 | 0 | 3 | 8 | 9 | -1 | 6 |
| 13 | Hamburger SV | 5 | 2 | 0 | 3 | 5 | 15 | -10 | 6 |
| 14 | Schalke 04 | 5 | 1 | 2 | 2 | 4 | 6 | -2 | 5 |
| 15 | SC Paderborn 07 | 5 | 1 | 1 | 3 | 3 | 7 | -4 | 4 |
| 16 | 1. FC Union Berlin | 5 | 1 | 1 | 3 | 5 | 17 | -12 | 4 |
| 17 | TSG Hoffenheim | 5 | 1 | 0 | 4 | 9 | 13 | -4 | 3 |
| 18 | Borussia Mönchengladbach | 5 | 0 | 0 | 5 | 7 | 18 | -11 | 0 |
Points are computed from wins and draws; the API returns W/D/L and goals.
Bundesliga xG leaders
Expected goals per player for the 2026-27 season, straight from GET /v1/leagues/bundesliga/xg-leaders?stat=xg. Non-penalty xG and expected assists are on the same row.
| # | Player | Team | Apps | Goals | xG | npxG | xA | G−xG |
|---|---|---|---|---|---|---|---|---|
| 1 | Harry Kane | Bayern Munich | 5 | 3 | 4.25 | 3.49 | 2.12 | -1.3 |
| 2 | Patrik Schick | Bayer Leverkusen | 5 | 5 | 4.04 | 4.04 | 0.85 | +1.0 |
| 3 | Younes Ebnoutalib | Eintracht Frankfurt | 6 | 5 | 3.66 | 3.66 | 0.95 | +1.3 |
| 4 | Phillip Tietz | Mainz 05 | 5 | 4 | 3.61 | 3.61 | 0.56 | +0.4 |
| 5 | Christopher Nkunku | RasenBallsport Leipzig | 5 | 4 | 2.97 | 2.97 | 0.59 | +1.0 |
| 6 | Maximilian Beier | Borussia Dortmund | 5 | 1 | 2.87 | 2.87 | 0.80 | -1.9 |
| 7 | Luis Díaz | Bayern Munich | 5 | 1 | 2.73 | 2.73 | 1.46 | -1.7 |
| 8 | Jonathan Burkardt | Eintracht Frankfurt | 6 | 3 | 2.72 | 2.72 | 1.33 | +0.3 |
| 9 | Yuito Suzuki | Freiburg | 5 | 4 | 2.63 | 2.63 | 0.35 | +1.4 |
| 10 | Serhou Guirassy | Borussia Dortmund | 5 | 2 | 2.57 | 2.57 | 1.70 | -0.6 |
G−xG is goals minus expected goals: positive means outscoring the chances taken. Every figure here is served by the endpoint above, not computed on this page.
Bundesliga top scorers
The 2026-27 scoring charts from GET /v1/leagues/bundesliga/top-scorers?season=2026. The season is always sent explicitly — the endpoint defaults to a fixed one.
| # | Player | Team | Goals | Assists | Apps |
|---|---|---|---|---|---|
| 1 | P. Schick | Bayer Leverkusen | 5 | 1 | 5 |
| 2 | Y. Ebnoutalib | Eintracht Frankfurt | 4 | 1 | 5 |
| 3 | C. Nkunku | RB Leipzig | 4 | 1 | 5 |
| 4 | M. Olise | Bayern Munich | 4 | 1 | 5 |
| 5 | Y. Suzuki | SC Freiburg | 4 | 0 | 5 |
| 6 | N. Füllkrug | Werder Bremen | 4 | 0 | 5 |
| 7 | P. Tietz | Mainz | 4 | 0 | 5 |
| 8 | H. Kane | Bayern Munich | 3 | 3 | 5 |
| 9 | A. Nusa | RB Leipzig | 3 | 3 | 5 |
| 10 | J. Burkardt | Eintracht Frankfurt | 3 | 1 | 5 |
Every Bundesliga season we hold
- 13
- seasons loaded
- 2014-15 to 2026-27
- 3,734
- finished matches
- results, lineups and stats attached
- 260
- scheduled ahead
- fixtures loaded before kickoff
- 2026-10-16
- data through
- kickoff of the most recent finished match
Call it with real Bundesliga IDs
Live IDs from this league, pulled when the page was built. Paste them straight into a request.
# 1. FC Heidenheim 1846
curl -H "x-api-key: $BBS_KEY" \
"https://api.bigballsdata.com/v1/teams/41f38b3e-b4c8-4620-bca3-3f253dceb44d"
# Eintracht Frankfurt v FC Cologne
curl -H "x-api-key: $BBS_KEY" \
"https://api.bigballsdata.com/v1/matches/1ff1fbac-82bc-4d91-95dc-74d5e76e4b83/odds"What we have for Bundesliga
Share of this league’s finished matches carrying each data type, straight from GET /v1/coverage.
| Data type | Matches | Coverage |
|---|---|---|
| Scores | 3,734 | 100% |
| Lineups | 658 | 18% |
| Odds | 206 | 6% |
| Expected goals | 2,521 | 68% |
| Team stats | 3,428 | 92% |
| Standings | — | current |
Read live from GET /v1/coverage — the same endpoint you can call yourself. Dates are absolute, not a build timestamp.
Start on the free tier
100 requests per minute and 250 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 500.
- No credit card.
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
import { BigBallSportsClient } from '@bigballsdata/sdk';
const client = new BigBallSportsClient(process.env.BBS_API_KEY!);
const matches = await client.matches.list({ sport: 'football', league: 'bundesliga', status: 'live' });
for (const m of matches.data) {
console.log(m.home, m.away, m.scores?.value?.home, '-', m.scores?.value?.away);
}Free covers a real app. Scale when you need to.
250 req/day free (500 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.
Frequently asked
- Is the Bundesliga API free?
- Yes. It covers all 18 clubs, scores, lineups, stats, standings, and scoring events. There is a free tier; pricing lists what each plan covers. The full minute-by-minute stream is Pro; odds require the Edge plan ($149/mo) or higher. Free keys get 250 req/day (500 with GitHub). No credit card.
- Does it include xG?
- Yes, on the Solo plan and above. /v1/matches/:id/statistics returns per-team expected goals (the route is Free; the expected_goals field is Solo+, so Free keys get the rest of the team stats without it), and /v1/leagues/:id/xg-leaders returns the player-season xG leaderboard (Solo+). /v1/stored/matches/:id/stats does not carry xG.
- Are confirmed lineups available?
- Yes. Starting XIs surface in the lineups endpoint, typically around 60 minutes before kickoff.
- How current are Bundesliga standings?
- The table refreshes within 60 seconds of a final whistle via /v1/standings, with W-D-L records, goal difference, and points.
Explore Bundesliga teams
18 captured team profiles. Dated previews, not live data.