Growing Discord community — direct access to the developer, live coverage & picks. Join now →
0
Bug Resolved May 02, 2026 · duodock

[ V2 ] - Missing some predictable types

In API v2, the format was updated to remove values like "x/z (pct%)". However, some fields are still not following this standard. For example: API: https://sports.bzzoiro.com/api/v2/events/9822/stats/ At the end, I included the full endpoint response. If you check stats -> away, the following fields are still using the old format: crosses aerial_duels final_third_phase ground_duels long_balls These fields are still returned as strings like "x/y (z%)" instead of being split into structured numeric values. response return: ```json { "event_id": 9822, "stats": { "home": { "duels": 51, "fouls": 5, "passes": 159, "crosses": "3/6 (50%)", "tackles": 13, "dribbles": "3/6 (50%)", "offsides": 0, "throw_ins": 20, "clearances": 24, "free_kicks": 7, "goal_kicks": 14, "long_balls": "28/79 (35%)", "recoveries": 44, "big_chances": 0, "tackles_won": 77, "total_saves": 3, "total_shots": 10, "aerial_duels": "8/15 (53%)", "corner_kicks": 0, "dispossessed": 5, "ground_duels": "22/44 (50%)", "hit_woodwork": 0, "yellow_cards": 3, "blocked_shots": 0, "interceptions": 11, "total_tackles": 13, "accurate_passes": 76, "ball_possession": 24, "shots_on_target": 5, "goalkeeper_saves": 3, "shots_inside_box": 5, "shots_off_target": 5, "final_third_phase": "26/62 (42%)", "shots_outside_box": 5, "big_chances_missed": 0, "final_third_entries": 50, "errors_lead_to_a_goal": 0, "fouled_in_final_third": 1, "touches_in_penalty_area": 10, "attack": 63, "ball_safe": 82, "dangerous_attack": 37, "attack_pct": 17, "ball_safe_pct": 65, "dangerous_attack_pct": 18, "pass_accuracy_pct": 47.8, "xg": { "actual": null } }, "away": { "duels": 49, "fouls": 7, "passes": 478, "crosses": "6/28 (21%)", "tackles": 8, "dribbles": "9/21 (43%)", "offsides": 2, "throw_ins": 29, "clearances": 17, "free_kicks": 5, "goal_kicks": 9, "long_balls": "21/37 (57%)", "recoveries": 53, "big_chances": 3, "tackles_won": 75, "total_saves": 1, "total_shots": 14, "aerial_duels": "7/15 (47%)", "corner_kicks": 6, "dispossessed": 1, "ground_duels": "22/44 (50%)", "hit_woodwork": 1, "yellow_cards": 1, "blocked_shots": 3, "interceptions": 5, "total_tackles": 8, "accurate_passes": 396, "ball_possession": 76, "shots_on_target": 4, "goalkeeper_saves": 1, "shots_inside_box": 11, "shots_off_target": 7, "final_third_phase": "99/151 (66%)", "shots_outside_box": 3, "big_chances_missed": 3, "final_third_entries": 74, "errors_lead_to_a_goal": 1, "fouled_in_final_third": 1, "touches_in_penalty_area": 34, "attack": 118, "ball_safe": 89, "dangerous_attack": 71, "attack_pct": 28, "ball_safe_pct": 47, "dangerous_attack_pct": 25, "pass_accuracy_pct": 82.8, "xg": { "actual": null } }, "first_half": { "home": { "duels": 63, "fouls": 2, "passes": 85, "crosses": "3/5 (60%)", "tackles": 5, "dribbles": "3/4 (75%)", "offsides": 0, "throw_ins": 9, "clearances": 17, "free_kicks": 6, "goal_kicks": 4, "long_balls": "16/37 (43%)", "recoveries": 19, "big_chances": 0, "tackles_won": 80, "total_saves": 3, "total_shots": 6, "aerial_duels": "5/8 (63%)", "corner_kicks": 0, "dispossessed": 3, "ground_duels": "14/22 (64%)", "hit_woodwork": 0, "yellow_cards": 0, "blocked_shots": 0, "interceptions": 5, "total_tackles": 5, "accurate_passes": 43, "ball_possession": 25, "shots_on_target": 3, "goalkeeper_saves": 3, "shots_inside_box": 4, "shots_off_target": 3, "shots_outside_box": 2, "big_chances_missed": 0, "final_third_entries": 29, "fouled_in_final_third": 1, "pass_accuracy_pct": 50.6, "xg": { "actual": null } }, "away": { "duels": 37, "fouls": 6, "passes": 263, "crosses": "3/10 (30%)", "tackles": 4, "dribbles": "2/7 (29%)", "offsides": 1, "throw_ins": 14, "clearances": 9, "free_kicks": 2, "goal_kicks": 5, "long_balls": "8/19 (42%)", "recoveries": 24, "big_chances": 3, "tackles_won": 75, "total_saves": 1, "total_shots": 9, "aerial_duels": "3/8 (38%)", "corner_kicks": 2, "dispossessed": 0, "ground_duels": "8/22 (36%)", "hit_woodwork": 0, "yellow_cards": 1, "blocked_shots": 2, "interceptions": 4, "total_tackles": 4, "accurate_passes": 218, "ball_possession": 75, "shots_on_target": 4, "goalkeeper_saves": 1, "shots_inside_box": 7, "shots_off_target": 3, "shots_outside_box": 2, "big_chances_missed": 3, "final_third_entries": 39, "fouled_in_final_third": 0, "pass_accuracy_pct": 82.9, "xg": { "actual": null } } }, "second_half": { "home": { "duels": 38, "fouls": 3, "passes": 74, "crosses": "0/1 (0%)", "tackles": 8, "dribbles": "0/2 (0%)", "offsides": 0, "throw_ins": 11, "clearances": 7, "free_kicks": 1, "goal_kicks": 10, "long_balls": "12/42 (29%)", "recoveries": 25, "big_chances": 0, "tackles_won": 75, "total_saves": 1, "total_shots": 4, "aerial_duels": "3/7 (43%)", "corner_kicks": 0, "dispossessed": 2, "ground_duels": "8/22 (36%)", "hit_woodwork": 0, "yellow_cards": 3, "blocked_shots": 0, "interceptions": 6, "total_tackles": 8, "accurate_passes": 33, "ball_possession": 24, "shots_on_target": 2, "goalkeeper_saves": 1, "shots_inside_box": 1, "shots_off_target": 2, "shots_outside_box": 3, "big_chances_missed": 0, "final_third_entries": 21, "fouled_in_final_third": 1, "pass_accuracy_pct": 44.6, "xg": { "actual": null } }, "away": { "duels": 62, "fouls": 1, "passes": 215, "crosses": "3/18 (17%)", "tackles": 4, "dribbles": "7/14 (50%)", "offsides": 1, "throw_ins": 15, "clearances": 8, "free_kicks": 3, "goal_kicks": 4, "long_balls": "13/18 (72%)", "recoveries": 29, "big_chances": 0, "tackles_won": 75, "total_saves": 0, "total_shots": 5, "aerial_duels": "4/7 (57%)", "corner_kicks": 4, "dispossessed": 1, "ground_duels": "14/22 (64%)", "hit_woodwork": 1, "yellow_cards": 0, "blocked_shots": 1, "interceptions": 1, "total_tackles": 4, "accurate_passes": 178, "ball_possession": 76, "shots_on_target": 1, "goalkeeper_saves": 0, "shots_inside_box": 4, "shots_off_target": 4, "shots_outside_box": 1, "big_chances_missed": 0, "final_third_entries": 35, "fouled_in_final_third": 1, "pass_accuracy_pct": 82.8, "xg": { "actual": null } } } }, "shotmap": [ { "gm": { "x": 0, "y": 42.4, "z": 16.7 }, "xg": null, "gml": "close-right", "min": 90, "pid": 1407661, "pos": { "x": 30.6, "y": 78.7, "z": 0 }, "sit": "regular", "body": "right-foot", "home": true, "type": "miss", "xgot": null, "block": { "x": 11.2, "y": 61.2, "z": 0 } }, { "gm": { "x": 0, "y": 43.2, "z": 65.3 }, "xg": null, "gml": "high-right", "min": 89, "pid": 1462388, "pos": { "x": 12.5, "y": 39.7, "z": 0 }, "sit": "set-piece", "body": "right-foot", "home": false, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 42.4, "z": 27.8 }, "xg": null, "gml": "close-right", "min": 80, "pid": 1139614, "pos": { "x": 7.9, "y": 61.8, "z": 0 }, "sit": "assisted", "body": "head", "home": false, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 51.2, "z": 19 }, "xg": null, "gml": "low-centre", "min": 70, "pid": 1139614, "pos": { "x": 32.6, "y": 48.7, "z": 0 }, "sit": "assisted", "body": "left-foot", "home": false, "type": "block", "xgot": null, "block": { "x": 23.4, "y": 48.7, "z": 0 } }, { "gm": { "x": 0, "y": 49, "z": 41.1 }, "xg": null, "gml": "high", "min": 60, "pid": 1105180, "pos": { "x": 3.9, "y": 49, "z": 0 }, "sit": "corner", "body": "head", "home": false, "type": "post", "xgot": null }, { "gm": { "x": 0, "y": 42.4, "z": 1.4 }, "xg": null, "gml": "close-right", "min": 57, "pid": 1462388, "pos": { "x": 3.3, "y": 56.3, "z": 0 }, "sit": "regular", "body": "right-foot", "home": false, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 53.6, "z": 1.9 }, "xg": null, "gml": "low-left", "min": 52, "pid": 1008795, "pos": { "x": 11.4, "y": 48.3, "z": 0 }, "sit": "assisted", "body": "right-foot", "home": true, "type": "goal", "xgot": null, "gtype": "regular" }, { "gm": { "x": 0, "y": 56.6, "z": 2.8 }, "xg": null, "gml": "close-left", "min": 50, "pid": 1008795, "pos": { "x": 20.7, "y": 25, "z": 0 }, "sit": "throw-in-set-piece", "body": "right-foot", "home": true, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 40.7, "z": 50 }, "xg": null, "gml": "high-right", "min": 45, "pid": 2234546, "pos": { "x": 24.3, "y": 36.4, "z": 0 }, "sit": "regular", "body": "left-foot", "home": true, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 57.6, "z": 11.1 }, "xg": null, "gml": "close-left", "min": 42, "pid": 1008795, "pos": { "x": 12, "y": 48.7, "z": 0 }, "sit": "set-piece", "body": "head", "home": true, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 51.3, "z": 59.7 }, "xg": null, "gml": "close-high", "min": 33, "pid": 1008795, "pos": { "x": 13.2, "y": 47.2, "z": 0 }, "sit": "assisted", "body": "right-foot", "home": true, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 47.1, "z": 13.9 }, "xg": null, "gml": "low-right", "min": 30, "pid": 1105180, "pos": { "x": 2.1, "y": 47.8, "z": 0 }, "sit": "corner", "body": "other", "home": false, "type": "goal", "xgot": null, "gtype": "regular" }, { "gm": { "x": 0, "y": 49, "z": 19 }, "xg": null, "gml": "low-centre", "min": 29, "pid": 1008760, "pos": { "x": 5, "y": 56.5, "z": 0 }, "sit": "regular", "body": "right-foot", "home": false, "type": "block", "xgot": null, "block": { "x": 3.2, "y": 54.5, "z": 0 } }, { "gm": { "x": 0, "y": 49.4, "z": 11.4 }, "xg": null, "gml": "low-centre", "min": 29, "pid": 1008929, "pos": { "x": 8.3, "y": 45.5, "z": 0 }, "sit": "assisted", "body": "left-foot", "home": false, "type": "save", "xgot": null, "block": { "x": 2.8, "y": 49.3, "z": 0 } }, { "gm": { "x": 0, "y": 54.1, "z": 19 }, "xg": null, "gml": "low-left", "min": 27, "pid": 1139614, "pos": { "x": 13.6, "y": 32.8, "z": 0 }, "sit": "assisted", "body": "left-foot", "home": false, "type": "block", "xgot": null, "block": { "x": 9.4, "y": 36.8, "z": 0 } }, { "gm": { "x": 0, "y": 49.3, "z": 17.7 }, "xg": null, "gml": "low-centre", "min": 23, "pid": 1082677, "pos": { "x": 14.7, "y": 63.9, "z": 0 }, "sit": "fast-break", "body": "right-foot", "home": true, "type": "save", "xgot": null, "block": { "x": 3.3, "y": 54.2, "z": 0 } }, { "gm": { "x": 0, "y": 41, "z": 22.2 }, "xg": null, "gml": "close-right", "min": 21, "pid": 1008929, "pos": { "x": 9.2, "y": 44.5, "z": 0 }, "sit": "assisted", "body": "head", "home": false, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 57.5, "z": 59.7 }, "xg": null, "gml": "close-high-left", "min": 20, "pid": 1139614, "pos": { "x": 23.6, "y": 70.5, "z": 0 }, "sit": "assisted", "body": "left-foot", "home": false, "type": "miss", "xgot": null }, { "gm": { "x": 0, "y": 46.1, "z": 22.2 }, "xg": null, "gml": "high-right", "min": 19, "pid": 1139614, "pos": { "x": 9.4, "y": 49.6, "z": 0 }, "sit": "regular", "body": "left-foot", "home": false, "type": "save", "xgot": null, "block": { "x": 2, "y": 49.6, "z": 0 } }, { "gm": { "x": 0, "y": 79.7, "z": 8.3 }, "xg": null, "gml": "left", "min": 16, "pid": 1008760, "pos": { "x": 10.1, "y": 50.6, "z": 0 }, "sit": "assisted", "body": "head", "home": false, "type": "miss", "xgot": null, "block": { "x": 1.2, "y": 27.8, "z": 0 } }, { "gm": { "x": 0, "y": 50.1, "z": 15.2 }, "xg": null, "gml": "low-centre", "min": 14, "pid": 2234546, "pos": { "x": 9.9, "y": 61.7, "z": 0 }, "sit": "regular", "body": "other", "home": true, "type": "goal", "xgot": null, "gtype": "regular" }, { "gm": { "x": 0, "y": 52.5, "z": 5.1 }, "xg": null, "gml": "low-left", "min": 7, "pid": 1892645, "pos": { "x": 21.6, "y": 40.9, "z": 0 }, "sit": "throw-in-set-piece", "body": "left-foot", "home": false, "type": "save", "xgot": null, "block": { "x": 2, "y": 49.6, "z": 0 } }, { "gm": { "x": 0, "y": 54.6, "z": 3.8 }, "xg": null, "gml": "low-left", "min": 2, "pid": 1082677, "pos": { "x": 17.5, "y": 52.6, "z": 0 }, "sit": "fast-break", "body": "right-foot", "home": true, "type": "goal", "xgot": null, "gtype": "regular" } ], "momentum": [ { "m": 1, "v": -8 }, { "m": 2, "v": -13 }, { "m": 3, "v": 56 }, { "m": 4, "v": 6 }, { "m": 5, "v": -7 }, { "m": 6, "v": -8 }, { "m": 7, "v": -38 }, { "m": 8, "v": -20 }, { "m": 9, "v": -17 }, { "m": 10, "v": -4 }, { "m": 11, "v": -11 }, { "m": 12, "v": 16 }, { "m": 13, "v": 1 }, { "m": 14, "v": -7 }, { "m": 15, "v": -10 }, { "m": 16, "v": 34 }, { "m": 17, "v": -27 }, { "m": 18, "v": -7 }, { "m": 19, "v": -31 }, { "m": 20, "v": -42 }, { "m": 21, "v": -34 }, { "m": 22, "v": -54 }, { "m": 23, "v": -36 }, { "m": 24, "v": 32 }, { "m": 25, "v": 6 }, { "m": 26, "v": 18 }, { "m": 27, "v": -23 }, { "m": 28, "v": -20 }, { "m": 29, "v": -38 }, { "m": 30, "v": -100 }, { "m": 31, "v": -61 }, { "m": 32, "v": -41 }, { "m": 33, "v": -27 }, { "m": 34, "v": -14 }, { "m": 35, "v": -6 }, { "m": 36, "v": -7 }, { "m": 37, "v": -8 }, { "m": 38, "v": -8 }, { "m": 39, "v": -9 }, { "m": 40, "v": -9 }, { "m": 41, "v": -9 }, { "m": 42, "v": -5 }, { "m": 43, "v": 11 }, { "m": 44, "v": 25 }, { "m": 45, "v": 14 }, { "m": 45.5, "v": 19 }, { "m": 46, "v": -10 }, { "m": 47, "v": -15 }, { "m": 48, "v": -38 }, { "m": 49, "v": -57 }, { "m": 50, "v": -40 }, { "m": 51, "v": -11 }, { "m": 52, "v": -14 }, { "m": 53, "v": 21 }, { "m": 54, "v": -49 }, { "m": 55, "v": -29 }, { "m": 56, "v": 49 }, { "m": 57, "v": 13 }, { "m": 58, "v": -56 }, { "m": 59, "v": -32 }, { "m": 60, "v": -11 }, { "m": 61, "v": -74 }, { "m": 62, "v": -47 }, { "m": 63, "v": -37 }, { "m": 64, "v": -25 }, { "m": 65, "v": -20 }, { "m": 66, "v": -11 }, { "m": 67, "v": -10 }, { "m": 68, "v": -9 }, { "m": 69, "v": -14 }, { "m": 70, "v": -21 }, { "m": 71, "v": -24 }, { "m": 72, "v": -23 }, { "m": 73, "v": -21 }, { "m": 74, "v": -12 }, { "m": 75, "v": -20 }, { "m": 76, "v": -1 }, { "m": 77, "v": -10 }, { "m": 78, "v": -14 }, { "m": 79, "v": -16 }, { "m": 80, "v": -17 }, { "m": 81, "v": -48 }, { "m": 82, "v": -36 }, { "m": 83, "v": -21 }, { "m": 84, "v": -22 }, { "m": 85, "v": -13 }, { "m": 86, "v": 6 }, { "m": 87, "v": 5 }, { "m": 88, "v": -7 }, { "m": 89, "v": -37 }, { "m": 90, "v": -22 }, { "m": 90.5, "v": 31 } ], "average_positions": { "away": [ { "n": 46, "x": 10.5, "y": 51.8, "pid": 1398538, "pos": "G", "name": "R. Salvador" }, { "n": 33, "x": 73.7, "y": 32.7, "pid": 1159627, "pos": "M", "name": "O. Baradad" }, { "n": 7, "x": 47.1, "y": 46, "pid": 1008746, "pos": "M", "name": "A. T. Ricart" }, { "n": 17, "x": 48.9, "y": 39.1, "pid": 1082653, "pos": "M", "name": "M. Torrás" }, { "n": 10, "x": 71.4, "y": 53.2, "pid": 1462388, "pos": "F", "name": "A. d. Alamo" }, { "n": 7, "x": 74, "y": 38.6, "pid": 1121234, "pos": "F", "name": "P. Arana" }, { "n": 16, "x": 58.6, "y": 87, "pid": 1008730, "pos": "D", "name": "P. Perea" }, { "n": 43, "x": 46.8, "y": 34.7, "pid": 1920462, "pos": "D", "name": "A. Domenech" }, { "n": 119, "x": 45, "y": 63.9, "pid": 1088677, "pos": "D", "name": "J. G. Peiró" }, { "n": 57, "x": 57.7, "y": 11.4, "pid": 1005508, "pos": "D", "name": "D. Caracas" }, { "n": 52, "x": 66, "y": 41.6, "pid": 1139614, "pos": "M", "name": "N. García" }, { "n": 85, "x": 44.6, "y": 34.7, "pid": 1020879, "pos": "D", "name": "L. Ballesté" }, { "n": 46, "x": 64.9, "y": 71.1, "pid": 1008760, "pos": "M", "name": "C. Baudet" }, { "n": 85, "x": 54.2, "y": 47.5, "pid": 1008929, "pos": "M", "name": "A. C. Franco" }, { "n": 86, "x": 57.2, "y": 84.9, "pid": 1892645, "pos": "D", "name": "L. Vallejo" }, { "n": 42, "x": 80, "y": 60.9, "pid": 1105180, "pos": "F", "name": "P. Browne" } ], "home": [ { "n": 21, "x": 38.8, "y": 36.9, "pid": 1082676, "pos": "M", "name": "Estefa" }, { "n": 47, "x": 6.9, "y": 48.4, "pid": 1498391, "pos": "G", "name": "S. Belotto" }, { "n": 36, "x": 55.4, "y": 56.4, "pid": 1008795, "pos": "M", "name": "Y. R. Ramos" }, { "n": 35, "x": 37, "y": 54.6, "pid": 2234556, "pos": "M", "name": "A. Velázquez" }, { "n": 32, "x": 14.7, "y": 40.1, "pid": 1516254, "pos": "D", "name": "Y. Correa" }, { "n": 31, "x": 62.2, "y": 75.8, "pid": 2234546, "pos": "M", "name": "V. Montesinos" }, { "n": 26, "x": 36.9, "y": 80.9, "pid": 1462783, "pos": "F", "name": "A. Álvarez" }, { "n": 45, "x": 52.9, "y": 41.5, "pid": 1009047, "pos": "F", "name": "M. J. P. González" }, { "n": 32, "x": 51.7, "y": 21, "pid": 1082677, "pos": "M", "name": "B. Martínez" }, { "n": 5, "x": 44.9, "y": 37.8, "pid": 1407661, "pos": "M", "name": "E. J. Navarro" }, { "n": 19, "x": 17.6, "y": 61.4, "pid": 1187841, "pos": "D", "name": "J. Caravaca" }, { "n": 10, "x": 65.1, "y": 28, "pid": 1009134, "pos": "F", "name": "R. P. Saez" }, { "n": 3, "x": 53.4, "y": 36.9, "pid": 1601643, "pos": "D", "name": "A. Santamaría" }, { "n": 7, "x": 52.1, "y": 42.6, "pid": 1083809, "pos": "F", "name": "M. R. González" }, { "n": 5, "x": 25, "y": 78.1, "pid": 2234545, "pos": "F", "name": "P. Miñano" }, { "n": 44, "x": 25.8, "y": 13.1, "pid": 1462420, "pos": "D", "name": "A. Zumárraga" } ] }, "xg_per_minute": [] } ```

Resolution: The API v2 stats endpoint was returning some match statistics as raw text strings like "3/6 (50%)". This affected six fields: crosses, aerial duels, ground duels, long balls, final-third play, and dribbles. These fields now return a structured object with three numeric values: the successful count, the total attempts, and the success percentage. All other fields were already in the correct format and are unchanged. No action is needed on your end — just refresh any page or API request that uses these fields.
Comments (2)
Dora — BSD Support Admin AI May 02, 2026 19:57
Thank you for bringing this to our attention. We have noted the issue with the statistics fields and will look into it. Could you please provide a screenshot of the response so we can better understand the context? This will help us investigate more effectively.
Dora — BSD Support Admin AI May 02, 2026 20:33
The issue with the statistics fields has been resolved and is now live. Thank you for bringing this to our attention! If you have any further feedback, please let us know.