Discover/WhoScored API
live

WhoScored APIwhoscored.com ↗

Access WhoScored player stats, team ratings, match events, lineups, league standings, and fixtures via a structured REST API with 11 endpoints.

Endpoint health
verified 2d ago
search
list_matches
get_player_stats
get_team_stats
get_match_events
11/11 passing latest checkself-healing
Endpoints
11
Updated
23d ago

What is the WhoScored API?

The WhoScored API provides 11 endpoints covering football player and team search, seasonal statistics, per-match events with x/y pass coordinates, lineups, league standings with form guides, and match previews. The get_match_events endpoint returns every pass, shot, and action in a completed match with origin and destination coordinates, while get_league_standings surfaces full league tables including per-team home/away splits and recent form strings.

This call costs1 credit / call— charged only on success
Try it
Search keyword (player or team name)
→ api.parse.bot/scraper/fefeab4f-b650-45ef-9b05-42622fe3619a/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/fefeab4f-b650-45ef-9b05-42622fe3619a/search?query=Barcelona' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 11 totalmissing one? ·

Full-text search over WhoScored's player and team database. Returns matching players (with IDs, slugs, current team, age) and teams (with IDs, slugs, country). A query that matches only players returns an empty teams array and vice versa. Results are unordered and unpaginated — the server returns all matches in a single response.

Input
ParamTypeDescription
queryrequiredstringSearch keyword (player or team name)
Response
{
  "type": "object",
  "fields": {
    "teams": "array of team objects with team_id, slug, name, and country",
    "players": "array of player objects with player_id, slug, name, team, and age"
  },
  "sample": {
    "data": {
      "teams": [
        {
          "name": "Barcelona",
          "slug": "spain-barcelona",
          "country": "Spain",
          "team_id": 65
        }
      ],
      "players": [
        {
          "age": 38,
          "name": "Lionel Messi",
          "slug": "lionel-messi",
          "team": "Inter Miami CF",
          "player_id": 11119
        }
      ]
    },
    "status": "success"
  }
}

About the WhoScored API

Search and Identity

The search endpoint accepts a free-text query and returns matched players (with player_id, slug, team, and age) and teams (with team_id, slug, name, and country). Results are unordered and unpaginated. The player_id and team_id values returned here are the keys used across every other endpoint. Note that a query matching only players returns an empty teams array, and vice versa.

Seasonal Statistics

get_player_stats returns paginated seasonal records for a single player across all tournaments they have appeared in. Each record in playerTableStats includes fields such as rating, goals, apps, assists, passSuccess, minsPlayed, and shotsPerGame, with the available column names listed in the statColumns array. get_team_stats mirrors this for teams, additionally returning possession, and the tournamentId / tournamentRegionId pair that feeds directly into get_league_standings.

Match-Level Data

For completed matches, three endpoints cover different granularities. get_match_team_stats returns side-by-side team aggregates: possession %, shots, corners, cards, tackles, interceptions, and pass accuracy. get_match_player_stats returns per-player rows for both squads including position, isFirstEleven, isManOfTheMatch, minutesPlayed, and a stats object with all per-player match metrics. get_match_events goes deeper, returning every discrete event with x, y, end_x, end_y, event_type, outcome, and qualifiers. get_match_player_actions organises actions by expanded minute with pass structure detail and a total_actions count.

Fixtures, Lineups, and Previews

list_matches retrieves the full fixture list for a team by team_id, with an optional season parameter in YYYY/YYYY format to access archived seasons. Each match record carries match_id, date, time, team IDs and names, score, status, and tournament. get_match_lineup returns formations and 11 starters per side, with a lineup_status field that is confirmed, predicted, or unavailable. get_match_preview consolidates editorial preview paragraphs, predicted_score, missing_players with their status, previous_meetings head-to-head counts, and a lineup_stat_comparison table comparing current-season metrics for each side's expected starters.

Reliability & maintenanceVerified

The WhoScored API is a managed, monitored endpoint for whoscored.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when whoscored.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 whoscored.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.

Last verified
2d ago
Latest check
11/11 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a player comparison tool using seasonal rating, goals, and passSuccess fields from get_player_stats
  • Track team form across a season using the form string and home/away splits from get_league_standings
  • Visualise pass maps for any completed match using x, y, end_x, end_y coordinates from get_match_events
  • Generate pre-match reports by combining preview_text, missing_players, and previous_meetings from get_match_preview
  • Power a fixture calendar by querying list_matches with a team_id and optional season filter
  • Identify squad selection and formations ahead of kick-off using get_match_lineup with lineup_status awareness
  • Analyse per-minute match momentum by iterating the minutes array from get_match_player_actions
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does WhoScored have an official developer API?+
WhoScored does not publish a public developer API or an official data licence for programmatic access. This Parse API is the structured alternative.
What does `get_match_events` return for a completed match, and how detailed is the positional data?+
It returns every discrete match event — passes, shots, clearances, and more — each with x and y origin coordinates and end_x / end_y destination coordinates (0–100 scale), plus event_type, outcome, player_id, player_name, team_id, minute, and a qualifiers array. Only completed matches have full event data; in-progress or upcoming matches are not supported by this endpoint.
How do I get the `tournament_id` and `region_id` values needed for `get_league_standings`?+
get_team_stats includes tournamentId and tournamentRegionId in every row of teamTableStats. Call that endpoint with any team from the competition you want, pick the relevant row, and pass those two values as tournament_id and region_id to get_league_standings. The optional season parameter accepts YYYY/YYYY format (or YYYY for calendar-year leagues); omitting it returns the current season.
Does the API cover referee data, xG (expected goals), or player heat maps?+
Not currently. The match endpoints cover standard stats, pass coordinates, and ratings. xG figures, referee assignments, and positional heat map data are not part of the current response shapes. You can fork this API on Parse and revise it to add endpoints targeting those data points.
Are archived seasons available for all endpoints, or only some?+
list_matches supports archived seasons via the season parameter in YYYY/YYYY format; when a season is archived, the endpoint makes additional requests to retrieve that data. get_league_standings also accepts a season parameter for historical tables. Endpoints like get_match_player_stats, get_match_team_stats, and get_match_events work on any completed match by match_id regardless of season, but there is no bulk historical match listing endpoint currently. You can fork this API on Parse and revise it to add a historical match listing endpoint.
Page content last updated . Spec covers 11 endpoints from whoscored.com.
Related APIs in SportsSee all →
sofascore.com API
Access head-to-head statistics and streaks for sporting events across a wide range of sports. Retrieve daily scheduled events, detailed H2H metrics (win rates, unbeaten records, draw rates, manager duels), and event fun facts. Filter and rank H2H streak metrics by configurable percentage thresholds to identify historically consistent patterns between any two teams.
soccerstats.com API
Access comprehensive soccer statistics including live league tables, match details, team performance metrics, and form rankings across multiple football leagues. Search for specific teams and analyze their season statistics, head-to-head records, and competitive standings to stay informed on the latest soccer data.
transfermarkt.com API
Search Transfermarkt for football players and retrieve detailed player profiles, transfer histories, market value timelines, performance stats, and club squad/club information.
transfermarkt.de API
Access data from transfermarkt.de.
footystats.org API
Get live football scores, team performance metrics, league standings, and head-to-head match statistics all in one place. Search teams and leagues to access detailed player stats, comprehensive analytics, and in-depth performance data across football competitions worldwide.
football.co.il API
Track Israeli football league standings, fixtures, and team performance with comprehensive data on leagues, squads, and player statistics. Get detailed match information, top scorers, and team-specific stats to stay updated on the Israeli football season.
transfermarkt.com.br API
Access comprehensive football data including club squads, player profiles, statistics, and agency information to research teams, analyze player performance, and find representation details. Get detailed club information, player page data, and search for agencies all in one place.
fotmob.com API
Get live football scores, detailed match results, and comprehensive league statistics across multiple competitions. Access player and team performance data, browse upcoming fixtures by date, and dive into in-depth analytics for your favorite leagues and matches.