Historical Sports Data API

Multi-season sports archives, backfilled from day one

Deep historical data across 10 sports — results, statistics, lineups and closing odds — normalized into the same schema as our live feed, so models built on history hold up in production.

Seasons back to 2010 10 sports, 500+ leagues Results · Stats · Lineups · Odds Bulk export available
What Is It

History deep enough to actually train and backtest on

The Orbistats Historical Sports Data API is a multi-season archive covering fixtures, results, team and player statistics, lineups, match events and closing odds across every sport we support. Instead of a shallow "last few seasons" export bolted onto a live feed, it's backfilled from day one and normalized into the exact same schema as our live data — so a model trained on 2018 season history reads identically to a match happening right now, with no separate mapping layer to maintain.

That consistency is what makes it useful for the work that actually depends on history: backtesting a pricing model against how markets closed and moved over past seasons, training a fantasy or predictive model on real outcomes rather than a handful of recent games, building head-to-head records and season archives for a media product, or running research that needs a defensible, structured dataset rather than scraped tables. Query it match-by-match through the REST API, or pull entire seasons at once with bulk export when you're working at scale.

2010+Seasons backfilled
10Sports covered
500+Leagues & competitions
99.99%Uptime SLA
Core Features

Everything a backtest or model needs, in one archive

Not just final scores — the surrounding data that makes history actually usable.

Included

Historical Results

Full-time and period-by-period results for every match, every season.

Included

Historical Statistics

Team and player statistics from every archived match, not just current-season.

Included

Lineups & Events

Starting XIs, substitutions, cards and scoring events from the archive.

Included

Multi-Sport Coverage

Football, basketball, cricket, tennis and 6 more sports in one schema.

Access

Historical Odds

Closing lines and, on higher plans, full line movement history.

Access

Bulk Export

Pull full seasons or multi-season ranges as compressed files.

Access

Same Schema As Live

No separate mapping layer between historical and live data.

Access

99.99% Uptime SLA

Redundant sourcing and infrastructure on paid and enterprise plans.

How It's Delivered

Query match-by-match, or pull it all at once

Two ways to get historical data out, depending on how much of it you need.

MethodBest forTypical volumeHow it works
REST QueryLooking up a specific match, team or season on demandSingle matches to a few hundredCall GET /v1/football/historical/results with filters for league, team or date range.
Bulk ExportBacktests and model training across full seasonsThousands to millions of rowsRequest a compressed export for a season or date range, delivered as a downloadable file.

Need live data too? The Live Scores API uses the same schema, so historical and live queries stay consistent end to end.

Coverage

Historical archives across 10 sports

Coverage depth varies by league — major competitions go back furthest, with new seasons and leagues added continuously.

⚽ Football2000+
🏀 Basketball2005+
🏏 Cricket2005+
🎾 Tennis2005+
⚾ Baseball2010+
🏒 Ice Hockey2010+
⛳ Golf2010+
🏉 Rugby2010+
🥊 MMA2010+
🎮 Esports2015+
Example Requests

GET /v1/football/historical/results

Historical results for a league and season, in cURL, Python, Node.js, plus a bulk export request.

cURL
curl "https://api.orbistats.com/v1/football/historical/results?league=premier-league&season=2024" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import requests

resp = requests.get(
  "https://api.orbistats.com/v1/football/historical/results",
  params={"league": "premier-league", "season": "2024"},
  headers={"Authorization": "Bearer YOUR_API_KEY"}
)
print(resp.json())
Node.js
const res = await fetch(
  "https://api.orbistats.com/v1/football/historical/results?league=premier-league&season=2024",
  { headers: { Authorization: "Bearer YOUR_API_KEY" } }
);
const data = await res.json();
Bulk export request
POST /v1/football/historical/export
{
  "league": "premier-league",
  "seasons": ["2020", "2021", "2022", "2023", "2024"],
  "include": ["results", "statistics", "odds"],
  "format": "json"
}
Example response
{
  "season": "2024/25",
  "league": "Premier League",
  "matches": 380,
  "data_from": "2024-08-16",
  "sample_match": {
    "fixture_id": 41207,
    "home_team": "Arsenal",
    "away_team": "Chelsea",
    "final_score": { "home": 2, "away": 1 },
    "closing_odds": { "home": 1.95, "draw": 3.60, "away": 3.80 },
    "kickoff": "2024-10-27T15:30:00Z"
  }
}
Built For

Who runs on the Historical Sports Data API

The same archive, shaped to whatever you're building on top of it.

Reliability

An archive you can build a model on with confidence

Historical data is only useful if it's consistent — the same match shouldn't return different statistics depending on when you query it. Orbistats' archive is versioned and sourced redundantly, runs on the same infrastructure as our live feed, and carries a 99.99% uptime SLA on paid plans, with dedicated capacity and deeper backfills available for enterprise and research use cases.

FAQ

Common questions

How far back does the Orbistats Historical Sports Data API go?

Coverage depth varies by sport and league, with most major football, basketball and cricket competitions backfilled to at least the 2010 season, and deeper archives available on request for enterprise plans.

What's included in the historical data — just results, or more?

Fixtures and results, team and player statistics, lineups, match events, and historical closing odds and line movement, all normalized into the same schema as our live data so models trained on history transfer cleanly to production.

Can I bulk export historical data instead of calling the API per match?

Yes. Bulk export is available for pulling full seasons or multi-season ranges as compressed files, which is faster and more practical than paginating through thousands of individual API calls for large backtests.

Is historical odds data included, or only results and statistics?

Historical odds are included, covering closing lines and, on higher plans, full line movement history so you can backtest pricing models against how markets actually moved, not just where they settled.

Is there a free plan for the Historical Sports Data API?

Yes. Start free with a self-serve API key to explore recent seasons, then upgrade to a paid or enterprise plan for deeper archives, bulk export and higher rate limits.

What is the historical data used for?

Backtesting pricing and trading models, training fantasy and predictive models, powering research and analytics, and building historical stats pages, head-to-head records and season archives for media products.

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.