← champagnemeter.nl

Champagne Meter API

No token required. Public & read-only. Rate limit: 60 req/min per IP. CORS open.

GET /api/ranking

GET https://champagnemeter.nl/api/ranking

All 48 WK 2026 nations sorted by champagne bottles descending, with Sportmonks team ID and FIFA points.

curl https://champagnemeter.nl/api/ranking

Response

{
  "updatedAt": "2026-05-14T05:46:39.297Z",
  "clubShortCodes": { "Manchester United": "MUN", "Borussia Dortmund": "BVB", "Real Madrid": "RMA", "...": "..." },
  "ranking": [
    {
      "rank": 1,
      "iso3": "ESP",
      "sportmonksId": 18556,
      "name": "Spanje",
      "nameEn": "Spain",
      "flag": "🇪🇸",
      "bottles": 11,
      "fifaRanking": 1876,
      "players": [
        { "name": "Dani Olmo", "club": "FC Barcelona", "title": "La Liga", "type": "league" }
      ]
    }
  ]
}

clubShortCodes — map of club full name → Sportmonks short_code (e.g. "Borussia Dortmund" → "BVB"). Covers ~90 top clubs indexed for squad lookup.


GET /api/simulate

GET https://champagnemeter.nl/api/simulate?weight=25

Simulate the full WK 2026 tournament. Returns groups, full bracket, fixture metadata, and final standings. Each call is independent and random — re-run for different results.

Parameter

weight — integer 0–100, default 25. Blend of champagne bottles vs. FIFA ranking. 0 = pure FIFA, 100 = pure champagne.
# Default (25% champagne weight)
curl https://champagnemeter.nl/api/simulate

# Pure champagne
curl https://champagnemeter.nl/api/simulate?weight=100

# POST with JSON body
curl -X POST https://champagnemeter.nl/api/simulate \
  -H "Content-Type: application/json" \
  -d '{"weight": 50}'

Response

{
  "weight": 25,
  "description": "Simulation based on 25% champagne bottles + 75% FIFA ranking",
  "champion":  { "iso3": "FRA", "sportmonksId": 18567, "nameEn": "France", "flag": "🇫🇷", "bottles": 9 },
  "runnerUp":  { "iso3": "ESP", "sportmonksId": 18556, "nameEn": "Spain",  "flag": "🇪🇸", "bottles": 11 },
  "third":     { "iso3": "BRA", "..." : "..." },
  "fourth":    { "iso3": "ARG", "..." : "..." },
  "groups": {
    "A": [ { "iso3": "MEX", "bottles": 2, "...": "..." } ],
    "...": "..."
  },
  "bracket": {
    "89": {
      "fixtureId": 19606967,
      "sportmonksFixtureId": 19606967,
      "stage": "Round of 16",
      "startDate": "2026-07-04",
      "startingAt": "2026-07-04 21:00:00",
      "startingAtTimestamp": 1783198800,
      "timezone": "Europe/Amsterdam",
      "venueId": 11556,
      "homeSlot": "W74",
      "awaySlot": "W77",
      "home": { "iso3": "..." },
      "away": { "iso3": "..." },
      "winner": { "iso3": "..." }
    },
    "104": {
      "fixtureId": 19606975,
      "sportmonksFixtureId": 19606975,
      "stage": "Final",
      "startDate": "2026-07-19",
      "startingAt": "2026-07-19 19:00:00",
      "startingAtTimestamp": 1784487600,
      "timezone": "Europe/Amsterdam",
      "venueId": 21826,
      "home": { "...": "..." },
      "away": { "...": "..." },
      "winner": { "...": "..." }
    }
  }
}

Bracket match IDs

RoundMatch IDs
Round of 3273–88
Round of 1689–96
Quarter-finals97–100
Semi-finals101–102
3rd place103
Final104

description is a human-readable summary of the simulation weighting, e.g. "Simulation based on 25% champagne bottles + 75% FIFA ranking".

homeSlot / awaySlot — bracket slot labels, always present. Format: "1A" (group winner), "2B" (runner-up), "3ABCDF" (best third-place), "W73" (winner of match 73), "L101" (loser of match 101). Use these as placeholders when home/away resolve to null.

fixtureNumber is the bracket slot number (73–104), matching the object key. fixtureId and sportmonksFixtureId are the Sportmonks fixture IDs. startingAt is in Europe/Amsterdam (CEST, UTC+2); startingAtTimestamp is the UTC Unix timestamp in seconds.

Elo-style formula: p = 1 / (1 + 10^((rb−ra)/400)), blending FIFA points and champagne count.