Bundesliga API

Realtime Sports API serves German Bundesliga games through the same REST endpoints and JSON schema as every other league, using sport=soccer and league=ger.1. You get the current scoreboard, live scores, game detail, play-by-play, teams, rosters and news, plus current odds and line history from a single source book. Not currently available or not verified for this league: injuries, player box-score stats. Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA.

Slugs
sport=soccer
league=ger.1
Teams
18
Season (from data)
2026-27 German Bundesliga
In the scoreboard now
1 games

Upcoming and live Bundesliga games

Bundesliga games from the API
DateAwayHomeTime / ResultTVVenue
Fri, Oct 9Werder BremenBorussia Dortmund2:30 PM ETSignal Iduna Park · Aue

From the /events endpoint for this league, refreshed every few minutes. Times are US Eastern. Full Bundesliga schedule

Live example

Request

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/ger.1/events?limit=1"

Response captured from live data at 2026-10-05 02:10 UTC (refreshed every few minutes). Long arrays are trimmed; meta.rateLimit values are illustrative for a Free key.

Response

{
  "success": true,
  "data": [
    {
      "id": "401884781",
      "uid": "s:600~l:720~e:401884781",
      "name": "Werder Bremen at Borussia Dortmund",
      "shortName": "SVW @ DOR",
      "date": "2026-10-09T18:30Z",
      "status": {
        "state": "pre",
        "completed": false,
        "period": 0,
        "clock": "0'",
        "detail": "Fri, October 9th at 2:30 PM EDT",
        "halftime": false,
        "firstHalfEnded": false
      },
      "homeTeam": {
        "id": "124",
        "name": "Borussia Dortmund",
        "abbreviation": "DOR",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXQAOWRMQEENcUx1GVQhCH0pXAQ",
        "color": "ffee00",
        "alternateColor": "272726",
        "winner": false,
        "score": 0
      },
      "awayTeam": {
        "id": "137",
        "name": "Werder Bremen",
        "abbreviation": "SVW",
        "logo": "https://realtimesportsapi.com/api/images/proxy?id=GgcVSgNPTUMITUgaFFQVVVQXBVwOHV5LRQBZD1lbBllDXQAOWRMQEENcUx1GVQlBH0pXAQ",
        "color": "03915c",
        "alternateColor": "ffffff",
        "winner": false,
        "score": 0
      },
      "competition": {
        "attendance": 0,
        "neutralSite": false,
        "conferenceCompetition": false,
        "divisionCompetition": false,
        "playByPlayAvailable": true,
        "highlightsAvailable": false
      },
      "venue": {
        "id": "10344",
        "name": "Signal Iduna Park",
        "city": "Aue",
        "indoor": false,
        "grass": false
      },
      "notes": [],
      "season": {
        "year": 2026,
        "displayName": "2026-27 German Bundesliga",
        "type": {
          "id": "1",
          "name": "2026-27 German Bundesliga",
          "abbreviation": "2026-27 Bundesliga"
        },
        "week": {}
      },
      "broadcasts": [],
      "officials": []
    }
  ],
  "meta": {
    "rateLimit": {
      "limit": 125,
      "remaining": 124,
      "reset": 1793491200000
    }
  }
}

Bundesliga endpoints

Checked against live data on 2026-10-04. Paths are relative to /api/v1/sports/soccer/leagues/ger.1.

EndpointPathBundesligaNotes
Live scores/events/liveAvailable
Events (scoreboard)/eventsAvailable
Event detail/events/{eventId}Available
Play-by-play/events/{eventId}/playsAvailable
Box score/events/{eventId}/boxscoreLimitedTeam totals and period scores only; player stats are not returned.
Odds/events/{eventId}/oddsAvailable
Win probability/events/{eventId}/winprobabilityNot available
Teams/teamsAvailable
Rosters/teams/{teamId}/rosterAvailable
Athletes/athletes/searchAvailable
Injuries/injuriesNot available
News/newsAvailable
Schedule / weeks/seasons/{season}/scheduleAvailable
NCAA tournament/seasons/{season}/tournamentNot available
Webhooks/webhooksAvailable
WebSocket/websocket/authAvailable
  • Schedules are by date, not week: use /events for the current scoreboard and /seasons/{season}/schedule for a season. Week parameters return SCHEDULE_WEEKS_NOT_SUPPORTED.
  • Soccer play-by-play is a stream of match events (passes, shots, fouls, cards); box scores carry team totals and period scores without player rows.

Event object fields

Every Bundesliga game in the events, live and schedule endpoints uses the same Event object as other leagues.

FieldTypeNotes
idstringEvent id; use it with the detail, plays, box score and odds endpoints.
uidstring
namestringFull matchup name.
shortNamestringAbbreviated matchup, e.g. "AWAY @ HOME".
datestringStart time, ISO-8601 UTC.
statusEventStatusstate (pre, in, post), completed, period, clock and display detail.
homeTeamEventTeamid, name, abbreviation, colors, logo (proxied), record, score, winner.
awayTeamEventTeamSame shape as homeTeam.
competitionobjectattendance, neutralSite, conference/division flags, playByPlayAvailable.
venueobjectVenue id, name, city, state, indoor, grass (null when unknown).
notesstring[]Headline notes, e.g. round or rivalry names.
seasonobjectyear, type (preseason/regular/postseason) and week where the league uses weeks.
broadcastsobject[]TV/stream networks for the game.
officialsobject[]Game officials when published.
oddsOddsOnly with includeOdds=true and when the game has odds.

Code samples

curl

curl -H "Authorization: Bearer $RSA_API_KEY" \
  "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/ger.1/events?limit=5"

JavaScript (fetch)

const res = await fetch("https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/ger.1/events?limit=5", {
  headers: { Authorization: `Bearer ${process.env.RSA_API_KEY}` }
});
const { success, data, meta } = await res.json();
console.log(data, meta.rateLimit);

Python (requests)

import os, requests

res = requests.get(
    "https://www.realtimesportsapi.com/api/v1/sports/soccer/leagues/ger.1/events?limit=5",
    headers={"Authorization": f"Bearer {os.environ['RSA_API_KEY']}"},
    timeout=10,
)
body = res.json()
print(body["data"])

MCP prompt (Claude, Cursor, ChatGPT)

Using the Realtime Sports MCP server (https://www.realtimesportsapi.com/api/mcp), call get_events with sport "soccer" and league "ger.1" and list the games it returns with start times, status and scores for Bundesliga.

Connect the hosted MCP server first: setup guide. Each tool call counts as one API call.

Rate limits and pricing

PlanPriceCallsRateWebSocketWebhooks
Free$0125/mo (1,000 first 30 days)1/s500 msgs/moNo
Starter$29/mo ($290/yr)10,000/mo5/sShares monthly poolShares monthly pool
Growth$49/mo ($490/yr)25,000/mo10/sShares monthly poolShares monthly pool
Pro$99/mo ($990/yr)50,000/mo20/s100,000 msgs/mo25,000/mo
Scale$299/mo ($2,990/yr)500,000/mo100/s500,000 msgs/mo100,000/mo

Every successful REST call counts as one call. Over the limit you get HTTP 429 with a Retry-After header. No SLA. Full pricing.

29 leagues monitored live: NFL, college football, NBA, men's college basketball, MLB, NHL and 23 soccer competitions.

FAQ

Is there a free Bundesliga API?
Yes. The Free plan is $0 with 125 calls per month (1,000 in the first 30 days) at 1 request per second, no card required. The same key works for all 29 leagues.
How fresh is the Bundesliga data?
Data is aggregated from public sources and is typically 20-30 seconds behind live play (about 1 second after our source). There is no SLA. It is not intended for in-play betting that needs sub-second data.
Which Bundesliga endpoints are available?
Available: live scores, events (scoreboard), event detail, play-by-play, odds, teams, rosters, athletes, news, schedule / weeks. Not available or not verified: box score (limited), win probability (not available), injuries (not available), ncaa tournament (not available).
Does the Bundesliga API include betting odds?
Yes. Upcoming Bundesliga games returned a spread, moneyline and total when we checked, from a single source book, with line history. It is not a multi-book comparison feed and not suited to sub-second in-play betting.
Does it include Bundesliga injuries?
No. The injuries endpoint returned no records for Bundesliga when we checked, so treat injuries as not available for this league.
Can I get Bundesliga score updates pushed instead of polling?
Yes. Webhooks are included on every paid plan (Starter, Growth, Pro, Scale). WebSocket is included on paid plans, and the Free plan gets a 500-message monthly preview. Both can be filtered to ger.1.