FotMob APIfotmob.com ↗
Access FotMob football data via API: live scores, league standings, match lineups, xG analytics, player profiles, and historical results across 18 endpoints.
What is the FotMob API?
The FotMob API covers 18 endpoints for football/soccer data including live match scores, league standings, player profiles, and advanced match analytics. Starting with get_leagues to resolve league IDs, you can pull real-time scores via get_matches_by_date, detailed xG breakdowns per half via get_match_xg, and game-by-game player logs via get_player_match_stats. Response fields span from basic scorelines to per-player heatmaps, shot coordinates, and percentile-based trait comparisons.
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
League and Match Coverage
get_leagues returns a structured list of competitions organised into popular leagues, country-specific leagues, and international groups — each with an id, name, pageUrl, and ccode. Those IDs feed into get_league_details (standings with all/home/away/form/xG breakdowns) and get_league_stats (top scorers, assists, clean sheets, and other season-wide statistical categories). Both endpoints accept an optional season parameter in YYYY/YYYY format; omitting it returns the current season. get_historical_match_results adds full result records per finished match — regulation scores, extra-time scores, penalty shootout details, goalscorer and assist data, cards, substitutions, possession, shots, xG, and referee — with an optional team_id filter to narrow to a single club's results.
Match Details and Analytics
get_match_details is the widest single-match endpoint, returning lineup data, team and player stats, events (goals, cards, substitutions), head-to-head data, and a momentum array, all gated behind a match_id available from get_matches_by_date or get_league_details fixtures. For dedicated xG work, get_match_xg returns xg_total, xg_open_play, xg_set_play, xg_non_penalty, and xg_on_target split across full match, first half, and second half for both teams. get_match_analytics bundles xG, per-player progressive and defensive passing stats, and a full shotmap (with x/y coordinates, xG, xGOT, situation, and shot type per effort) in a single response. get_match_lineup adds formation, bench composition, and per-player heatmap data.
Player Data
search_players resolves a name string to a numeric player_id, which unlocks the rest of the player surface. get_player_profile returns age, height, nationality, contract end date, market value, and available stat_seasons entries. get_player_season_stats breaks down totals and per-90 values for goals, assists, xG, xA, passes, chances created, dribbles, duels, recoveries, tackles, and interceptions by competition. get_player_match_stats returns up to 60 recent matches with date, rating, goals, assists, minutes, and starting status, filterable by season and league_id. get_player_traits provides percentile-based trait comparisons against positional peers, returned as a 0–1 value per trait item.
Compact and Cup Endpoints
get_compact_matches_by_date returns a minimal payload (under 12 KB) with short-keyed fields suitable for polling or low-bandwidth contexts — scores appear as -1 before kickoff. get_cup_players aggregates unique player appearances across up to 25 finished cup matches, sorted by appearances then goals, covering competitions such as the FA Cup, EFL Cup, or Europa League.
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 match tracker displaying scores, status, and goal events grouped by league using
get_matches_by_date. - Construct league table dashboards with home/away/form splits pulled from
get_league_detailsstandings. - Analyse team xG performance across halves and match situations using
get_match_xgorget_match_analytics. - Generate shot charts by plotting x/y coordinates and xGOT values from
get_match_analyticsshotmap array. - Create player comparison tools using percentile trait values from
get_player_traitsfiltered by position group. - Track a player's form over a season with rating, goals, and minutes per match from
get_player_match_stats. - Compile cup squad lists and appearance counts across rounds using
get_cup_playersfor competitions like the FA Cup.
| 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 public developer API?+
What does `get_match_analytics` return that `get_match_details` does not?+
get_match_analytics includes a full shotmap array with per-shot x/y pitch coordinates, xG, xGOT, situation, and shot type, plus per-player progressive passing and defensive contribution metrics. get_match_details covers events, lineup, team stats, and momentum but does not expose individual shot coordinates or xGOT values.Can I retrieve odds or betting lines for matches?+
Are women's football leagues covered?+
get_leagues will list all supported competitions including any women's leagues present on FotMob; check the returned countries and international arrays for available entries. If a specific women's competition is missing from the league list, it is not currently surfaced. You can fork the API on Parse and revise it to add coverage for additional competitions.What is the historical depth for `get_historical_match_results` and `get_league_details`?+
season parameter and return an all_available_seasons array listing every season the source holds for that league. The actual depth varies by competition — major leagues typically go back multiple seasons. You can iterate over the all_available_seasons values to retrieve the full archive available for a given league.