ParseForge Scrapers

OpenLigaDB Football Matches Scraper

parseforge/openligadb-football-matches-scraper

OtherAutomation

Pulls football match schedules and results, league standings, and a complete competition catalog from OpenLigaDB. Returns each item as a flat row.

Run this scraper See the API call
Total users
3
Monthly active
0
Total runs
105
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

OpenLigaDB Football Matches Scraper

Scrape football matches, league tables, and competition catalogs from OpenLigaDB, up to one million per run. Every match comes with kickoff time, scores, teams, and match status. No API key required. Export to JSON, CSV, Excel, or XML.

OpenLigaDB serves free, open football data for thousands of competitions, but stitching together its multiple endpoints and handling pagination takes time you could spend on analysis. This scraper reads the public feeds directly for matches, standings, and league directories, returning every competition from Bundesliga 1 to amateur regional cups in one fixed schema.\n\nCall one Actor for three data shapes: full match schedules and results, current league tables, or a complete catalog of available competitions.

Who uses it What they scrape OpenLigaDB for
Football data analysts Pull match results and league tables to model team form and predict outcomes.
Fantasy league developers Ingest live scores, fixtures, and team data to power prediction games and apps.
Journalists and content creators Gather Bundesliga, DFB-Pokal, and international tournament data for match previews and stats pieces.
Betting model builders Collect historical match results and standings to train forecasting models.

What it does

This actor collects football data from OpenLigaDB by mode (matches, standings, or league list) and returns each row as a flat record.

  • Matches mode: Full schedule and results including kickoff, teams, scores, and match status for any competition.
  • 📊 Table mode: Current league standings for a chosen competition and season.
  • 📋 Leagues mode: Complete catalog of every competition on OpenLigaDB, from professional tiers to regional amateur cups.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with OpenLigaDB data

📈 Track form across a league.

A data analyst pulls all 2024/25 Bundesliga 1 matches to calculate rolling points and expected goals for each club.

🏗 Build a match discovery tool.

A developer runs the leagues mode to populate a competition picker, then fetches fixtures on demand for any selected shortcut and season.

📰 Automate a weekly stats roundup.

A content creator collects the latest matchday results and league table from the 3. Liga to feed a newsletter or match report.

🌍 Power a fantasy game with live data.

A fantasy league operator scrapes the Champions League 2024/25 schedule and standings on a cron to update point tallies after each matchday.

Why choose this scraper

What you get
No API key Reads the public OpenLigaDB feeds without any registration or token.
Three modes in one Collect matches, standings, or a league directory from a single actor.
Thorough coverage Accesses thousands of competitions, including amateur and regional leagues not always surfaced in other tools.

How it compares

This actor covers the same OpenLigaDB source as the three listed competitors, with dedicated modes for matches, standings, and a full league directory in one tool.

Feature ParseForge OpenLigaDB Football Scraper - Matches, Results & Teams (No Key) OpenLigaDB Matches Scraper - Football Results OpenLigaDB Football Stats Scraper
Dedicated leagues catalog mode Yes Not listed Not listed Not listed
League table standings mode Yes Not listed Not listed Yes
Match scores and goals Yes Yes Yes Yes
Kickoff time and match status Yes Not listed Yes Not listed
Team icons and logos Yes Not listed Yes Not listed
Stadium metadata Not listed Yes Not listed Not listed

Configure the run

Drive the actor by mode, league shortcut, and season. Run the leagues mode first to discover every available shortcut, then feed one into matches or table mode to pull targeted data. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10,
 "mode": "matches",
 "league": "bl1",
 "season": "2024"
}

A larger pull:

{
 "maxItems": 200,
 "mode": "matches",
 "league": "bl1",
 "season": "2024"
}

Pricing

Pay-per-result: $0.016 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.60
1,000 results $16.00
10,000 results $160.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the OpenLigaDB Football Matches Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to OpenLigaDB through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/openligadb-football-matches-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results when I enter a league shortcut?

Check that you set the mode to matches or table. The league field is ignored in leagues mode. Also confirm the shortcut is typed exactly as it appears in the leagues catalog, including capitalization and numbers.

Why does the run return only a handful of rows?

Increase the Maximum matches input. The default is 10, which is fine for a test but too low for a full Bundesliga season. Set it to at least 306 for a full 18-team league campaign.

Why do I see incomplete match results?

OpenLigaDB may not have received live updates yet for in-progress or very recent matches. Re-run the actor a short while after the final whistle to pick up complete scores.

Why does my run fail with a parse error?

The season field expects a plain year like 2024. Make sure you have not included a slash or a full string like 2024/25. If the error persists, the shortcut might be invalid; run leagues mode to verify it.

How do I get team logos and icons?

The actor returns icon URL fields when OpenLigaDB provides them. If they are missing in your dataset, check whether that competition populates team icons. You can also join the team IDs against a static asset lookup.

FAQ

Question Answer
Do I need an API key for OpenLigaDB? No. This actor reads the public feeds, so there is no registration, OAuth, or token to manage.
What competitions can I scrape? Thousands of competitions are available. Run the actor in leagues mode to see every shortcut, from bl1 (Bundesliga 1) and ucl24 (Champions League) down to amateur regional cups.
How do I find the shortcut for my league? Set mode to leagues and run the actor. It will return a full list of available competitions and their shortcuts, which you then paste into the league field for matches or table mode.
Can I get live scores? The actor pulls the current state from OpenLigaDB, including scores for finished and in-progress matches when the source has updated them.
What does the table mode return? It returns the current standings for the selected league and season, including position, team, played games, points, goals, and goal difference.
Which season format should I use? Use the starting year. For the 2024/25 season, enter 2024. For a summer tournament like the 2022 World Cup, enter 2022.
How do I scrape multiple leagues in one run? Run the actor once per league shortcut. You can chain multiple runs using an orchestrator or a simple script that loops over the shortcuts you need.
Can I filter matches by date range? The actor returns the full schedule for the season. Apply client-side filtering on the dataset after the run to keep only the matchdays you need.
Why am I getting duplicate matches when I re-run the actor? OpenLigaDB may include the same match in multiple group or round entries. Deduplicate on a unique match identifier in your downstream processing.
Is there a limit on how many matches I can pull? You control the ceiling with the Maximum matches input field, up to 1,000,000 per run. Set it high enough to cover the full competition season.

Related actors

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OpenLigaDB. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
maxItems integer How many matches to collect per run. 10
mode string (3 options) matches = full schedule and results, leagues = catalog of available competitions, table = current league standings. matches
league string Competition shortcut used by matches and table modes; ignored for leagues mode. Run mode=leagues first to discover every available shortcut (thousands exist for amateur and regional competitions). Common: bl1 (Bundesliga 1), bl2 (Bundesliga 2), bl3 (3. Liga), dfb (DFB-Pokal), ucl24 (Champions League 2024/25), em (UEFA Euros), wm2022 (World Cup 2022), uefanl2425 (Nations League). bl1
season string Season starting year, e.g. '2024' for the 2024/25 season. 2024

Pricing

from $12.00 per 1,000 results

Charged forWhat it isPrice each
Result Item Charged once per result collected. $0.012 to $0.016

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST · run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~openligadb-football-matches-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run OpenLigaDB Football Matches Scraper on Apify All scrapers