The Analyst APItheanalyst.com ↗
Access Premier League team and player stats from The Analyst via 3 endpoints: team attacking/defensive/possession metrics, player xG rankings, and team ratings.
What is the The Analyst API?
The Analyst API provides Premier League football data across 3 endpoints covering team statistics, player xG rankings, and computed team ratings. The get_team_statistics endpoint returns multi-dimensional team metrics including xG, shot conversion, passing accuracy, tackles, and interceptions. Player and team data is timestamped, making it straightforward to detect when the underlying numbers were last refreshed.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e6f6bf30-885a-48c5-9cf9-8ffd5c214d93/get_team_statistics' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace theanalyst-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.the_analyst_premier_league_api import TheAnalyst
client = TheAnalyst()
# Get team ratings sorted by overall rating
for rating in client.leagues.get_team_ratings(limit=5):
print(rating.team_name, rating.rating, rating.attack_rating, rating.defense_rating)
# Get player xG rankings
for player in client.leagues.get_player_statistics(limit=3):
print(player.player_name, player.xg, player.team_id)
# Get comprehensive team statistics
for team in client.leagues.get_team_statistics(limit=2):
print(team.team_uuid, team.attack.goals, team.defending.goals_against, team.possession.accuracy)
Get comprehensive Premier League team statistics including attacking metrics (goals, shots, xG, conversion rate), defensive metrics (goals against, shots against, xG against), possession stats (passes, accuracy, final third passes, tackles, interceptions), and miscellaneous stats (fouls, cards, substitutions). Returns data for all 20 teams sorted alphabetically. Single-page endpoint with no parameters.
No input parameters required.
{
"type": "object",
"fields": {
"teams": "array of team statistics objects each containing team_uuid, attack, attack_non_pen, defending, possession, and misc sub-objects with detailed metrics",
"competition": "string - League name (e.g. 'English Premier League')",
"last_updated": "string - Data timestamp"
},
"sample": {
"data": {
"teams": [
{
"misc": {
"reds": 0,
"team": "Arsenal",
"played": 38,
"team_id": 3,
"yellows": 51,
"fouls_won": 409
},
"attack": {
"xg": 65.6,
"sot": 187,
"team": "Arsenal",
"goals": 71,
"played": 38,
"team_id": 3,
"shot_conv": 12.84,
"total_shots": 553
},
"defending": {
"team": "Arsenal",
"played": 38,
"team_id": 3,
"xg_against": 28.3,
"goals_against": 27,
"total_shots_against": 310
},
"team_uuid": "4dsgumo7d4zupm2ugsvm4zm4d",
"possession": {
"team": "Arsenal",
"passes": 17897,
"played": 38,
"team_id": 3,
"accuracy": 84.24,
"pos_perc": 56.16
}
}
],
"competition": "English Premier League",
"last_updated": "2026-05-26 05:57:55.093825"
},
"status": "success"
}
}About the The Analyst API
Team Statistics
The get_team_statistics endpoint returns one object per Premier League team, identified by a team_uuid. Each team object breaks down into five sub-objects: attack (goals, shots, xG, conversion rate), attack_non_pen (penalty-excluded attacking figures), defending (goals against, shots against, xG against), possession (passes, accuracy, final-third passes), and misc (tackles, interceptions, and related metrics). The response also includes the competition string and a last_updated timestamp. No input parameters are required.
Player xG Rankings
The get_player_statistics endpoint returns a ranked list of Premier League players sorted by expected goals (xg). Each player object carries a player_id, player_name, first_name, last_name, team_id, and their xg value. The endpoint surfaces only xG as the ranking metric; other per-player stats such as assists, minutes played, or progressive carries are not included in the current response shape. A last_updated timestamp is included at the top level.
Team Ratings
The get_team_ratings endpoint returns all 20 Premier League teams sorted by rating descending, with each team assigned a rank. The rating model uses goals scored and conceded per game to produce an overall rating, plus separate attack_rating and defense_rating values, all on a 0–100 scale. Each record includes team_id, team_uuid, team_name, short_name, and a code field alongside the rating fields and matches_played. The competition string and last_updated timestamp appear at the response root.
The The Analyst API is a managed, monitored endpoint for theanalyst.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when theanalyst.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 theanalyst.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 Premier League table widget using team ratings and attack/defense scores from
get_team_ratings. - Power an xG leaderboard feature by pulling player xG values from
get_player_statistics. - Compare team defensive solidity using the
defendingsub-object fields (goals against, shots against, xG against). - Visualize possession tendencies by extracting pass accuracy and final-third pass counts from the
possessionsub-object. - Track weekly squad form by polling
last_updatedacross endpoints to detect data refreshes. - Model team efficiency by combining
attackconversion rate withattack_non_penfigures to isolate open-play finishing. - Rank clubs by defensive xG against to identify teams outperforming or underperforming their expected defensive record.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does The Analyst have an official developer API?+
What does `get_team_statistics` return beyond basic goal counts?+
Does the API cover competitions outside the Premier League?+
get_team_statistics, get_player_statistics, and get_team_ratings — return Premier League data. You can fork this API on Parse and revise it to add endpoints targeting other competitions.Can I retrieve historical season data or filter by match date?+
last_updated timestamp. Historical season breakdowns are not available in the current spec. You can fork this API on Parse and revise it to add a historical data endpoint if that coverage is needed.What player metrics are available beyond xG?+
get_player_statistics endpoint currently exposes only the xg value alongside player and team identifiers. Metrics such as assists, progressive carries, minutes played, or defensive actions per player are not included. You can fork this API on Parse and revise it to extend the player response with additional stat fields.