BYTETOOLS

OpenLigaDB API

Free OpenLigaDB API with no key: Bundesliga fixtures, results, tables and goalscorers, plus other leagues. Community-maintained open data. Tested example.

No API key requiredHTTPSFree tier

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
curl 'https://api.openligadb.de/getmatchdata/bl1/2025'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://api.openligadb.de/getmatchdata/bl1/2025", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "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

ParameterTypeRequiredDescription
getmatchdata/<league>/<season>pathOptionalAll matches for a league season. bl1/2025
getmatchdata/<league>pathOptionalCurrent matchday for a league. bl1
getbltable/<league>/<season>pathOptionalLeague table. bl1/2025
getgoalgetters/<league>/<season>pathOptionalTop 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

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.