FotMob APIfotmob.com ↗
Access FotMob football data via API: live scores, league standings, match lineups, player stats, and fixtures across hundreds of competitions.
What is the FotMob API?
The FotMob API provides 5 endpoints covering live football scores, league standings, and detailed match data across hundreds of competitions worldwide. Starting with get_leagues, you can retrieve league IDs for popular, country-specific, and international tournaments, then chain those IDs into get_league_details or get_matches_by_date to pull standings, fixtures, live scores, and full match analytics including lineups, player stats, and momentum data.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/645b8e03-271d-4c85-97e7-35d5733a2d78/get_leagues' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fotmob-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
FotMob API - Football/Soccer Data
Get your API key from: https://parse.bot/settings
"""
from parse_apis.fotmob_api import FotMob, League, LeagueDetails, DaySchedule, MatchDetails
# Initialize client
fotmob = FotMob(api_key="YOUR_API_KEY")
# List all leagues and browse popular ones
for league in fotmob.leagues.list():
print(league.name, league.ccode)
# Construct Premier League by ID and get details
premier_league = fotmob.league(id=47)
details = premier_league.details(season="2024/2025")
# Access league metadata
print(details.details.name, details.details.selected_season, details.details.country)
# Browse available seasons
for season in details.all_available_seasons:
print(season)
# Get today's matches
schedule = fotmob.matches.by_date(date="20260610")
print(schedule.date)
for league_day in schedule.leagues:
for match in league_day.matches:
print(match.home.name, match.away.name, match.status.started)
# Get detailed match info
match_detail = fotmob.match(id=4813374).details()
print(match_detail.general.league_name, match_detail.general.home_team.name)
print(match_detail.header.status.score_str, match_detail.header.status.finished)
List all supported leagues with their IDs and metadata. Returns popular leagues, country-specific leagues, and international league groups. Use league IDs from this endpoint as input to get_league_details and get_league_stats.
No input parameters required.
{
"type": "object",
"fields": {
"popular": "array of popular league objects with id, name, pageUrl, and ccode",
"countries": "array of country objects each containing a leagues array",
"international": "array of international league group objects each containing a leagues array"
},
"sample": {
"data": {
"popular": [
{
"id": 77,
"name": "World Cup",
"ccode": "INT",
"pageUrl": "/leagues/77/overview/world-cup",
"localizedName": "FIFA World Cup"
},
{
"id": 47,
"name": "Premier League",
"ccode": "ENG",
"pageUrl": "/leagues/47/overview/premier-league",
"localizedName": "Premier League"
}
],
"countries": [
{
"name": "Albania",
"ccode": "ALB",
"leagues": [
{
"id": 260,
"name": "Kategoria Superiore",
"ccode": "ALB",
"pageUrl": "/leagues/260/overview/kategoria-superiore",
"localizedName": "Kategoria Superiore"
}
],
"localizedName": "Albania"
}
],
"international": [
{
"name": "International",
"ccode": "INT",
"leagues": [
{
"id": 42,
"name": "Champions League",
"ccode": "INT",
"pageUrl": "/leagues/42/overview/champions-league",
"localizedName": "Champions League"
}
],
"localizedName": "International"
}
]
},
"status": "success"
}
}About the FotMob API
What the API Covers
This API surfaces data from FotMob across five endpoints. get_leagues returns a categorized list of competitions — split into popular, countries, and international arrays — each with a numeric league id used as input to other endpoints. get_matches_by_date accepts a date in YYYYMMDD format and returns all matches for that day, grouped by league, with home/away team names, scores, and match statuses including live games in progress.
League and Season Data
get_league_details accepts a league_id (e.g. 47 for the Premier League) and an optional season parameter in YYYY/YYYY format. It returns standings tables with home, away, all, form, and xg breakdowns per team, available tabs such as overview, table, and fixtures, and an allAvailableSeasons array so you can enumerate historical seasons. Omitting the season parameter defaults to the current season. get_league_stats takes the same parameters and returns the same structure with the stats tab active, covering top scorers, assists, and other season-wide statistical categories.
Match Details
get_match_details requires a match_id obtainable from get_matches_by_date results. It returns a general object with metadata like matchTimeUTC, leagueName, started, and finished; a header object with team names, scores, and goal/card events; and a content object containing matchFacts (stats, top players, momentum), liveticker, lineup, and playerStats. Note that this endpoint only works for matches that have already kicked off — querying a future match that has not started will return an error.
The FotMob API is a managed, monitored endpoint for fotmob.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fotmob.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fotmob.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a live scores dashboard by polling
get_matches_by_datewith today's date and displaying real-time status updates - Track Premier League standings across seasons by calling
get_league_detailswith differentseasonvalues fromallAvailableSeasons - Generate post-match reports using
get_match_detailsfields likematchFacts,lineup,playerStats, andmomentum - Identify top scorers and assist leaders for a given competition and season using
get_league_stats - Build a fixture browser that maps league IDs from
get_leaguesto upcoming matches viaget_matches_by_date - Compare home vs. away form for standings using the
home,away, andformbreakdowns inget_league_detailstable objects
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FotMob have an official developer API?+
What does `get_match_details` return and when can it be called?+
general metadata object, a header with teams, scores, and events (goals and cards), and a content object with matchFacts, lineup, liveticker, and playerStats. The endpoint only responds successfully for matches that have already kicked off. Querying a scheduled match before it starts will return an error.Does the API expose player profiles or transfer history?+
get_league_stats and per-match player performance data through get_match_details, but individual player profile pages and transfer histories are not exposed as standalone endpoints. You can fork this API on Parse and revise it to add a dedicated player profile endpoint.Can I look up matches by team rather than by date?+
get_matches_by_date, which requires a specific date in YYYYMMDD format and returns all matches for that day grouped by league. There is no team-specific fixture list endpoint. You can fork this API on Parse and revise it to add a team fixtures endpoint.How do I get standings for a past season rather than the current one?+
get_league_details with the season parameter set to a value from the allAvailableSeasons array returned in a prior call (e.g. 2023/2024). Omitting season always returns data for the current active season. The same optional season parameter applies to get_league_stats.