FBRef APIfbref.com ↗
Access FBRef football data via API: player stats, team standings, match reports, scouting reports, and league leaderboards across major competitions.
What is the FBRef API?
The FBRef API exposes 10 endpoints covering player profiles, team statistics, league standings, match reports, and scouting data from FBRef.com. The get_player_advanced_stats endpoint returns career-long season breakdowns across shooting, playing time, and disciplinary categories, while get_league_player_stats gives you a full league-wide leaderboard in a single call — no need to enumerate individual player IDs first.
curl -X GET 'https://api.parse.bot/scraper/1a8fe9ae-251c-43bc-abda-4d7469597ce8/search?query=Haaland&entity_type=squads' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for players or squads by name. Returns matches with their IDs and profile URLs. If an exact match is found, FBRef redirects directly to the entity page and a single result with exact=true is returned.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query (player or team name) |
| entity_type | string | Type of entity to search for. Accepted values: players, squads. |
{
"type": "object",
"fields": {
"matches": "array of search result objects each containing name, url, id, and description or exact flag"
},
"sample": {
"data": {
"matches": [
{
"id": "1f44ac21",
"url": "https://fbref.com/en/players/1f44ac21/Erling-Haaland",
"name": "Erling Haaland",
"exact": true
}
]
},
"status": "success"
}
}About the FBRef API
Player Data
Three endpoints target individual players. get_player_stats returns a profile object (name, position, born, current_club) and a career_stats array with per-season rows including games, goals, assists, minutes_90s, and per-90 rate metrics. get_player_advanced_stats extends this with four keyed stat categories — standard, shooting, playing_time, and misc — each as an array of season rows. get_player_scouting_report returns the most recent domestic league season only, structured by the same four categories, useful for point-in-time scouting comparisons. Player IDs are 8-character hex strings (e.g., d70ce98e for Lionel Messi) and can be discovered via search or get_league_player_stats.
Team and League Data
get_team_stats accepts a team_id and optional season (YYYY-YYYY format) and returns a team_info object with name, record, and manager, plus a squad array of per-player stat rows. get_league_standings accepts a comp_id — common values include 9 (Premier League), 12 (La Liga), 20 (Bundesliga), 11 (Serie A), and 13 (Ligue 1) — and returns a standings array with rank, wins, losses, ties, goals_for, goals_against, goal_diff, and points per team. get_league_player_stats returns every player who appeared in a given league-season with their player_id, enabling bulk discovery without prior ID knowledge.
Match and Schedule Data
get_team_schedule returns a fixtures array for a team across all competitions in a season, with each row including date, comp, venue, opponent, result, goals_for, goals_against, formation, and a match_id that links directly into get_match_report. The match report endpoint returns a match_info object: home and away teams, scores, competition, venue, and date. get_player_match_logs accepts a player_id, season, and optional comp_id filter and returns one row per appearance with minutes, goals, assists, shots, yellow and red cards, game_started, and a match_report link — useful for tracking positional changes or minutes patterns across a campaign.
Search and ID Resolution
The search endpoint accepts a query string and optional entity_type (players or squads). When FBRef resolves a query to a single exact match, the response returns one object with exact: true and the resolved id and url. For ambiguous queries, it returns a matches array of candidates with names, descriptions, and IDs — the standard entry point before calling any ID-dependent endpoint.
The FBRef API is a managed, monitored endpoint for fbref.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fbref.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 fbref.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 fantasy football dashboard using
get_player_match_logsto track per-game goals, assists, and minutes for each game week - Power a league comparison tool with
get_league_standingsacross multiplecomp_idvalues to display points tables side by side - Construct a player scouting tool using
get_player_scouting_reportper-90 metrics filtered to the most recent domestic season - Generate team season summaries by joining
get_team_schedulefixture results withget_match_reportfor score and venue details - Identify breakout players in a league without prior ID knowledge using
get_league_player_statssorted by goals_per90 or assists - Track squad depth and rotation by comparing
games,games_starts, andminutes_per_gameacross all players inget_team_stats - Monitor player career trajectory by diffing
career_statsseason rows fromget_player_statsyear over year
| 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 FBRef have an official developer API?+
What does `get_player_scouting_report` return versus `get_player_advanced_stats`?+
get_player_scouting_report returns a single season — the player's most recent domestic league season — structured across four stat categories (standard, shooting, playing_time, misc) with per-90 values. get_player_advanced_stats returns career-long history across all competitions, with the same four categories each as an array of per-season rows, so you can trace multi-year progression.How do season identifiers work across different leagues?+
Does the API return lineup or in-match event data such as goalscorer timestamps, substitution times, or player ratings?+
get_match_report returns summary-level data: final score, teams, competition, venue, and date. Granular match events are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting FBRef's match event detail pages.