ParseForge Scrapers

TheSportsDB Scraper

parseforge/thesportsdb-scraper

News & mediaBusinessAutomation

Scrapes teams, players, leagues, events, and live scores from TheSportsDB. Returns each record as a flat row with names, badges, stadiums, and season details.

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

Overview

ParseForge

TheSportsDB Scraper

Scrape teams, players, leagues, and match data from TheSportsDB, up to a million records per run. Every record comes with names, badges, stadiums, and season details. No API key required. Export to CSV, JSON, Excel, or XML.

TheSportsDB is a free, crowd-sourced sports database covering football, basketball, hockey, American football, and more. This Actor reads its public API directly, so you can pull structured team rosters, league standings, upcoming fixtures, and player profiles without writing a single line of code. It handles the pagination and rate limits for you, returning clean, flat rows ready for analysis.

Who uses it What they scrape TheSportsDB for
Sports analysts Pull league standings and match results to feed prediction models.
Fantasy sports developers Gather player rosters and upcoming fixtures for app data.
Content creators Collect team badges, stadium info, and player bios for articles or videos.
Data journalists Track season-long team performance and historical match outcomes.

What it does

This Actor collects sports data from TheSportsDB by league, team, player, or date, and returns each record as a flat row.

  • โšฝ All Leagues: fetch every league available in the database.
  • ๐Ÿ” Team Search: find teams by name and get their ID, badge, league, and stadium.
  • ๐Ÿ‘ค Player Search: look up players by name across all sports.
  • ๐Ÿ“‹ Team Roster: get every player on a specific team's current squad.
  • ๐Ÿ“… Upcoming Events: list the next 15 matches for a league.
  • โช Past Events: retrieve the last 15 results for a league.
  • ๐Ÿ† League Standings: pull the current table for a league and season.
  • ๐Ÿ“Š Live Scores: get real-time scores for a sport.
  • ๐Ÿ—“๏ธ Events on a Day: grab all matches scheduled for a specific date.

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

What you can do with TheSportsDB data

๐Ÿ“ˆ Build a league dashboard.

A data analyst pulls the current Premier League standings and the last 15 results to update a weekly performance dashboard.

โšฝ Populate a fantasy football app.

A developer runs the Team Roster mode for all 20 Premier League teams to seed a player database with names, positions, and thumbnails.

๐Ÿ“ฐ Automate match previews.

A sports blogger fetches upcoming events for La Liga every Friday to auto-generate a weekend preview post.

๐Ÿ’ Track live scores.

A fan community runs the Live Scores mode for NHL games to power a real-time scoreboard on their website.

Why choose this scraper

What you get
No API key needed Uses the public TheSportsDB endpoint with no registration.
Multi-sport coverage Works across soccer, basketball, NFL, NHL, MLB, and more.
Structured output Every record is a flat JSON row with consistent field names.
Flexible input Search by team name, player name, league ID, or date.

How it compares

This Actor covers every public TheSportsDB endpoint in one tool, while most competitors focus on a subset of modes like team and player search.

Feature ParseForge TheSportsDB TheSportsDB Scraper - Teams, Players & Data TheSportsDB Scraper
All Leagues listing Yes Not listed Not listed Not listed
League Standings (lookup table) Yes Not listed Not listed Not listed
Live Scores by sport Yes Not listed Not listed Not listed
Events on a specific date Yes Not listed Not listed Not listed
Team Roster (all players on a team) Yes Not listed Not listed Not listed
Player Search by name Yes Yes Yes Yes
Team Search by name Yes Yes Yes Yes

Configure the run

Drive the Actor by selecting a mode and filling in the relevant team name, league ID, sport, or date. Filters run as each request is made so only matching records reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
 "mode": "leagues",
 "maxItems": 10
}

A larger pull:

{
 "mode": "leagues",
 "maxItems": 200
}

Pricing

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

Results collected Approximate cost
100 results $3.50
1,000 results $35.00
10,000 results $350.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 TheSportsDB 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 TheSportsDB 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/thesportsdb-scraper"

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

Troubleshooting

I get an empty dataset when searching for a team.

Check the spelling of the team name. The search is exact on the string you provide. Try a shorter, partial name if the full name returns nothing.

The Actor returns fewer records than my maxItems setting.

The public TheSportsDB API returns a fixed number of items per call, often 10 to 15. The Actor stops when the source has no more data, regardless of the maxItems value.

Live Scores mode returns no data.

Ensure the sport name matches TheSportsDB's format exactly, for example 'Soccer' not 'soccer' or 'football'. Also, live scores are only available when matches are actively being played.

I don't know the League ID for my league.

Run the Actor once in 'All Leagues' mode. The output will list every league with its ID. Copy the ID from that dataset for use in other modes.

The date filter in Events on a Day mode is not working.

The date must be in the exact format YYYY-MM-DD, for example '2025-05-14'. Any other format will cause the request to fail or return no results.

FAQ

Question Answer
Do I need an API key or a Patreon subscription? No. This Actor uses the free public tier of TheSportsDB, which does not require an API key. Results per request are limited by the source, typically 10 to 15 records.
What sports are supported? TheSportsDB covers Soccer, Basketball, American Football, Ice Hockey, Baseball, Motorsport (F1), and more. Use the sport name exactly as it appears on the site, like 'Soccer' or 'Ice_Hockey'.
How do I find a League ID? Run the Actor in 'All Leagues' mode first. The resulting dataset will include the league ID for every competition, which you can then use in other modes.
Can I get historical match data from past seasons? The 'Past Events' mode returns the last 15 completed matches for a league. For deeper historical data, you would need a paid TheSportsDB plan, which this Actor does not currently support.
What format does the data export to? You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify platform.
How many records can I scrape in one run? You can set the maximum records up to 1,000,000. The actual number returned depends on the mode and the data available on TheSportsDB.
Why am I only getting 10 to 15 results? The public TheSportsDB API limits responses to a small number of items per request. This is a restriction of the source, not the Actor.
Can I search for a player by partial name? Yes. The 'Player Search' mode accepts partial names. Searching 'Messi' will return Lionel Messi and any other player whose name contains that string.
What is the 'Events on a Day' mode? It returns all matches scheduled for a specific date across a chosen sport. You provide a date in YYYY-MM-DD format and the sport name.
Does this Actor update data in real time? The 'Live Scores' mode fetches scores as they are available on TheSportsDB. The data is as real-time as the source provides.

Related actors

  • thesportsdb-scraper: Use this same Actor if you need a different mode. It covers all public TheSportsDB endpoints.

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 TheSportsDB.com. 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
mode string (10 options) Which TheSportsDB lookup to run. Note: results are limited by the source provider (typically 10-15 per request on the public tier). leagues
query string Search text for teamSearch / playerSearch modes (e.g. 'Arsenal', 'Messi'). not set
leagueId string League ID for upcomingEvents / pastEvents (e.g. 4328 = English Premier League). not set
teamId string Team ID for teamLookup / teamRoster modes. not set
season string Season for lookupTable mode (e.g. '2024-2025'). Optional; if empty TheSportsDB returns the current season. not set
sport string Sport name for livescore / eventsday modes (e.g. 'Soccer', 'Basketball', 'Ice_Hockey', 'American Football'). not set
date string Date for eventsday mode (e.g. '2025-05-14'). not set
maxItems integer Maximum number of sports records to collect per run. 10

Pricing

from $26.25 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.02625 to $0.035

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~thesportsdb-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 TheSportsDB Scraper on Apify All scrapers