Analytics & Data Science

Structured data, built for modeling

Clean, structured and backfilled sports data — results, statistics and odds history — ready to feed straight into your models, notebooks and pipelines. Same schema whether you're pulling last night's match or the last five seasons.

Included

Multi-Season Archive

Backfilled history across every sport.

Included

Structured Schema

Consistent, well-typed data for pipelines.

Included

Bulk Export

Pull large ranges for offline analysis.

Access

Advanced Metrics

Deeper statistics for research use cases.

Included

Point-in-Time Data

Snapshots as they stood, not revised with hindsight.

Included

Shared Live/Historical Schema

The same field names in backtests and production.

Built For

What teams use this data for

The same structured feed supports a range of analytics and data science workflows.

MODELING

Predictive Modeling

Feed match results, team form and player stats into forecasting or rating models.

  • Historical and live data share one schema
  • Elo-friendly result and margin fields
  • Player and team IDs stay stable across seasons
See example request →
BACKTESTING

Backtesting & Research

Replay past seasons against a strategy or model without contaminating results with hindsight.

  • Point-in-time snapshots avoid lookahead bias
  • Bulk export for multi-season pulls
  • Consistent competition and season identifiers
See backtest example →
PERFORMANCE

Player & Team Analytics

Build scouting boards, performance dashboards or fantasy scoring engines on structured stats.

  • Season and match-level statistics
  • Consistent fields across competitions
  • Works alongside the Fantasy & Analytics solution
See Fantasy & Analytics →
REPORTING

Automated Reporting

Schedule pulls into a warehouse and generate recurring reports without manual data entry.

  • Predictable, typed JSON — easy to load into a warehouse
  • Pagination metadata for safe incremental syncs
  • Webhooks available to trigger reports on new results
See Webhooks & Real-Time →
Data Fields

What you get back

A representative slice of the fields available on historical and statistics endpoints — full field-by-field detail is in the API Reference.

FieldTypeDescription
fixture_idstringStable identifier for the match, consistent across live and historical calls
seasonstringSeason label, e.g. 2024-2025
competition_idstringLeague or tournament identifier
home_team / away_teamstringTeam names, with matching team_id fields for joins
home_goals / away_goalsintegerFinal score, present once the fixture is complete
statisticsobjectPossession, shots, cards and other match-level stats, where available
odds_closeobjectClosing odds snapshot, for studies comparing pre-match pricing to outcomes
i Same shape, every sport. Swap the sport segment in the URL and the field names stay the same, so one parsing function covers your whole pipeline.
Example Request

GET /v1/football/historical/results

Bulk historical results for modeling — the response, and loading it straight into pandas.

GET /v1/football/historical/results?season=2024-2025
{
  "data": [
    {
      "fixture_id": "f_20481",
      "season": "2024-2025",
      "competition_id": "premier-league",
      "home_team": "Arsenal",
      "away_team": "Chelsea",
      "home_goals": 2,
      "away_goals": 1
    }
  ],
  "meta": { "season": "2024-2025", "matches": 380 },
  "pagination": { "page": 1, "per_page": 100, "total_pages": 4 }
}
import pandas as pd

results = client.football.historical(season="2024-2025")
df = pd.DataFrame(results["data"])

df["margin"] = df["home_goals"] - df["away_goals"]
print(df.groupby("competition_id")["margin"].mean())

See the full Historical Backtest example for a complete, runnable walkthrough.

FAQs

Common questions

Is the historical data point-in-time correct?

Yes. Historical endpoints return the data as it stood at the time, not data revised with hindsight, so backtests don't suffer from lookahead bias.

Does live data use the same schema as historical data?

Yes. Historical and live endpoints share the same field names and types, so a model trained on historical data can consume live data without a rewrite.

Can I bulk-export data instead of paginating through the API?

Yes. Growth and Enterprise plans include bulk export for large date ranges, which is faster than paginating a season at a time for research pipelines.

Can I use this data to train and sell a commercial model?

Usage rights depend on your plan and data-licensing terms. Contact sales to confirm commercial modeling and redistribution rights before building a paid product on top of the data.

See Also

Related pages

Explore more of the platform.

Get Started

Start free. Upgrade when you need enterprise SLAs.

Self-serve API keys for developers today — dedicated infrastructure, custom feeds and SLAs when you're ready.