# Cricket Sabermetrics API — Jenko Analytics (`jenko_systems/cricket-sabermetrics`) Actor

Modern cricket analytics beyond batting average. 9 analysis modes covering Tests, ODIs, T20Is, IPL, BBL, SA20 and more — with head-to-head, venue masters, pressure situations, era comparison and JTM match prediction.

- **URL**: https://apify.com/jenko\_systems/cricket-sabermetrics.md
- **Developed by:** [Jenko Systems](https://apify.com/jenko_systems) (community)
- **Categories:** Integrations, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🏏 Cricket Sabermetrics — Jenko Analytics Cricket Edition v1.0

**Modern cricket analytics that goes far beyond batting average.** Powered by Cricsheet's ball-by-ball ODC-BY data and **12 Jenko proprietary metrics** designed to measure the "invisible greatness" traditional stats miss.

---

### 🇬🇧 English

#### What you get

9 analysis modes, all calibrated with **12 Jenko proprietary metrics**:

| ## | Metric | Measures |
|---|--------|----------|
| 1 | **JBI** | Jenko Batting Impact — composite batting greatness (format-aware) |
| 2 | **JBO** | Jenko Bowling Opposition — composite bowling greatness |
| 3 | **JCG** | Jenko Crease Generalship — the "Williamson/Dravid effect" |
| 4 | **JPI** | Jenko Pressure Index — performance under high stakes |
| 5 | **JOM** | Jenko Opposition Mastery — performance vs elite teams |
| 6 | **JEA** | Jenko Era-Adjusted — player vs era median |
| 7 | **JCM** | Jenko Conditions Mastery — venue/conditions specialist |
| 8 | **JTR** | Jenko Transfer Rating — bowler-fatigue created |
| 9 | **JWP** | Jenko Win Probability — contribution to team wins |
| 10 | **JCC** | Jenko Career Curve — sustained-excellence trajectory |
| 11 | **JCH** | Jenko Captaincy Halo — performance differential as captain |
| 12 | **JTM** | Jenko Team Matchup — A vs B win probability |

**Every metric inline:** formula, weighted breakdown, verdict scale, real benchmarks.

#### Modes available

| Mode | Metric(s) | Use case |
|------|-----------|----------|
| `player_jenko_profile` | JBI, JBO, JCG, JCC, JPI, JOM | Complete player report card |
| `player_h2h_jenko` | JBI comparison | Side-by-side two players |
| `match_jenko_breakdown` | JBI/JBO per innings | Full scorecard with metrics |
| `team_jenko_strength` | JBI/JBO on depth/firepower | Team analysis |
| `era_compare` | JEA leaderboard | Compare players across eras |
| `tournament_analytics` | JBI/JBO on leaders | Tournament-wide leaders |
| `pressure_situations_analysis` | JPI leaderboard | Clutch performers |
| `conditions_specialist_finder` | JCM | Venue/conditions masters |
| `match_predictor` | JTM | Team A vs B win probability |

#### Coverage (modern era, Cricsheet)

| Competition | Volume |
|------------|--------|
| Test Matches (M + F) | 877 matches, Dec 2001+ |
| ODIs (M + F) | 2,530 matches, Jun 2002+ |
| T20Is (M + F) | Entire era 2005+ |
| IPL | 1,219 matches, 2008+ |
| WPL, BBL, WBBL, SA20, CSA T20, T20 Blast, The Hundred | Complete |

#### Quick examples

**V Kohli's IPL profile with all metrics:**
```json
{"mode": "player_jenko_profile", "player_name": "V Kohli", "tournament": "ipl"}
````

**Mumbai Indians vs CSK at Wankhede:**

```json
{"mode": "match_predictor", "team_name": "Mumbai Indians", "team_name_b": "Chennai Super Kings", "venue": "Wankhede", "tournament": "ipl"}
```

**Who masters Wankhede:**

```json
{"mode": "conditions_specialist_finder", "venue": "Wankhede", "tournament": "ipl", "min_innings": 10}
```

#### Pricing

**US$ 5 / 1,000 records returned.** No subscription, no minimum.

#### Attribution

Underlying data from **Cricsheet** (cricsheet.org), maintained by Stephen Rushe, under **ODC-BY 1.0**. This actor adds value through Jenko Systems' proprietary analytics.

***

### 🇧🇷 Português

#### O que você ganha

9 modos de análise com **12 métricas Jenko proprietárias**:

| ## | Métrica | O que mede |
|---|---------|------------|
| 1 | **JBI** | Jenko Batting Impact — grandeza completa do batter (sensível ao formato) |
| 2 | **JBO** | Jenko Bowling Opposition — grandeza completa do bowler |
| 3 | **JCG** | Jenko Crease Generalship — o "efeito Williamson/Dravid" |
| 4 | **JPI** | Jenko Pressure Index — performance sob alta pressão |
| 5 | **JOM** | Jenko Opposition Mastery — performance vs times elite |
| 6 | **JEA** | Jenko Era-Adjusted — jogador vs mediana da era |
| 7 | **JCM** | Jenko Conditions Mastery — especialista em venue/condições |
| 8 | **JTR** | Jenko Transfer Rating — cansaço de bowler criado |
| 9 | **JWP** | Jenko Win Probability — contribuição pra vitórias |
| 10 | **JCC** | Jenko Career Curve — trajetória de excelência sustentada |
| 11 | **JCH** | Jenko Captaincy Halo — diferencial como capitão |
| 12 | **JTM** | Jenko Team Matchup — probabilidade A vs B |

**Cada métrica inline:** fórmula, breakdown ponderado, escala de veredicto, benchmarks reais.

#### Preço

**US$ 5 / 1.000 records retornados.** Sem mensalidade, sem mínimo.

#### Atribuição

Dados via **Cricsheet** (cricsheet.org), sob licença **ODC-BY 1.0**. Esta API agrega valor através das análises proprietárias da Jenko Systems.

***

### 🛠️ Local development

```bash
pip install -r requirements.txt
echo '{"mode": "player_jenko_profile", "player_name": "V Kohli", "tournament": "ipl"}' > input.json
python -m src.main
```

ZIPs are cached at `~/.cache/cricsheet/` to speed iteration.

***

Built by [Jenko Systems](https://jenkosystems.com). Source code proprietary. Data ODC-BY 1.0.

# Actor input Schema

## `mode` (type: `string`):

Which analysis to run. Each mode has its own required fields below.

## `tournament` (type: `string`):

Which competition to load. Specifying a single one is much faster than 'all'.

## `format` (type: `string`):

Optional: restrict to a format when tournament='all'.

## `player_name` (type: `string`):

Used by player\_jenko\_profile and player\_h2h\_jenko. Cricsheet uses initial+surname format (e.g., 'V Kohli', 'SR Tendulkar'). Fuzzy match supported.

## `player_name_b` (type: `string`):

Used by player\_h2h\_jenko mode only.

## `team_name` (type: `string`):

Used by team\_jenko\_strength and match\_predictor. Examples: 'India', 'Mumbai Indians', 'Chennai Super Kings'.

## `team_name_b` (type: `string`):

Used by match\_predictor mode only.

## `venue` (type: `string`):

Used by conditions\_specialist\_finder and match\_predictor. Partial match accepted (e.g., 'Wankhede', 'Chinnaswamy').

## `match_id` (type: `string`):

Used by match\_jenko\_breakdown. Example: '335982' (first IPL match ever).

## `min_innings` (type: `integer`):

Used by leaderboard-style modes to filter out small samples. Default varies by mode.

## `date_from` (type: `string`):

Used by tournament\_analytics to restrict to a date range. ISO format: YYYY-MM-DD.

## `date_to` (type: `string`):

Used by tournament\_analytics to restrict to a date range. ISO format: YYYY-MM-DD.

## Actor input object example

```json
{
  "mode": "player_jenko_profile",
  "tournament": "ipl",
  "format": "all",
  "player_name": "V Kohli",
  "player_name_b": "RG Sharma",
  "team_name": "Mumbai Indians",
  "team_name_b": "Chennai Super Kings",
  "venue": "Wankhede",
  "match_id": "335982",
  "min_innings": 10,
  "date_from": "2020-01-01",
  "date_to": "2024-12-31"
}
```

# Actor output Schema

## `dataset_url` (type: `string`):

Link to the dataset with all analysis records

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jenko_systems/cricket-sabermetrics").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("jenko_systems/cricket-sabermetrics").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call jenko_systems/cricket-sabermetrics --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jenko_systems/cricket-sabermetrics",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cricket Sabermetrics API — Jenko Analytics",
        "description": "Modern cricket analytics beyond batting average. 9 analysis modes covering Tests, ODIs, T20Is, IPL, BBL, SA20 and more — with head-to-head, venue masters, pressure situations, era comparison and JTM match prediction.",
        "version": "1.0",
        "x-build-id": "uXSuotJPapJClLIXz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jenko_systems~cricket-sabermetrics/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jenko_systems-cricket-sabermetrics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/jenko_systems~cricket-sabermetrics/runs": {
            "post": {
                "operationId": "runs-sync-jenko_systems-cricket-sabermetrics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/jenko_systems~cricket-sabermetrics/run-sync": {
            "post": {
                "operationId": "run-sync-jenko_systems-cricket-sabermetrics",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Analysis Mode",
                        "enum": [
                            "player_jenko_profile",
                            "player_h2h_jenko",
                            "match_jenko_breakdown",
                            "team_jenko_strength",
                            "era_compare",
                            "tournament_analytics",
                            "pressure_situations_analysis",
                            "conditions_specialist_finder",
                            "match_predictor"
                        ],
                        "type": "string",
                        "description": "Which analysis to run. Each mode has its own required fields below.",
                        "default": "player_jenko_profile"
                    },
                    "tournament": {
                        "title": "Tournament / Competition",
                        "enum": [
                            "ipl",
                            "wpl",
                            "bbl",
                            "wbbl",
                            "sa20",
                            "csa_t20",
                            "t20_blast",
                            "the_hundred",
                            "cpl",
                            "psl",
                            "bpl",
                            "lpl",
                            "ilt",
                            "mlc",
                            "wcpl",
                            "tests",
                            "tests_women",
                            "odis",
                            "odis_women",
                            "t20is",
                            "t20is_women",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which competition to load. Specifying a single one is much faster than 'all'.",
                        "default": "ipl"
                    },
                    "format": {
                        "title": "Format Filter (when tournament=all)",
                        "enum": [
                            "all",
                            "test",
                            "odi",
                            "t20",
                            "t20_franchise"
                        ],
                        "type": "string",
                        "description": "Optional: restrict to a format when tournament='all'.",
                        "default": "all"
                    },
                    "player_name": {
                        "title": "Player Name",
                        "type": "string",
                        "description": "Used by player_jenko_profile and player_h2h_jenko. Cricsheet uses initial+surname format (e.g., 'V Kohli', 'SR Tendulkar'). Fuzzy match supported."
                    },
                    "player_name_b": {
                        "title": "Second Player Name (for H2H)",
                        "type": "string",
                        "description": "Used by player_h2h_jenko mode only."
                    },
                    "team_name": {
                        "title": "Team Name",
                        "type": "string",
                        "description": "Used by team_jenko_strength and match_predictor. Examples: 'India', 'Mumbai Indians', 'Chennai Super Kings'."
                    },
                    "team_name_b": {
                        "title": "Second Team Name (for match prediction)",
                        "type": "string",
                        "description": "Used by match_predictor mode only."
                    },
                    "venue": {
                        "title": "Venue",
                        "type": "string",
                        "description": "Used by conditions_specialist_finder and match_predictor. Partial match accepted (e.g., 'Wankhede', 'Chinnaswamy')."
                    },
                    "match_id": {
                        "title": "Cricsheet Match ID",
                        "type": "string",
                        "description": "Used by match_jenko_breakdown. Example: '335982' (first IPL match ever)."
                    },
                    "min_innings": {
                        "title": "Minimum Innings (filter)",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Used by leaderboard-style modes to filter out small samples. Default varies by mode.",
                        "default": 10
                    },
                    "date_from": {
                        "title": "Date From (optional)",
                        "type": "string",
                        "description": "Used by tournament_analytics to restrict to a date range. ISO format: YYYY-MM-DD."
                    },
                    "date_to": {
                        "title": "Date To (optional)",
                        "type": "string",
                        "description": "Used by tournament_analytics to restrict to a date range. ISO format: YYYY-MM-DD."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
