### Example: Calculate Goals Scored This Season Source: https://sports.bzzoiro.com/docs/v2 An example demonstrating how to fetch player stats for a season and then sum the goals client-side. Requires a season_id and a limit. ```HTTP // Goals scored this season GET /api/v2/players/5821/stats/?season_id=243&limit=200 // Then sum results[].goals client-side ``` -------------------------------- ### Get League/Season Venues with Filters Source: https://sports.bzzoiro.com/docs/v2 Fetches venues for a specific league and season, with options to filter by host country, opening/final match hosting, and round. This example demonstrates filtering for the final round. ```curl curl -H "Authorization: Token $TOKEN" \ "https://sports.bzzoiro.com/api/v2/leagues/16/seasons/82/venues/?round=F" ``` -------------------------------- ### HTML Examples for Image Embedding Source: https://sports.bzzoiro.com/docs/static-data Examples demonstrating how to embed team logos, player portraits, and venue photos in HTML using the image proxy URLs. ```html home logo ``` ```html ``` ```html ``` -------------------------------- ### Get Predicted Lineup Source: https://sports.bzzoiro.com/docs Returns AI-predicted starting lineups for upcoming matches, including starters, substitutes, and unavailable players. This feature is in beta and only available for matches not yet played. ```APIDOC ## GET /api/predicted-lineup// BETA ### Description Returns AI-predicted starting lineups for upcoming matches — predicted starters, substitutes, and unavailable players for each team. Only available for matches that have not yet been played. **Note:** Lineups are generated periodically and may not be available for every match. Returns `404` if not yet generated or event not found. ### Method GET ### Endpoint /api/predicted-lineup/{event_id}/ #### Path Parameters - **event_id** (integer) - Required - Event ID (`id` from `/api/events/`). ### Request Example ```bash curl -H "Authorization: Token YOUR_API_KEY" \ https://sports.bzzoiro.com/api/predicted-lineup/42567/ ``` ### Response #### Success Response (200) - **event** (object) - Match context: `id`, `home_team`, `away_team`, `date`, `league`, `status`. - **beta** (boolean) - Always `true` — feature is in beta. - **lineups.home** (object) / **lineups.away** (object) - **team** (string) - Team name. - **predicted_formation** (string | null) - Predicted formation (e.g. "4-3-3"). - **confidence** (float | null) - Lineup confidence score (0–1). - **starters** (array) - Predicted starting XI — each item: `{name, position, jersey_number, ai_score}`. - **substitutes** (array) - Predicted bench players — same structure as starters. - **unavailable** (array) - Injured or suspended players — each item: `{name, reason}`. - **updated_at** (datetime) - When the lineup prediction was last updated (ISO 8601). ### Response Example ```json { "event": { "id": 42567, "home_team": "Barcelona", "away_team": "Real Madrid", "date": "2026-04-20T19:00:00+00:00", "league": "La Liga", "status": "notstarted" }, "beta": true, "lineups": { "home": { "team": "Barcelona", "predicted_formation": "4-3-3", "confidence": 0.74, "starters": [ {"name": "I. Pena", "position": "G", "jersey_number": 13, "ai_score": 0.91}, {"name": "L. Yamal", "position": "F", "jersey_number": 19, "ai_score": 0.88}, ... ], "substitutes": [...], "unavailable": [ {"name": "R. Araujo", "reason": "Muscle Injury"} ], "updated_at": "2026-04-19T06:00:00+00:00" }, "away": { ... } } } ``` ``` -------------------------------- ### Polymarket Prediction Markets Response Example Source: https://sports.bzzoiro.com/docs Example JSON response for Polymarket prediction markets, including event details and odds for various markets like 1x2, over/under, and goalscorers. ```json { "count": 23, "results": [ { "event_id": 325, "home_team": "Brentford", "away_team": "Fulham", "event_date": "2026-04-18T11:30:00Z", "league": "Premier League", "league_id": 1, "odds": { "1x2": {"home": 0.465, "draw": 0.255, "away": 0.275}, "over_under": {"over_25": 0.555, "under_25": 0.445, ...}, "btts": {"yes": 0.58, "no": 0.42}, "halftime": {"home": 0.355, "draw": 0.405, "away": 0.225}, "handicap": {"home_-1.5": 0.23, "away_-1.5": 0.115, ...} }, "exact_scores": {"1-0": 0.095, "0-0": 0.08, ...}, "goalscorers": {"B. Mbeumo": 0.42, "R. Jimenez": 0.31, ...}, "updated_at": "2026-04-14T18:00:13Z" } ] } ``` -------------------------------- ### Raw Odds Response Example Source: https://sports.bzzoiro.com/docs Example JSON response for the raw odds list endpoint, showing event details and odds for each market outcome. ```json { "event": { "id": 997, "home_team": "Osasuna", "away_team": "Real Betis", "event_date": "2026-04-12T12:00:00Z", "league": "La Liga" }, "count": 36, "odds": [ { "id": 51713, "market": "1x2", "outcome": "HOME", "outcome_name": "Osasuna", "bookmaker": "Pinnacle", "bookmaker_code": "pinnacle", "decimal_odds": 2.11, "previous_decimal_odds": 2.18, "is_max_quote": false, "implied_probability": 0.4739, "movement": "SHORTENING", "updated_at": "2026-04-12T09:00:00Z" }, ... ] } ``` -------------------------------- ### Predicted Lineup Response Example Source: https://sports.bzzoiro.com/docs Example JSON response for the predicted lineup endpoint, including event details and predicted team formations, starters, substitutes, and unavailable players. ```json { "event": { "id": 42567, "home_team": "Barcelona", "away_team": "Real Madrid", "date": "2026-04-20T19:00:00+00:00", "league": "La Liga", "status": "notstarted" }, "beta": true, "lineups": { "home": { "team": "Barcelona", "predicted_formation": "4-3-3", "confidence": 0.74, "starters": [ {"name": "I. Pena", "position": "G", "jersey_number": 13, "ai_score": 0.91}, {"name": "L. Yamal", "position": "F", "jersey_number": 19, "ai_score": 0.88}, ... ], "substitutes": [...], "unavailable": [ {"name": "R. Araujo", "reason": "Muscle Injury"} ], "updated_at": "2026-04-19T06:00:00+00:00" }, "away": { ... } } } ``` -------------------------------- ### GET /api/fixtures/ and GET /api/matches/ Source: https://sports.bzzoiro.com/docs Aliases for GET /api/events/. These endpoints return the same match data and accept identical query parameters as the /api/events/ endpoint. ```APIDOC ## GET /api/fixtures/ and GET /api/matches/ ### Description These endpoints are aliases for `GET /api/events/`. They return the same match data and accept all the same query parameters. ### Method GET ### Endpoint /api/fixtures/ /api/matches/ ### Parameters All query parameters, response fields, filtering, and pagination behavior are identical to `GET /api/events/`. See the Events section for full documentation and field reference. ### Request Example ``` curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/api/fixtures/?date_from=2026-04-20&league=1" curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/api/matches/?date_from=2026-04-20&league=1" ``` ``` -------------------------------- ### Referee Data Example Source: https://sports.bzzoiro.com/docs Example JSON response structure for the referees endpoint, showing referee statistics and career data. ```json { "count": 682, "results": [ { "name": "Anthony Taylor", "country": "England", "matches": 38, "total_yellow_cards": 156, "total_red_cards": 8, "avg_yellow_per_match": 4.11, "avg_red_per_match": 0.21, "avg_goals_per_match": 2.87, "avg_fouls_per_match": 21.4, "career_games": 320, "career_yellow_cards": 1240, "career_red_cards": 62 }, ... ] } ``` -------------------------------- ### GET /api/broadcasts/ Source: https://sports.bzzoiro.com/docs Fetches event-to-channel broadcast mappings, indicating which licensed TV channel shows which match, in which country, and at what scheduled start time. Refreshed daily. ```APIDOC ## GET /api/broadcasts/ ### Description Event-to-channel broadcast mappings — which licensed TV channel shows which match, in which country, and at what scheduled start time. Refreshed daily from the official rights-holder schedules. ### Method GET ### Endpoint /api/broadcasts/ ### Parameters #### Query Parameters - **event** (integer) - Optional - Filter by event ID - **country** (string) - Optional - ISO-2 country code (e.g. `PT`, `ES`, `GB`) - **channel** (integer) - Optional - Filter by internal channel `id` (from `/api/tv-channels/`) - **league** (integer) - Optional - Filter by league ID (of the event) - **date_from** (string) - Optional - Event date >= YYYY-MM-DD - **date_to** (string) - Optional - Event date <= YYYY-MM-DD ### Response #### Success Response (200) - **id** (integer) - Broadcast mapping ID - **event_id** (integer) - Event ID - **home_team** (string) - Home team name - **away_team** (string) - Away team name - **league** (string) - League name - **event_date** (datetime) - Event kickoff time (ISO 8601) - **country_code** (string) - ISO-2 country where the broadcast applies - **channel_id** (integer) - Upstream channel ID - **channel_name** (string) - Channel name (e.g. `"Sport TV1"`) - **channel_link** (string) - Official channel link / affiliate URL - **scheduled_start_time** (datetime) - Broadcast start time as published by the rights-holder (may differ from `event_date` on delayed coverage) ### Request Example ```curl curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/api/broadcasts/?country=PT&date_from=2026-04-25&date_to=2026-04-27" ``` ``` -------------------------------- ### Player Stats Response Example Source: https://sports.bzzoiro.com/docs This is an example of the JSON response structure for player statistics. It includes event and player details along with various performance metrics. ```json { "count": 31, "results": [ { "event": { "id": 3746, "home_team": "Swansea City", "away_team": "Sheffield Wednesday", "event_date": "2026-02-08T12:00:00Z", "home_score": 4, "away_score": 0 }, "player": { "id": 548194, "name": "Dan Fry", "short_name": "D. Fry", "position": "D", "team": "Swansea City" }, "minutes_played": 90, "rating": 7.8, "goals": 1, "goal_assist": 1, "expected_goals": 0.85, "expected_assists": 0.32, "total_shots": 3, "shots_on_target": 2, "total_pass": 41, "accurate_pass": 32, "key_pass": 2, "touches": 56, "duel_won": 4, "duel_lost": 2, "total_tackle": 1, "won_tackle": 1, "yellow_card": 0, "red_card": 0, "saves": 0, "goals_conceded": 0, ... } ] } ``` -------------------------------- ### Aggregated Odds Response Example Source: https://sports.bzzoiro.com/docs Example JSON response for the aggregated odds view, detailing best odds and bookmaker-specific odds for each market. ```json { "event_id": 997, "home_team": "Osasuna", "away_team": "Real Betis", "event_date": "2026-04-12T12:00:00Z", "league": "La Liga", "bookmakers_count": 12, "total_odds": 36, "markets": { "1x2": { "Osasuna": { "best_odds": 2.20, "best_bookmaker": "Interwetten", "ai_probability": null, "bookmakers": { "Pinnacle": {"decimal": 2.11, "movement": "SHORTENING"}, "Bet365": {"decimal": 2.10, "movement": "SHORTENING"}, "Bwin": {"decimal": 2.20, "movement": "SHORTENING"} } }, "Draw": {"best_odds": 3.6, "best_bookmaker": "Unibet", "bookmakers": {"...": "..."}}, "Real Betis": {"best_odds": 3.62, "best_bookmaker": "Pinnacle", "bookmakers": {"...": "..."}} } } } ``` -------------------------------- ### Ratio Shape Example Source: https://sports.bzzoiro.com/docs/v2 Illustrates the structure for ratio-based statistics, including successful attempts, total attempts, and the rounded percentage. ```json { "value": 2, // successful "total": 14, // attempts "pct": 14 // rounded percentage } ``` -------------------------------- ### GET /api/live/ Source: https://sports.bzzoiro.com/docs Retrieves live scores for ongoing football matches. Returns an empty list if no matches are currently being played. The `incidents` and `live_stats` fields might be null for newly started matches. ```APIDOC ## GET /api/live/ ### Description Retrieves live scores for ongoing football matches. Returns an empty list if no matches are currently being played. The `incidents` and `live_stats` fields might be null for newly started matches. ### Method GET ### Endpoint /api/live/ ### Response #### Success Response (200) - **count** (integer) - The total number of live matches. - **results** (array) - A list of live match objects. - **id** (integer) - The unique identifier for the match. - **home_team** (string) - The name of the home team. - **away_team** (string) - The name of the away team. - **home_score** (integer) - The current score for the home team. - **away_score** (integer) - The current score for the away team. - **current_minute** (integer) - The current minute of the match. - **period** (string) - The current period of the match (e.g., "1T", "2T"). - **status** (string) - The current status of the match (e.g., "1st_half", "2nd_half"). - **incidents** (array) - A list of incidents that occurred during the match (e.g., goals, cards, substitutions). - **type** (string) - The type of incident. - **minute** (integer) - The minute the incident occurred. - **player_name** (string) - The name of the player involved. - **is_home** (boolean) - Whether the incident involved the home team. - **card_type** (string, optional) - The type of card issued (if applicable). - **player_in** (string, optional) - The name of the player substituted in. - **player_out** (string, optional) - The name of the player substituted out. - **player_in_id** (integer, optional) - The ID of the player substituted in. - **player_out_id** (integer, optional) - The ID of the player substituted out. - **live_stats** (object) - Live statistics for the match. - **home** (object) - Home team statistics. - **ball_possession** (integer) - Ball possession percentage. - **total_shots** (integer) - Total shots taken. - **shots_on_target** (integer) - Shots on target. - **corner_kicks** (integer) - Number of corner kicks. - **away** (object) - Away team statistics. - **ball_possession** (integer) - Ball possession percentage. - **total_shots** (integer) - Total shots taken. - **shots_on_target** (integer) - Shots on target. - **corner_kicks** (integer) - Number of corner kicks. - **league** (object) - Information about the league. - **name** (string) - The name of the league. - **country** (string) - The country of the league. ### Request Example ```json { "count": 3, "results": [ { "id": 580, "home_team": "Liverpool", "away_team": "Arsenal", "home_score": 2, "away_score": 1, "current_minute": 67, "period": "2T", "status": "2nd_half", "incidents": [ {"type": "goal", "minute": 12, "player_name": "Salah", "is_home": true}, {"type": "goal", "minute": 34, "player_name": "Saka", "is_home": false}, {"type": "card", "minute": 50, "player_name": "White", "card_type": "yellow", "is_home": false}, {"type": "substitution", "minute": 60, "player_in": "Diaz", "player_out": "Nunez", "player_in_id": 982119, "player_out_id": 930829, "is_home": true} ], "live_stats": { "home": {"ball_possession": 52, "total_shots": 14, "shots_on_target": 6, "corner_kicks": 5}, "away": {"ball_possession": 48, "total_shots": 10, "shots_on_target": 4, "corner_kicks": 3} }, "league": {"name": "Premier League", "country": "England"} } ] } ``` ``` -------------------------------- ### Get Player Detail Source: https://sports.bzzoiro.com/docs/v2 Retrieves details for a single player. ```APIDOC ## GET /api/v2/players/{id}/ ### Description Retrieves details for a single player. The response shape is the same as a list item from the `/api/v2/players/` endpoint. ### Method GET ### Endpoint /api/v2/players/{id}/ ``` -------------------------------- ### GET /api/leagues/ Source: https://sports.bzzoiro.com/docs Returns all active leagues and tournaments. This endpoint is cached for 5 minutes and does not require any parameters. ```APIDOC ## GET /api/leagues/ ### Description Returns all active leagues/tournaments. Cached for 5 minutes. ### Method GET ### Endpoint /api/leagues/ ### Parameters None. ### Response #### Success Response (200) - **id** (integer) - Internal league ID - **name** (string) - League name (e.g. "Premier League") - **country** (string) - Country (e.g. "England") - **is_women** (boolean) - True if this is a women's competition - **current_season** (object | null) - Current season details: `{id, name, year, start_date, end_date}`. Null if no season is marked as current. ### Response Example { "example": "{\"id\": 1, \"name\": \"World Cup\", \"country\": \"International\", \"is_women\": false, \"current_season\": {\"id\": 10, \"name\": \"2026\", \"year\": 2026, \"start_date\": \"2026-06-01\", \"end_date\": \"2026-07-19\"}}" ``` -------------------------------- ### GET /api/managers/ Source: https://sports.bzzoiro.com/docs Retrieves head coaches and managers with their tactical fingerprint and aggregated match statistics. ```APIDOC ## GET /api/managers/ ### Description Retrieves head coaches and managers with their tactical fingerprint and aggregated match statistics. Each manager's style is derived from their actual match data (possession, pass completion, long-ball %, cross rate, pressing proxy, opponent pass disruption, defensive line height, set-piece goal share, shot efficiency, score variance) — no hand-mapped labels — and scored against 30 tactical styles across 6 categories. Requires ≥5 matches with complete stats to surface `tactical_styles`, `pressing_intensity`, and `defensive_line`. Use `?team_id=` to fetch the manager for a specific team. ### Method GET ### Endpoint /api/managers/ ### Parameters #### Query Parameters - **team_id** (integer) - Optional - Filter by team ID to fetch the manager for a specific team. ### Request Example ``` curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/api/managers/" ``` ### Response #### Success Response (200) - **[manager_data]** (object) - An object where keys are manager IDs and values are manager details. - **tactical_styles** (object or null) - Derived tactical styles if enough data is available. - **pressing_intensity** (float or null) - Derived pressing intensity if enough data is available. - **defensive_line** (float or null) - Derived defensive line height if enough data is available. - **[other_aggregated_stats]** (various) - Other aggregated match statistics. #### Response Example (Response structure for managers is not fully detailed in the source, but would include manager details and potentially tactical fingerprints.) ``` -------------------------------- ### GET /api/odds/compare/ Source: https://sports.bzzoiro.com/docs Provides a side-by-side comparison for a single match, highlighting the best price per outcome. ```APIDOC ## GET /api/odds/compare/ ### Description Provides a side-by-side comparison for a single match, highlighting the best price per outcome. ### Method GET ### Endpoint /api/odds/compare/ ### Parameters #### Query Parameters - **event** (integer) - Required - The ID of the event for which to compare odds. ``` -------------------------------- ### Get Single Player Stat Record Source: https://sports.bzzoiro.com/docs Retrieves a single player stat record by its ID. This endpoint is detailed in the source text but lacks a specific path in the provided examples. ```APIDOC ## GET /api/player-stats/{id}/ ### Description Returns a single stat record for a player, identified by its unique ID. ### Method GET ### Endpoint /api/player-stats/{id}/ ### Parameters #### Path Parameters - **id** (integer) - Required - The unique identifier for the player stat record. ### Response #### Success Response (200) Returns a single player stat object with all the fields described in the `/api/player-stats/` endpoint response. ### Note The specific path for this endpoint is inferred from the detail provided in the source text. ``` -------------------------------- ### Goal Build-up Sequence Example Source: https://sports.bzzoiro.com/docs This JSON snippet shows the 'sequence' field within the 'incidents' array, detailing the full passing chain leading to a goal, including player actions and coordinates. ```json "incidents": [ { "type": "goal", "player": "D. Fry", "minute": 26, "is_home": true, "assist": "A. Browne", "home_score": 1, "away_score": 0, "sequence": [ {"player": "A. Morris", "event": "pass", "pos": {"x": 83.4, "y": 11.5}, "end": {"x": 82.3, "y": 20.7}}, {"player": "A. Browne", "event": "cross", "pos": {"x": 82.8, "y": 22.5}, "end": {"x": 96.1, "y": 54.2}, "assist": true}, {"player": "D. Fry", "event": "goal", "pos": {"x": 96.1, "y": 54.2}, "body": "head", "gm": {"y": 54.4, "z": 13.9}, "gk": {"x": 99.5, "y": 51.4}} ] } // ... other incidents (cards, subs, etc.) ] ``` -------------------------------- ### API Authentication Example Source: https://sports.bzzoiro.com/docs Include your API token in the Authorization header for authenticated requests. Unauthenticated requests will result in a 401 Unauthorized error. ```bash curl -H "Authorization: Token abc123def456" https://sports.bzzoiro.com/api/leagues/ ``` -------------------------------- ### WebSocket Subscription Examples Source: https://sports.bzzoiro.com/docs/websocket Demonstrates how to subscribe to and unsubscribe from real-time odds data via WebSocket. Supports both default consensus odds and specific bookmaker odds. ```javascript // Default (consensus) ws.send(JSON.stringify({ action: "subscribe", event_id: 205764 })); // Per-bookmaker — only Pinnacle quotes for this match ws.send(JSON.stringify({ action: "subscribe", event_id: 205764, bookmaker_slug: "pinnacle" })); // Stop the per-book stream (event/livedata stays) ws.send(JSON.stringify({ action: "unsubscribe", event_id: 205764, bookmaker_slug: "pinnacle" })); ``` -------------------------------- ### Live Events Query Source: https://sports.bzzoiro.com/docs/v2 Fetch a live, lightweight list of events within their active window. This endpoint is optimized for high-frequency polling and is cached. Query parameters like status and date are ignored; only league_id, season_id, and team_id are considered. ```bash curl -H "Authorization: Token $TOKEN" \ "https://sports.bzzoiro.com/api/v2/events/live/?league_id=49" ``` -------------------------------- ### Query Events by Date Source: https://sports.bzzoiro.com/docs/v2 Retrieve a list of events within a specified date range. Ensure your authorization token is set. ```bash curl -H "Authorization: Token $TOKEN" \ "https://sports.bzzoiro.com/api/v2/events/?date_from=2026-05-15&date_to=2026-05-15" ``` -------------------------------- ### Loading Static Images Source: https://sports.bzzoiro.com/docs/v2 Examples of how to embed static images for players, teams, and leagues directly into HTML using the provided image proxy endpoints. Ensure the correct IDs are used from the respective API endpoints. ```html Bukayo Saka Arsenal Premier League ``` -------------------------------- ### Live WebSocket Add-on Connection Source: https://sports.bzzoiro.com/docs/v2 Connect to the real-time push stream for live matches using this WebSocket URL. The add-on supports up to 10 concurrent matches per socket. ```websocket wss://sports.bzzoiro.com/ws/live/?token=YOUR_TOKEN ``` -------------------------------- ### GET /api/odds/bookmakers/ Source: https://sports.bzzoiro.com/docs Lists all bookmakers currently observed in the feed. ```APIDOC ## GET /api/odds/bookmakers/ ### Description Lists all bookmakers currently observed in the feed. ### Method GET ### Endpoint /api/odds/bookmakers/ ``` -------------------------------- ### GET /api/live/ Source: https://sports.bzzoiro.com/docs Fetches live data for matches currently in progress. This includes real-time scores, the current minute of the match, significant incidents (goals, cards, substitutions), and live statistics. The `full` query parameter can be used to include detailed spatial data. ```APIDOC ## GET /api/live/ ### Description Returns only matches currently in play with real-time scores, minute, incidents (goals, cards, substitutions) and live statistics. Cached for 30 seconds. ### Method GET ### Endpoint /api/live/ ### Parameters #### Query Parameters - **tz** (string) - Optional - Timezone for dates (e.g. `Europe/Warsaw`). See Timezone Support - **full** (boolean) - Optional - Set to `true` to include spatial data fields (`lineups`, `shotmap`, `momentum`, `average_positions`). Excluded by default for faster responses. Momentum and shotmap update in real time during the match. ### Response Fields #### Success Response (200) - **incidents** (array) - null - List of match incidents. Each item has `type` (`"goal"`, `"card"`, `"substitution"`), `minute`, `is_home`. Goals and cards also have `player_name`. Substitutions have `player_in` (substitute coming on) and `player_out` (player being replaced), plus `player_in_id` and `player_out_id`. - **live_stats** (object) - null - Live statistics with `home` and `away` sub-objects containing: `ball_possession`, `total_shots`, `shots_on_target`, `corner_kicks`, `fouls`, `yellow_cards`, `red_cards`, `offsides`, etc. - **home_xg_live** (float) - null - Home team total xG so far in the match (sum of per-shot xG from the live shotmap). Updates in real time alongside the shotmap. Returned by default — no `?full=true` needed — so xG-based live models don't have to fetch the full shotmap on every poll. - **away_xg_live** (float) - null - Away team total xG so far in the match (sum of per-shot xG from the live shotmap). Updates in real time. Returned by default. - **lineups** (array) - null - Team lineups with player positions. Each item: `{player_name, position, x, y, is_home}`. Requires `?full=true`. See Spatial Data. - **shotmap** (array) - null - All shots so far in the match with per-shot xG and pitch coordinates. Each item: `{min, type, sit, body, home, xg, xgot, pos, gm, gml, pid}`. Updates in real time. Requires `?full=true`. See Spatial Data. - **momentum** (array) - null - Minute-by-minute pressure index. Each item: `{m: minute (int), v: pressure (signed int)}`. Positive `v` = home dominance, negative = away. Updates every minute. Requires `?full=true`. See Spatial Data. - **xg_per_minute** (array) - null - Per-minute xG buckets aggregated from the live shotmap. Each item: `{m, xg_home, xg_away, cum_home, cum_away}`. Updates in real time. Requires `?full=true`. See Spatial Data. - **average_positions** (array) - null - Average pitch positions per player accumulated so far in the match. Requires `?full=true`. See Spatial Data. ### Request Example ```json { "tz": "Europe/London", "full": true } ``` ### Response Example ```json { "incidents": [ { "type": "goal", "minute": 15, "is_home": true, "player_name": "Striker" } ], "live_stats": { "home": { "ball_possession": 60, "total_shots": 10, "shots_on_target": 5, "corner_kicks": 3, "fouls": 5, "yellow_cards": 1, "red_cards": 0, "offsides": 2 }, "away": { "ball_possession": 40, "total_shots": 5, "shots_on_target": 2, "corner_kicks": 1, "fouls": 7, "yellow_cards": 2, "red_cards": 0, "offsides": 0 } }, "home_xg_live": 1.23, "away_xg_live": 0.45, "lineups": [ {"player_name": "Defender", "position": "DEF", "x": 70.5, "y": 30.1, "is_home": true} ], "shotmap": [ {"min": 10, "type": "open_play", "sit": "normal", "body": "right_foot", "home": true, "xg": 0.15, "xgot": 0.08, "pos": {"x": 85.2, "y": 40.5}, "gm": 1, "gml": 1, "pid": 12345} ], "momentum": [ {"m": 10, "v": 50}, {"m": 11, "v": -20} ], "xg_per_minute": [ {"m": 10, "xg_home": 0.15, "xg_away": 0.0, "cum_home": 0.15, "cum_away": 0.0} ], "average_positions": [ {"player": "Midfielder", "pid": 67890, "pos": {"x": 55.0, "y": 50.0}, "number": 8} ] } ``` ``` -------------------------------- ### Shotmap Data Example Source: https://sports.bzzoiro.com/docs This JSON snippet illustrates the structure of the 'shotmap' field, detailing per-shot expected goals (xG) with pitch coordinates for each shot in a match. ```json "shotmap": [ { "min": 26, "type": "goal", "sit": "corner", "body": "head", "home": true, "xg": 0.383, "xgot": 0.949, "pos": {"x": 3.9, "y": 45.8}, "gm": {"y": 54.4, "z": 13.9}, "gml": "low-left", "pid": 548194 }, { "min": 53, "type": "save", "sit": "open-play", "body": "right-foot", "home": false, "xg": 0.071, "xgot": 0.023, "pos": {"x": 18.2, "y": 31.4}, "gm": {"y": 45.1, "z": 8.2}, "gml": "centre", "pid": 219847 } // ... all shots in the match ] ``` -------------------------------- ### Get Single Manager Source: https://sports.bzzoiro.com/docs Retrieves details for a specific manager by their ID. ```APIDOC ## GET /api/managers/{id}/ ### Description Retrieves detailed information for a single manager identified by their unique ID. ### Method GET ### Endpoint /api/managers/{id}/ ### Parameters #### Path Parameters - **id** (integer) - Required - The unique identifier of the manager. ### Response #### Success Response (200) Returns a single manager object with detailed statistics (same fields as the list endpoint). ### Response Example ```json { "id": 128, "name": "Pep Guardiola", "short_name": "P. Guardiola", "country": "Spain", "current_team": {"id": 42, "name": "Manchester City"}, "preferred_formation": "4-3-3", "formations_used": {"4-3-3": 18, "4-2-3-1": 6, "3-2-4-1": 2}, "profile": "attacking", "team_style": "possession", "pressing_intensity": 0.51, "defensive_line": "high", "tactical_styles": [ {"rank": 1, "code": "positional", "name": "Positional Play", "category": "possession", "emoji": "\u265f", "description": "Zone occupation and overloads", "score": 0.112}, {"rank": 2, "code": "ball_dominant", "name": "Ball Dominant", "category": "possession", "emoji": "\u26bd", "description": "Keep the ball to control tempo and energy", "score": 0.109}, {"rank": 3, "code": "total_football", "name": "Total Football", "category": "possession", "emoji": "\ud83c\udf00", "description": "Fluid rotations, every player attacks and defends", "score": 0.099}, {"rank": 4, "code": "false_9", "name": "False 9 System", "category": "possession", "emoji": "\ud83c\udfa9", "description": "No fixed striker \u2014 central creator drops deep", "score": 0.088} ], "matches_total": 26, "wins": 18, "draws": 4, "losses": 4, "win_pct": 69.23, "avg_goals_scored": 2.31, "avg_goals_conceded": 0.96, "avg_goals_scored_1h": 1.04, "avg_goals_conceded_1h": 0.38, "avg_possession": 62.4, "avg_shots": 16.8, "avg_shots_on_target": 6.2, "avg_xg_for": 2.14, "avg_xg_against": 0.88, "avg_corners": 7.3, "avg_yellow_cards": 1.5, "avg_red_cards": 0.08, "avg_fouls": 9.4, "clean_sheet_pct": 46.15, "btts_pct": 38.46, "over_25_pct": 65.38, "over_15_pct": 88.46, "fail_to_score_pct": 7.69 } ``` ``` -------------------------------- ### Retrieve Fixtures by Date and League Source: https://sports.bzzoiro.com/docs Fetches fixtures for a given date range and league. This endpoint is an alias for `/api/events/` and accepts the same parameters. ```bash curl -H "Authorization: Token YOUR_API_KEY" \ "https://sports.bzzoiro.com/api/fixtures/?date_from=2026-04-20&league=1" ``` -------------------------------- ### GET /api/events/ Source: https://sports.bzzoiro.com/docs Retrieves a list of events with various filtering options. ```APIDOC ## GET /api/events/ ### Description Retrieves a list of events with various filtering options. ### Method GET ### Endpoint /api/events/ ### Parameters #### Query Parameters - **date_from** (date) - Optional - Start date (YYYY-MM-DD). If omitted (and no `date_to`), defaults to today. - **date_to** (date) - Optional - End date (YYYY-MM-DD). If omitted (and no `date_from`), defaults to today + 7 days. - **league** (integer) - Optional - Filter by league `id` (get IDs from `/api/leagues/`). - **season** (integer) - Optional - Filter by season `id` (get IDs from `/api/seasons/`). Bypasses the default 7-day window. E.g. `?season=42`. - **team** (string) - Optional - Filter by team name (case-insensitive, partial match). E.g. `?team=Madrid`. - **team_id** (integer) - Optional - Filter by team `id` (exact match, home or away). E.g. `?team_id=2932`. - **status** (string) - Optional - Filter by status (see values below). - **tz** (string) - Optional - Timezone for dates (e.g. `Europe/Warsaw`). See Timezone Support. - **full** (boolean) - Optional - Set to `true` to include spatial data fields (`lineups`, `shotmap`, `momentum`, `average_positions`). Excluded by default for faster responses. Also applies to `GET /api/events/{id}/`. ### Status values notstarted, inprogress, 1st_half, halftime, 2nd_half, finished, postponed, cancelled ``` -------------------------------- ### Get Prediction Detail Source: https://sports.bzzoiro.com/docs/v2 Retrieves the details of a specific prediction by its ID. ```APIDOC ## Prediction detail ### Description Retrieves the details of a specific prediction by its ID. The response shape is the same as a list item from the predictions list. ### Method GET ### Endpoint /api/v2/predictions/{id}/ ### Parameters #### Path Parameters - **id** (int) - Required - The ID of the prediction to retrieve. ``` -------------------------------- ### List Leagues Source: https://sports.bzzoiro.com/docs Retrieves a list of all available leagues. Requires an API key for authorization. ```bash curl -H "Authorization: Token YOUR_API_KEY" \ https://sports.bzzoiro.com/api/leagues/ ``` ```json { "count": 32, "next": null, "previous": null, "results": [ { "id": 1, "name": "Premier League", "country": "England", "is_women": false, "current_season": { "id": 42, "name": "Premier League 25/26", "year": 2025, "start_date": "2025-08-16", "end_date": "2026-05-24" } }, ... ] } ``` -------------------------------- ### Unavailable Lineup Response Source: https://sports.bzzoiro.com/docs/v2 Example of a response when lineup data is unavailable for an event. ```json { "event_id": 204851, "lineup_status": "unavailable", "beta": false, "lineups": null, "unavailable_players": null, "updated_at": null } ``` -------------------------------- ### GET /api/odds/polymarket/ Source: https://sports.bzzoiro.com/docs Retrieves Polymarket prediction market prices, represented as probabilities between 0 and 1. ```APIDOC ## GET /api/odds/polymarket/ ### Description Retrieves Polymarket prediction market prices, represented as probabilities between 0 and 1. ### Method GET ### Endpoint /api/odds/polymarket/ ```