Player Prop Zone widget displays player prop markets for a given match. It provides tabbed navigation by market type (goalscorers, cards, assists, shots, etc.) and supports custom tab order, label overrides, and bet slip integration via the onAction callback.
The widget shows team selection at the top, primary prop categories (e.g. Goalscorers, Player goals, Player shots on goal), secondary filters (e.g. Anytime / 1st / Last goalscorer), and a pitch view with players and their odds. Locked or unavailable outcomes are indicated with a lock icon.

includedTabs, excludedTabs, and tabOrder.labelOverrides.onAction and sync bet slip state via the adapter (see Bet slip integration).SIR('registerAdapter', '{ADAPTER_NAME}'). For bet slip sync, the adapter must implement the betSlipSelection endpoint (see Bet slip integration).Environment Requirements
The widget uses market IDs (and for some types, outcome IDs or line keys) for tabs and secondary tabs. Use these IDs in includedTabs, excludedTabs, tabOrder, and labelOverrides.
Secondary tab label keys are market IDs:
| Tab ID | Description |
|---|---|
goalscorers | Goalscorers (group: Anytime / First / Last) |
playerToScorePlusTwo | To Score 2+ |
playerToScorePlusThree | To Score 3+ |
playerToBeCardedLive | To be carded (live) |
playerToScoreFromOutsideOfTheBox | To score outside the box |
playerToScoreOrAssist | To score or assist |
playerToBeSentOff | To be sent off |
Secondary tab label keys are outcome IDs:
| Tab ID | Description |
|---|---|
playerToScoreIncludingOvertime | Player to score |
xthGoalscorerAndOneXTwo | Xth goalscorer & 1x2 |
anytimeGoalscorerAndOneXTwo | Anytime goalscorer & 1x2 |
playerTotalShotsIncludingOvertime | Total shots |
playerTotalShotsOnGoalIncludingOvertime | Total shots on goal |
Secondary tab label keys are "increase" and "decrease":
| Tab ID | Description |
|---|---|
playerGoalsIncludingOvertime | Goals |
playerShotsOnGoalIncludingOvertime | Shots on goal |
playerShotsIncludingOvertime | Shots |
playerToBeCardedIncludingOvertime | To be carded (prematch) |
playerAssistsIncludingOvertime | Assists |
playerPassesIncludingOvertime | Passes |
playerTacklesIncludingOvertime | Tackles |
playerXPlusShotsOnTarget | X+ shots on target |
playerXPlusShots | X+ shots |
playerXPlusShotsOnTargetFromOutsideOfTheBox | X+ shots on target from outside the box |
playerXPlusAssists | X+ assists |
| Property | Type | Default | Description |
|---|---|---|---|
matchId | string | Required | The match ID to get player prop markets for. |
onAction | function | undefined | Callback that receives bet slip data when a selection is clicked. Use for bet slip integration and analytics. |
excludedTabs | array<string> | undefined | Market IDs to exclude from the navigation. |
includedTabs | array<string> | undefined | Market IDs to include in the navigation. When set, only tabs matching these IDs are displayed. Takes precedence over excludedTabs. |
tabOrder | array<string> | undefined | Ordered list of market IDs defining custom sort order. Markets not in the list are placed at the end. |
labelOverrides | object | undefined | Override labels for specific tabs and their secondary tabs, keyed by tab ID. See structure below. |
Each entry uses the tab ID as key and accepts:
label: Override the main tab label.secondaryTabLabels: Override secondary (second row) tab labels. Keys depend on the market type:
"increase" and "decrease" (override the +/− line control labels).Example:
{
"goalscorers": {
"label": "Goals",
"secondaryTabLabels": {
"40": "Any"
}
}
}(function (a, b, c, d, e, f, g, h, i) {
a[e] ||
((i = a[e] =
function () {
(a[e].q = a[e].q || []).push(arguments);
}),
(i.l = 1 * new Date()),
(i.o = f),
(g = b.createElement(c)),
(h = b.getElementsByTagName(c)[0]),
(g.async = 1),
(g.src = d),
g.setAttribute("n", e),
h.parentNode.insertBefore(g, h));
})(
window,
document,
"script",
"https://widgets.sir.sportradar.com/sportradar/widgetloader",
"SIR",
{
language: "en",
},
);
SIR("registerAdapter", "{ADAPTER_NAME}");
SIR("addWidget", "#sr-widget", "match.playerPropZone", {
matchId: "sr:match:61301097",
});<div id="sr-widget"></div>SIR("addWidget", "#sr-widget", "match.playerPropZone", {
matchId: "sr:match:61301097",
includedTabs: ["goalscorers", "cards"],
tabOrder: ["cards", "goalscorers"],
labelOverrides: {
goalscorers: {
label: "Goals",
secondaryTabLabels: {
40: "Any",
},
},
},
onAction: function (data) {
console.log(data);
},
});<div id="sr-widget"></div>For CSS customization (colors, borders, typography), see Player Prop Zone – Theming customization.
To add selections to your bet slip and keep the widget in sync with bet slip state, see Player Prop Zone – Bet slip integration.