The stock data provider loads Custom Bet offering and odds calculation from Sportradar and enriches market and outcome labels using the same match and translation data as other Sportradar widgets. You do not implement UOF proxy callbacks (getAvailableMarkets, calculate, and similar). The widget handles those calls internally.
Use this path when custom bet is enabled for your bookmaker and you want the smallest integration surface: a match id, a session jwt, and bet slip handling.
clientId with custom bet coverage for the events you display.jwt — short-lived JSON Web Token (RS256) for the logged-in user or session. You sign it on your backend; the widget sends Authorization: Bearer … on every offering and calculation request. See JWT authentication (Stock Provider) for signing and delivery to the page.matchId for an event that supports custom bet for your package.addToBetSlip in dataProviderConfig — required for every data provider. See addToBetSlip and Handling Selections and Odds.Service endpoints are supplied through the widget loader client context (defaults are configured for production widgets). If you need non-standard endpoints, coordinate with Sportradar support.
matchId and jwt.addToBetSlip runs on your side for validation and bet slip integration.<script>
(function (a, b, c, d, e, f, g, h, i) {
a[e] ||
((i =
| Property | Required | Description |
|---|---|---|
dataProvider | Yes | Set to 'stock'. |
jwt | Yes | RS256 JWT for the current user or session — JWT authentication. |
matchId | Yes | Sportradar match id. See Getting Identifiers. |
dataProviderConfig.addToBetSlip | Yes | Bet slip callback when the user adds the custom bet. |
All other widget props (API reference) work the same as with UOF Proxy (display mode, market filters, theming, and so on).
Use stock when custom bet is enabled for your bookmaker. If you still use UOF Proxy, see Migrating from UOF Proxy to Stock. Deprecated legacy paths — UOF Proxy (uofProxy) and Data Adapter (custom) — are documented only for existing integrations.
| Symptom | Likely cause |
|---|---|
| Widget shows an error immediately | Missing or invalid jwt for dataProvider: 'stock'. |
| Empty markets | matchId has no custom bet coverage for your bookmaker, or the service returned no selections. |
| 401 / 403 errors | JWT expired or invalid, or public key not published for your bookmaker. |
| Player names missing on player markets | Squad data unavailable for that match; offering may still load without player labels. |
See also Custom Bet troubleshooting.
| Topic | UOF Proxy (uofProxy) — deprecated | Data Adapter (custom) — deprecated | Stock (stock) — recommended |
|---|---|---|---|
| Client implements UOF HTTP/proxy | Yes — five UOF callbacks plus addToBetSlip in dataProviderConfig | No | No |
| Client builds offering / calculation payloads | No (UOF XML forwarded) | Yes — getOffering / calculate | No |
| Custom bet API traffic | Your infrastructure forwards UOF XML | Your backend or services supply JSON | Widget calls Sportradar directly |
| Auth | Your UOF API key on the proxy | Your integration (no widget jwt) | jwt prop on the widget |
| Custom market layouts via client JSON | No (UOF-driven views) | Yes — Custom Views | No |