FotMob APIfotmob.com ↗
Access FotMob football data via 23 endpoints: live scores, league standings, match lineups, xG analytics, player profiles, and season stats across hundreds of competitions.
What is the FotMob API?
The FotMob API exposes 23 endpoints covering live match scores, league standings, player profiles, and advanced match analytics for football competitions worldwide. get_match_analytics returns per-player progressive passing, defensive contributions, and a full shotmap with xG and xGOT values in a single call. Use get_leagues to enumerate supported competitions and resolve league IDs needed across other endpoints, from get_league_details to get_historical_match_results.
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'
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
Match Data
get_matches_by_date returns all FotMob matches for a given date (YYYYMMDD) grouped by league, including home/away teams, live scores, and status flags (started, finished, cancelled). For bandwidth-constrained clients, get_compact_matches_by_date returns the same date's fixtures in a sub-12 KB payload using short field keys (e.g. i for match ID, h for home team). Once you have a match_id, get_match_details provides the full picture: lineups, team stats, events (goals, cards, substitutions), momentum data, and head-to-head context. Matches that have not yet kicked off will not return full detail content.
League & Season Coverage
get_league_details accepts a league_id and an optional season parameter (YYYY/YYYY format) and returns standings broken down into all/home/away/form/xG tables alongside available fixtures and transfer data. get_league_stats returns the same standings enriched with top-scorer, assist, and clean-sheet leaderboards. get_historical_match_results retrieves finished match results for a league season — including HT/FT/ET scores, penalty shootout details, team stats like possession and xG, referee, and venue — with an optional team_id filter to narrow to one club's matches.
Player Data
search_players resolves a name string to a FotMob player_id. From there, get_player_profile returns biographical details (age, height, nationality, contract end date, market value), current club, and a list of stat_seasons entries. Pass those to get_player_season_stats for per-competition aggregated totals and per-90 values covering goals, assists, xG, xA, chances created, dribbles, duels, and more. get_player_match_stats returns a game-by-game log of up to 60 recent appearances, filterable by season date range and league_id. get_player_traits returns percentile-based trait comparisons against positional peers and the player's positional profile.
Advanced Analytics
get_match_analytics bundles three data layers in one call: team xG split by half and open-play/set-play/non-penalty/xGOT breakdown; per-player stats including touches in opposition box, recoveries, and pass counts; and a shotmap array with x/y coordinates, xG, xGOT, situation (open play, corner, free kick), and shot type for every attempt. get_league_players_with_traits paginates through a league season's full squad roster — including playing-style trait percentiles — using offset and limit parameters, with optional filtering by team_id or nationality.
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 score dashboard consuming
get_matches_by_dateand refreshing match status and scorelines. - Generate league standing tables with home/away splits and xG columns from
get_league_details. - Power a player comparison tool using per-90 stats from
get_player_season_statsacross multiple competitions. - Visualize shotmaps with xG values per attempt using the
shotmaparray returned byget_match_analytics. - Track a team's full fixture list and results across a season with
get_team_fixturesandget_historical_match_results. - Filter a league's entire squad by nationality and retrieve playing-style trait percentiles via
get_league_players_with_traits. - Build a cup competition squad tracker by aggregating player appearances from recent matches using
get_cup_players.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. 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_xg` return, and how does it differ from the xG data in `get_match_analytics`?+
get_match_xg returns team-level xG figures only — total, open-play, set-play, non-penalty, and xG on target for both teams — split across full match, first half, and second half. get_match_analytics includes that same team xG breakdown plus a per-player stat layer and a full shotmap with individual shot coordinates and xGOT. Use get_match_xg when you only need the team aggregates and want to minimize response size.Does `get_player_match_stats` cover a player's full career history?+
season filter narrows results to matches within a given season's date range, and league_id filters to a single competition, but older seasons beyond that 60-match window are not accessible through this endpoint. You can fork this API on Parse and revise it to add a separate endpoint that pages through historical season stats via get_player_season_stats for deeper career coverage.Are odds, betting lines, or fantasy point projections available through any endpoint?+
What are the known limitations of `get_cup_players`?+
get_cup_players aggregates lineups from at most 25 of the most recent finished matches in the cup, prioritizing later rounds. Earlier-round matches beyond that cap are not included, so player appearance counts may be understated for players who only featured early in the competition. The total_matches_processed field in the response tells you exactly how many matches were included.