FotMob APIfotmob.com ↗
Access FotMob football data via 20 endpoints: live scores, league standings, match lineups, xG analytics, player profiles, and season stats across hundreds of leagues.
What is the FotMob API?
The FotMob API exposes 20 endpoints covering live match scores, league standings, player profiles, and advanced match analytics across hundreds of football competitions worldwide. Starting with get_leagues to retrieve league IDs, you can chain calls to get_match_details for lineups and events, get_match_xg for expected-goals breakdowns, and get_player_season_stats for per-competition aggregates — all returning structured JSON.
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 every supported competition grouped into popular leagues, country-specific leagues, and international groups — each with a numeric id, name, pageUrl, and ccode. Those IDs feed into get_league_details (standings with home/away/form/xG breakdowns, available seasons via allAvailableSeasons) and get_league_stats (top scorers, assists, clean sheets, and other statistical categories). get_matches_by_date accepts a date in YYYYMMDD format and returns every match for that day grouped by league, including live scores, status (started/finished/cancelled), and timing. A compact variant, get_compact_matches_by_date, returns the same day's matches under short keys (i, l, h, a, s) in under 12 KB, suited for high-frequency polling.
Match-Level Detail
get_match_details returns the full fact sheet for a started or finished match: header (teams, scores, goal/card events), content.matchFacts (stats, top players, momentum), content.lineup, and content.playerStats. get_match_lineup surfaces each player's formation position, per-match rating, goals, assists, shots, passes, duels, xG, xA, and heatmap coordinates alongside the bench. get_match_xg returns xG totals split by open play, set piece, non-penalty, and on-target for both halves and the full match. get_match_analytics combines all three in one call, adding a shotmap array where each shot carries x, y, xg, xgot, situation, shot_type, and minute.
Player Data
search_players resolves a name string to a numeric player_id. get_player_profile returns biographical fields (age, height, nationality, contract_end, market_value) and a stat_seasons list used to parameterise get_player_season_stats. That endpoint returns totals and per-90 values for goals, assists, xG, xA, chances created, dribbles, duels, tackles, and more, broken down by competition. get_player_match_stats delivers a game-by-game log of up to 60 recent appearances filterable by season and league_id. get_player_traits adds percentile-ranked trait comparisons against positional peers.
Bulk and Historical Data
get_league_players returns every squad member in a league season with biographical details and performance metrics. get_league_players_with_traits paginates that roster (up to 50 per page via limit/offset) with traits embedded on each player. get_historical_match_results returns full result records for a league season — scores, scorers, cards, substitutions, team stats, venue, and referee — filterable by team_id. get_full_team_stat retrieves the complete ranked team list for any single stat category (e.g. possession_percentage_team, big_chance_team) identified by stat_name; the response includes available_stat_names so you can enumerate all categories for a given 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 dashboard that polls
get_compact_matches_by_datefor score updates and drills intoget_match_detailson user selection. - Aggregate xG data across a season by iterating
get_historical_match_resultsand enriching each match withget_match_xg. - Generate a player scouting report combining
get_player_profile,get_player_season_stats, andget_player_traitsinto a single view. - Track a team's league campaign by querying
get_team_fixturesfor the schedule andget_league_detailsfor the live standings table. - Compare all teams in a league on a specific metric like
corners_per_matchusingget_full_team_statwith the appropriatestat_name. - Compile a cup squad roster by running
get_cup_playersto aggregate appearances across all finished rounds of a knockout competition. - Power a fantasy football tool by pulling
get_league_playersrosters andget_player_match_statsgame logs for rating and scoring trends.
| 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_details` return for a match that hasn't kicked off yet?+
general metadata (teams, UTC time, league) is typically present, but content.matchFacts, content.lineup, and content.playerStats will be empty or absent until the match begins.How do I get all players in a league with their playing-style traits without fetching each player individually?+
get_league_players_with_traits returns a paginated roster (up to 50 players per page via the limit and offset params) with traits and positional profile already embedded on each player object. Use has_more and next_offset in the response to walk through all pages. You can also pass a team_id to restrict the roster to one club.Does the API return betting odds or match predictions?+
How far back does historical match data go, and are all leagues covered equally?+
get_historical_match_results and get_league_details both expose an all_available_seasons (or allAvailableSeasons) array that shows exactly which seasons FotMob holds for a given league. Coverage depth varies by competition — major European leagues typically have several years of history, while smaller leagues may have fewer seasons available. Season strings not present in that array cannot be queried.