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
| Date | Away | Home | Time / Result | TV | Venue |
|---|---|---|---|---|---|
| Fri, Oct 9 | Werder Bremen | Borussia Dortmund | 2:30 PM ET | Signal 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.
| Endpoint | Path | Bundesliga | Notes |
|---|---|---|---|
| Live scores | /events/live | Available | |
| Events (scoreboard) | /events | Available | |
| Event detail | /events/{eventId} | Available | |
| Play-by-play | /events/{eventId}/plays | Available | |
| Box score | /events/{eventId}/boxscore | Limited | Team totals and period scores only; player stats are not returned. |
| Odds | /events/{eventId}/odds | Available | |
| Win probability | /events/{eventId}/winprobability | Not available | |
| Teams | /teams | Available | |
| Rosters | /teams/{teamId}/roster | Available | |
| Athletes | /athletes/search | Available | |
| Injuries | /injuries | Not available | |
| News | /news | Available | |
| Schedule / weeks | /seasons/{season}/schedule | Available | |
| NCAA tournament | /seasons/{season}/tournament | Not available | |
| Webhooks | /webhooks | Available | |
| WebSocket | /websocket/auth | Available |
- 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.
| Field | Type | Notes |
|---|---|---|
| id | string | Event id; use it with the detail, plays, box score and odds endpoints. |
| uid | string | |
| name | string | Full matchup name. |
| shortName | string | Abbreviated matchup, e.g. "AWAY @ HOME". |
| date | string | Start time, ISO-8601 UTC. |
| status | EventStatus | state (pre, in, post), completed, period, clock and display detail. |
| homeTeam | EventTeam | id, name, abbreviation, colors, logo (proxied), record, score, winner. |
| awayTeam | EventTeam | Same shape as homeTeam. |
| competition | object | attendance, neutralSite, conference/division flags, playByPlayAvailable. |
| venue | object | Venue id, name, city, state, indoor, grass (null when unknown). |
| notes | string[] | Headline notes, e.g. round or rivalry names. |
| season | object | year, type (preseason/regular/postseason) and week where the league uses weeks. |
| broadcasts | object[] | TV/stream networks for the game. |
| officials | object[] | Game officials when published. |
| odds | Odds | Only 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
| Plan | Price | Calls | Rate | WebSocket | Webhooks |
|---|---|---|---|---|---|
| Free | $0 | 125/mo (1,000 first 30 days) | 1/s | 500 msgs/mo | No |
| Starter | $29/mo ($290/yr) | 10,000/mo | 5/s | Shares monthly pool | Shares monthly pool |
| Growth | $49/mo ($490/yr) | 25,000/mo | 10/s | Shares monthly pool | Shares monthly pool |
| Pro | $99/mo ($990/yr) | 50,000/mo | 20/s | 100,000 msgs/mo | 25,000/mo |
| Scale | $299/mo ($2,990/yr) | 500,000/mo | 100/s | 500,000 msgs/mo | 100,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.