Discover/StatsHub API
live

StatsHub APIstatshub.com

Retrieve xG, xGA, possession, and player-level stats from StatsHub across fixtures, matches, and league standings via 3 endpoints.

Endpoint health
verified 2d ago
get_fixtures_by_date
get_match_stats
get_league_standings
3/3 passing latest checkself-healing
Endpoints
3
Updated
26d ago

What is the StatsHub API?

The StatsHub API gives developers access to football statistics across 3 endpoints, covering match-level xG and xGA, player-level shot data, and season-level league standings with possession metrics. Starting with get_fixtures_by_date, you retrieve event IDs for any date, then drill into individual matches with get_match_stats or pull full-season team performance with get_league_standings.

Try it
Date in YYYY-MM-DD format. If omitted, defaults to today's date (UTC).
api.parse.bot/scraper/e1f0e079-0946-4b6c-9e3c-9227eddaa64a/<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/e1f0e079-0946-4b6c-9e3c-9227eddaa64a/get_fixtures_by_date?date=2026-07-10' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 statshub-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.

"""StatsHub Football Statistics — xG analysis workflow."""
from parse_apis.statshub_football_statistics_api import StatsHub, TournamentId, MatchNotFound

client = StatsHub()

# List today's fixtures; limit caps total items returned.
for fixture in client.fixtures.list(date="2025-05-25", limit=5):
    print(fixture.home_team.name, "vs", fixture.away_team.name, "—", fixture.status)

# Drill into one fixture's xG stats via .first()
match = client.fixtures.list(date="2025-05-25", limit=1).first()
if match:
    try:
        stats = match.stats()
        print(f"xG: {stats.home_xg} - {stats.away_xg}")
        for player in stats.home_players[:3]:
            print(f"  {player.name}: xG={player.expected_goals}, shots={player.shots}")
    except MatchNotFound as exc:
        print(f"No stats for event {exc.event_id}")

# League standings with enum for tournament selection
for team in client.standings.list(tournament_id=TournamentId.PREMIER_LEAGUE, limit=5):
    print(f"{team.position}. {team.team_name} — Pts: {team.points}, xG: {team.xg_for}, xGA: {team.xg_against}")

print("exercised: fixtures.list / fixture.stats / standings.list")
All endpoints · 3 totalmissing one? ·

Get all football fixtures/matches for a specific date. Returns match IDs, teams, scores, tournament info, and status. Each fixture includes event_id, home_team.id, and away_team.id needed to query match-level xG stats via get_match_stats. Covers 120+ leagues worldwide.

Input
ParamTypeDescription
datestringDate in YYYY-MM-DD format. If omitted, defaults to today's date (UTC).
Response
{
  "type": "object",
  "fields": {
    "date": "string in YYYY-MM-DD format",
    "fixtures": "array of fixture objects with event_id, home_team, away_team, scores, tournament, status",
    "total_fixtures": "integer count of fixtures returned"
  },
  "sample": {
    "data": {
      "date": "2025-05-25",
      "fixtures": [
        {
          "slug": "bournemouth-vs-leicester-city-mebxgg",
          "round": 38,
          "status": "finished",
          "country": "England",
          "event_id": 12436536,
          "away_team": {
            "id": 31,
            "name": "Leicester City",
            "short_name": "Leicester"
          },
          "home_team": {
            "id": 60,
            "name": "Bournemouth",
            "short_name": "Bournemouth"
          },
          "away_score": 0,
          "has_lineup": false,
          "home_score": 2,
          "tournament": {
            "id": 1,
            "name": "Premier League",
            "unique_id": 17,
            "unique_name": "Premier League"
          },
          "internal_id": 8676,
          "winner_code": 100,
          "start_timestamp": 1748185200
        }
      ],
      "total_fixtures": 131
    },
    "status": "success"
  }
}

About the StatsHub API

Fixtures and Match Lookup

The get_fixtures_by_date endpoint accepts a date parameter in YYYY-MM-DD format (defaults to today in UTC when omitted) and returns an array of fixture objects. Each fixture carries an event_id, home and away team objects with their own IDs, scores, tournament metadata, and match status. The total_fixtures integer confirms how many matches are scheduled for that date. The event_id, home_team.id, and away_team.id values from this response are required inputs for the match stats endpoint.

Match-Level xG and Player Stats

get_match_stats takes an event_id plus the home and away team IDs and returns aggregated xG figures for both sides: home_xg, away_xg, home_xga, and away_xga. Note that home_xga equals away_xg and vice versa — the endpoint makes both explicit for convenience. It also returns home_players and away_players arrays, each containing player-level stat objects that feed into the team totals.

League Standings with Season Stats

get_league_standings returns a standings array where each team object includes position, points, xg_for, xg_against, possession, and additional season-level metrics. The tournament_id parameter selects the competition (for example, 1 maps to the Premier League). If season_id is omitted, the endpoint automatically resolves to the latest available season for that tournament, and the season_id value used is echoed back in the response.

Reliability & maintenanceVerified

The StatsHub API is a managed, monitored endpoint for statshub.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when statshub.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 statshub.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
3/3 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
  • Track daily fixtures and filter by tournament to build a match calendar feed
  • Compare home_xg vs away_xg for a completed match to assess shot quality beyond the scoreline
  • Aggregate player-level xG from home_players and away_players to rank individual performers over a matchday
  • Pull xg_for and xg_against from league standings to identify over- and under-performing teams relative to their points tally
  • Monitor possession values across a full season from get_league_standings to analyze pressing and ball-retention trends
  • Chain get_fixtures_by_date and get_match_stats to build an automated post-match report pipeline
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does StatsHub offer an official developer API?+
StatsHub does not publish a documented public developer API or API keys program on its website.
What does get_match_stats return beyond team xG totals?+
It returns home_xg, away_xg, home_xga, and away_xga at the team level, plus home_players and away_players arrays containing per-player stat objects. Those player arrays are what the team xG totals are aggregated from, so individual shot contributions are accessible directly in the same response.
Does get_league_standings cover leagues other than the Premier League?+
The tournament_id parameter supports multiple leagues; tournament_id=1 maps to the Premier League. The full list of supported tournament IDs is not enumerated in the current endpoint spec. You can fork this API on Parse and revise it to add an endpoint that lists all available tournament IDs and their names.
Is historical match data available, or only recent fixtures?+
get_fixtures_by_date accepts any date in YYYY-MM-DD format, and get_league_standings accepts an explicit season_id for past seasons. Match-level xG for historical event IDs depends on whether StatsHub retains that data. Pagination across multiple dates or bulk historical pulls are not exposed in the current endpoints. You can fork this API on Parse and revise it to add a date-range or bulk-fixtures endpoint.
Are odds or betting markets included in any of the responses?+
No odds or betting market fields appear in any of the three endpoints. The API covers fixture metadata, xG and xGA figures, player stats, standings, and possession data. You can fork this API on Parse and revise it to add an endpoint pulling odds data if StatsHub surfaces that on its site.
Page content last updated . Spec covers 3 endpoints from statshub.com.
Related APIs in SportsSee all →
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.
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.
football-data.org API
Get live match scores, team standings, and player statistics across football competitions worldwide. Search for teams, view head-to-head matchups, track top scorers, and explore detailed information about competitions and geographical areas.
predicd.com API
Get real-time football match predictions, live scores, fixtures, and league standings across multiple competitions including Bundesliga. Access detailed match insights, upcoming games, and current league tables to stay informed about football events and predictions.
whoscored.com API
Search for players and teams, then dive deep into their performance metrics, match statistics, and detailed passing data to analyze football games and player abilities. Get comprehensive insights on team performance, individual player stats, and play-by-play event information to power your football analysis and decision-making.
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.
flashscore.com.ua API
Access football match results, fixtures, team histories, and in-match statistics from Flashscore. Look up matches by date, retrieve a team's recent and upcoming games, and pull detailed events and performance metrics for any match.
uefa.com API
Track detailed player performance across UEFA competitions like Champions League, Europa League, and Conference League with seasonal rankings and match-by-match statistics. Search players, compare their stats, and analyze individual performance metrics to stay informed on top European football talent.