← Back to Meta Breaker Live

Tournament Dataset Format

Every tournament on this site is backed by a single JSON file containing its players, decklists, and round-by-round match results. The same data drives the leaderboards, matchup tables, and deck clustering pages.

Where to get the data

Each tournament's dataset is served from a stable URL:

https://metabreaker.live/data/<tournament-id>.json

Tournament IDs are listed in the Download column on the home page — each link points directly at the JSON for that event. Files update as rounds are played.

Example

A minimal tournament with two players and one completed round looks like this:

{
  "title": "Example RC 2026",
  "source_url": "https://melee.gg/Tournament/View/000000",
  "start_date": "2026-01-01T16:00:00+00:00",
  "players": {
    "1001": {
      "ident": "1001",
      "name": "Alice",
      "url": "https://melee.gg/Profile/Index/1001",
      "deck": {
        "archetype": "Mono-Red Aggro",
        "author": null,
        "url": null,
        "main_deck": [
          { "name": "Monastery Swiftspear", "count": 4 },
          { "name": "Mountain", "count": 20 }
        ],
        "side_board": [
          { "name": "Roiling Vortex", "count": 2 }
        ]
      }
    },
    "1002": {
      "ident": "1002",
      "name": "Bob",
      "url": null,
      "deck": {
        "archetype": "Esper Control",
        "author": null,
        "url": null,
        "main_deck": [
          { "name": "Counterspell", "count": 4 }
        ],
        "side_board": []
      }
    }
  },
  "round_results": [
    [
      { "p1": "1001", "p2": "1002", "games": [2, 1, 0], "complete": true }
    ]
  ]
}

A simple tournament where Alice won the only match 2-1.

Schema

The tables below describe each object in the dataset. A formal JSON Schema is available for use with validators and code generators.

Tournament (top level) #

FieldTypeDescription
title string required Human readable tournament name. Empty string when not known.
source_url string required URL of the original tournament listing (e.g. melee.gg) that this data was scraped from. Empty string when not known.
start_date string required ISO 8601 start date/time of the tournament. Empty string when not known.
limited_rounds integer[] required 0-indexed round numbers played in a limited (drafted) format for mixed limited-constructed tournaments. Empty list if there are no limited rounds.
required_points { string: integer } required Match-point cutoffs. The key is the number of rounds played; the value is the minimum match points needed at that point to continue playing. e.g. { "9": 18 } = need 18 points after 9 rounds. Empty when there is no cut.
top_cut_rounds integer required Number of single-elimination rounds at the end of the tournament. 3 = Top 8, 4 = Top 16, etc.
players { string: Player } required Map from a player's ident to their record.
round_results MatchResult[][] required Round-by-round results. For in progress tournaments the length of this array should always be the total number of rounds in the tournament. Rounds that have not started will have an empty MatchResult array associated with them.

Player #

FieldTypeDescription
ident string required Identifier for the player. Format depends on data source.
name string required Display name of the player.
url string | null optional Profile URL of the player on the source platform, when available.
deck Deck required The decklist registered by this player.

Deck #

FieldTypeDescription
main_deck Card[] required Main deck cards
side_board Card[] required Sideboard cards.
archetype string required Archetype label for the deck. "unknown" when no archetype could be determined.
author string | null optional Original deck author, if given.
url string | null optional URL of the decklist on the source platform, when available.

Card #

FieldTypeDescription
name string required Card name (direct from data source, no normalizing has been done)
count integer ≥ 1 required Number of copies of this card.

MatchResult #

FieldTypeDescription
p1 string required Player id of the first player.
p2 string | null required Player id of the second player. null for byes or forfeits.
games [integer, integer, integer] required Game scores as [p1 wins, p2 wins, draws]. For byes this is [0, 0, 0]. For forfeits this is [0, 2, 0]. Intentional draws are [0, 0, 0]. Match results are normalized so p1 is the winner (forfeits exempted).
complete boolean optional, default true False if the match is still in progress.

Raw JSON Schema

For automated validation or code generation, download tournament.schema.json (Draft 2020-12).

Show inline schema
Loading…