Managers, referees & venues#
Managers#
GET /api/v2/managers/
| Param | Type | Description |
|---|---|---|
name |
string | Name search |
team_id |
int | Current club |
league_id |
int | Managers active in a league |
nationality_code |
string | ISO code |
tactical_profile |
string | Style classification filter |
team_style |
string | Team-style classification filter |
min_matches |
int | Minimum matches managed |
limit / offset |
int | Pagination |
GET /api/v2/managers/{id}/ # profile: preferred formation, style, record
GET /api/v2/managers/{id}/career/ # clubs managed, spells, win rates
GET /api/v2/managers/{id}/matches/ # match log — date_from/to, league_id, team_id, status
GET /api/v2/managers/{id}/social/ # curated media
curl -H "Authorization: Token YOUR_API_KEY" \
"https://sports.bzzoiro.com/api/v2/managers/?league_id=85&min_matches=50"
Every manager also has a profile page at /managers/, which renders exactly what these endpoints return and nothing else.
Career#
GET /api/v2/managers/{id}/career/ # cached 30 min
| Param | Type | Description |
|---|---|---|
window |
int | Matches either side of the appointment (default 10, max 38). 0 skips it |
One entry per spell, newest first, carrying the record at that club —
matches, wins, draws, losses, points, ppm, goals_for,
goals_against, goal_diff — plus home and away blocks in the same shape.
ppm is null, never 0.0, when there are no matches to judge. Zero means he
took no points; null means we have nothing to say about him.
A manager with two spells at the same club gets two entries, and matches are assigned by date rather than by badge, so the 2004 spell does not inherit the 2013 one's results.
appointment_effect#
The part that makes the rest readable. A manager on 1.8 points per match is having a good season or a bad one depending entirely on what the club was doing before he walked in, and that is not in his own record.
"appointment_effect": {
"window": 10,
"before": { "matches": 10, "points": 11, "ppm": 1.1 },
"after": { "matches": 10, "points": 21, "ppm": 2.1 },
"ppm_change": 1.0
}
before is the club's record in the matches immediately preceding the
appointment, under whoever was in charge. after is the same club over the same
number of matches from the appointment onwards, and it stops at the end of the
tenure — matches after his last day belong to his successor, and counting them
would turn a sacking into an improvement of his.
It is null when the tenure has no start date, or when one of the two sides has
no matches at all. A promoted club has no "before", and inventing a 0.0 there
would publish that its manager improved everything.
Referees#
GET /api/v2/referees/
| Param | Type | Description |
|---|---|---|
name |
string | Name search |
country_code |
string | ISO code |
league_id |
int | Referees active in a league |
min_matches |
int | Minimum matches officiated |
limit / offset |
int | Pagination |
GET /api/v2/referees/{id}/ # profile + per-match aggregates (cards, fouls, penalties)
GET /api/v2/referees/{id}/matches/ # match log — date_from/to, league_id, season_id, status
Referee aggregates (yellow/red cards per match) are the data behind
cards-market research. Note that cards markets are not currently quoted in
the odds feed — total_red_cards still answers, with historical rows only — so
today these aggregates are a research input rather than something to price
against. See Markets in the feed.
Venues#
GET /api/v2/venues/
| Param | Type | Description |
|---|---|---|
name |
string | Name search |
country_code |
string | ISO code |
city |
string | City filter |
min_capacity |
int | Minimum capacity |
team_id |
int | Home venue of a team |
limit / offset |
int | Pagination |
GET /api/v2/venues/{id}/ # capacity, city, coordinates, home team
GET /api/v2/venues/{id}/competitions/ # competitions hosted at this venue
Venue photos: /img/venue/{id}/ — see Working with images.