OpenLigaDB API
Free OpenLigaDB API with no key: Bundesliga fixtures, results, tables and goalscorers, plus other leagues. Community-maintained open data. Tested example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the OpenLigaDB API?
OpenLigaDB is a free, key-free community-maintained API providing German football data — Bundesliga fixtures, results, league tables and goalscorers — along with several other leagues and sports.
OpenLigaDB is a crowd-sourced sports database focused on German football, and it has been running for well over a decade. Bundesliga coverage is thorough: fixtures, live results, tables, goalscorers and match details, all free.
Because it is community-maintained rather than an official feed, results are entered by contributors. That is generally reliable for major leagues but can lag during matches, so it is better suited to post-match data than to live in-play use.
Quick facts
- Base URL
https://api.openligadb.de- Authentication
- No API key required.
- Rate limit
- No published limit; fair use expected.
- Pricing
- Free and community maintained.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the OpenLigaDB API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Fetch Bundesliga match data
GET https://api.openligadb.de/getmatchdata/bl1/2025
curl 'https://api.openligadb.de/getmatchdata/bl1/2025'const res = await fetch("https://api.openligadb.de/getmatchdata/bl1/2025");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.openligadb.de/getmatchdata/bl1/2025", timeout=20)
res.raise_for_status()
print(res.json())[
{
"matchID": 77256,
"matchDateTime": "2025-08-22T20:30:00",
"timeZoneID": "W. Europe Standard Time",
"leagueId": 4821,
"leagueName": "1. Fußball-Bundesliga 2025/2026",
"leagueSeason": 2025,
"leagueShortcut": "bl1",
"matchDateTimeUTC": "2025-08-22T18:30:00Z",
"group": {
"groupName": "1. Spieltag",
"groupOrderID": 1,
"groupID": 47611
},
"team1": {
"teamId": 40,
"teamName": "FC Bayern München",
"shortName": "Bayern",
"teamIconUrl": "https://upload.wikimedia.org/wikipedia/commons/1/1f/Logo_FC_Bayern_M%C3%BCnchen_%282002%E2%80%932017%29.svg",
"teamGroupName": null
},
"team2": {
"teamId": 1635,
"teamName": "RB Leipzig",
"shortName": "Leipzig",
"teamIconUrl": "https://i.imgur.com/Rpwsjz1.png",
"teamGroupName": null
},
"lastUpdateDateTime": "2025-08-23T01:00:54.147",
"matchIsFinished": true,
"matchResults": [
{
"resultID": 118490,
"resultName": "Halbzeit",
"pointsTeam1": 3,
"pointsTeam2": 0,
"resultOrderID": 1,
"resultTypeID": 1,
"resultTypeKind": "HalfTime",
"resultDescription": "Ergebnis nach Ende der ersten Halbzeit"
},
{
"resultID": 118491,
"resultName": "Endergebnis",
"pointsTeam1": 6,
"pointsTeam2": 0,
"resultOrderID": 2,
"resultTypeID": 2,
"resultTypeKind": "After90Minutes",
"resultDescription": "Ergebnis nach Ende der offiziellen Spielzeit"
}
],
"goals": [
{Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
getmatchdata/<league>/<season> | path | Optional | All matches for a league season. bl1/2025 |
getmatchdata/<league> | path | Optional | Current matchday for a league. bl1 |
getbltable/<league>/<season> | path | Optional | League table. bl1/2025 |
getgoalgetters/<league>/<season> | path | Optional | Top goalscorers. bl1/2025 |
Response fields
matchIDinteger- Match identifier.
matchDateTimestring- Kickoff time in local German time.
team1 / team2object- Home and away teams with names and icon URLs.
matchResultsarray- Half-time and full-time scores.
goalsarray- Individual goals with scorer and minute.
matchIsFinishedboolean- Whether the match has completed.
What you can build with the OpenLigaDB API
- Build a Bundesliga results and table site
- Track fixtures and scores for a German club
- Analyse goalscorer statistics across a season
- Power a football prediction game with real results
Common errors and how to fix them
Empty array
Wrong league shortcut or season.
Fix: League codes are short strings — bl1 for Bundesliga, bl2 for 2. Bundesliga. Seasons are the starting year.
Times appear shifted
matchDateTime is local German time, and timeZoneID tells you which.
Fix: Convert explicitly rather than assuming UTC.
Results lag during matches
Data is community-entered.
Fix: Do not rely on it for live in-play use; it is best for post-match data.
OpenLigaDB API — frequently asked questions
Is OpenLigaDB free?
Yes, completely free with no API key. It is a community-maintained open sports database.
Which leagues does it cover?
Primarily German football — Bundesliga, 2. Bundesliga and DFB-Pokal — plus a range of other leagues and sports contributed by the community.
Is the data reliable for live scores?
Results are entered by contributors, so there can be a lag during matches. It is well suited to fixtures, tables and post-match results rather than live in-play data.
What timezone are match times in?
Local German time, with the timeZoneID field naming the zone. Convert explicitly rather than assuming UTC.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
OpenLigaDB is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.