Expert picks for 25 football matches, every Friday
What the players with the best long-term record in a prediction game running since 1997 picked, published the moment their picks lock. JSON and MCP.
The short version. TipMaster Classic is a football prediction game that has run every week since 1997. Each round, hundreds of players pick home win, draw or away win on the same 25 real matches, and every match a player has ever played is on record. Of the players in the current round, everyone with at least 100 career matches is ranked by career points per match, and the top quarter forms the expert cohort: people who have predicted well for years, not for one lucky weekend.
At the Friday 18:00 Berlin deadline, when picks lock, this feed publishes how the expert cohort split on each of the 25 matches and its majority pick, with the whole crowd's split beside it. Free, no key, aggregates only. Call get_expert_picks over MCP at /api/agent/mcp, or GET /api/agent/v1/experts.
What you get
One round per Classic game (btm Bundesliga TipMaster, tmi TipMaster International), 25 matches each. Before the deadline released is false, expertPick and expert are null and expertSample is 0, while releaseUtc and criteria are already there; the crowd's split is live from the start.
{
"game": "btm",
"competition": "Classic ยท Bundesliga TipMaster",
"round": 7,
"deadlineUtc": 1790956800,
"released": true,
"releaseUtc": 1790956800,
"criteria": {
"ranking": "classic_career_points_per_match",
"minCareerMatches": 100,
"topFraction": 0.25,
"qualifiedTrainers": 212,
"cutoffPointsPerMatch": 1.62
},
"matches": [
{
"id": "classic:btm:7:1",
"home": "TOP Oss",
"away": "MVV Maastricht",
"kickoffUtc": 1791037800,
"status": "locked",
"result": null,
"expertPick": "home",
"expert": { "home": 0.792, "draw": 0.075, "away": 0.132 },
"expertSample": 53,
"crowd": { "home": 0.709, "draw": 0.054, "away": 0.236 },
"crowdSample": 296
}
]
}
Illustrative numbers. Shares are fractions of the sample and sum to one. Odds are never included; neither is anything about a single player.
| Field | Meaning |
|---|---|
expertPick | The expert cohort's majority: home, draw or away. null before the deadline, below 20 experts, or on a tie. |
expert / expertSample | How the expert cohort split, and how many experts picked the match. |
crowd / crowdSample | How every player in the round split. Comparing it with expert shows where the experienced players disagree with the crowd. |
criteria | The rule behind the cohort, how many players qualified this round, and the lowest career points per match inside the cohort. |
releaseUtc | Friday 18:00 Europe/Berlin before the round's first match, in unix seconds. |
status | open while picks can still change, locked once they cannot, then played (with result) or cancelled. |
Endpoints
| URL | Returns |
|---|---|
GET /api/agent/v1/experts?game= | The current round's 25 matches with the expert picks and the crowd (above). |
GET /api/agent/v1/consensus?mode=classic&status= | Full per-match records (outcome = crowd, expert = cohort with its criteria). |
GET /api/agent/v1/consensus/{id} | One match. |
GET /api/agent/v1/matches?mode=classic&status= | The matches without the prediction fields. |
GET /api/agent/v1/openapi.json | The OpenAPI 3.1 document. |
POST /api/agent/mcp | MCP server, Streamable HTTP, stateless. Tools: get_expert_picks, get_consensus, list_matches, get_crowd_record. |
Quick start
curl
curl -s "https://tipmaster.net/api/agent/v1/experts?game=btm" | jq '.rounds[0].matches[] | {home, away, expertPick, expert}'
Claude
Add a custom connector with the URL https://tipmaster.net/api/agent/mcp. No login step; the tools appear at once. Then ask, for example, "Where do TipMaster's experts disagree with the crowd this weekend?"
Any MCP client
{
"mcpServers": {
"tipmaster-consensus": { "url": "https://tipmaster.net/api/agent/mcp" }
}
}
Python
import requests
r = requests.get("https://tipmaster.net/api/agent/v1/experts", params={"game": "btm"})
for rnd in r.json()["rounds"]:
print(rnd["competition"], "round", rnd["round"], "released:", rnd["released"])
for m in rnd["matches"]:
print(f'{m["home"]} - {m["away"]}: experts {m["expertPick"]} {m["expert"]}, crowd {m["crowd"]}')
Rules of use
Open access, 60 requests per minute per IP address. Responses carry a 60 second cache header, so there is no point polling faster. Please link to https://tipmaster.net/agents/ wherever you show or cite the numbers; every record carries that URL in its source field. The feed is informational. It is not betting advice and it contains no odds. Use of the feed is subject to the feed terms of use.
Where the numbers come from
Classic players pick 25 matches a round before a Friday 18:00 Berlin deadline. Their picks are counted straight from the game's own tip files, so the crowd's split moves while the round is open, just as members see it inside the game. In a Classic match two players' picks decide the result, so a player's career points per match (3 for a win, 1 for a draw, every match since 1997, refreshed weekly) measures how well they have predicted over the years. The expert cohort is the top quarter of the round's players with at least 100 such matches. Their picks stay private until the deadline so nobody still playing can copy them.
FAQ
Is this betting advice?
No. TipMaster is a free prediction game with no stakes. The feed reports what its players predicted. It carries no odds, no bookmaker data and no recommendation.
Do I need an API key?
No. The feed is open. Each IP address may make 60 requests per minute, and responses can be cached for 60 seconds.
When are the expert picks published?
At the Friday 18:00 Europe/Berlin deadline of each round, when nobody can change a pick any more. The 25 matches and the whole crowd's split are visible from the start of the round.
Who are the experts?
Of the players in the current round, everyone with at least 100 career Classic matches is ranked by career points per match, and the top quarter is the expert cohort. Every response carries the rule, the number of players who qualified and the cohort's cut-off in criteria.
Why is outcome sometimes null?
Shares are withheld until at least 20 players have tipped the match. The sample count is always present so you can see how far off that is.
Can I see individual players' tips?
No. The feed publishes aggregates only. No user ids, names or single tips leave the system.
How should I credit the data?
Link to https://tipmaster.net/agents/ wherever you show or cite the numbers. Every record carries that URL in its source field.
