Data Contracts
JSON Schema
Below is the JSON Schema used for the match data:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Match Data Schema",
"type": "object",
"properties": {
"Discipline": {
"type": "string"
},
"Date": {
"type": "string",
"format": "date-time"
},
"Team1": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
}
},
"required": ["name", "id"]
},
"Team2": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
}
},
"required": ["name", "id"]
},
"Tournament": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
}
},
"required": ["name", "id"]
},
"Streams": {
"type": "object",
"properties": {
"Twitch": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri"
},
"locale": {
"type": ["string", "null"]
}
},
"required": ["link", "locale"]
}
},
"Youtube": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri"
},
"locale": {
"type": ["string", "null"]
}
},
"required": ["link", "locale"]
}
},
"Huya": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri"
},
"locale": {
"type": ["string", "null"]
}
},
"required": ["link", "locale"]
}
},
"Bilibili": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri"
},
"locale": {
"type": ["string", "null"]
}
},
"required": ["link", "locale"]
}
},
"Afreeca": {
"type": "array",
"items": {
"type": "object",
"properties": {
"link": {
"type": "string",
"format": "uri"
},
"locale": {
"type": ["string", "null"]
}
},
"required": ["link", "locale"]
}
}
},
"required": ["Twitch", "Youtube", "Huya", "Bilibili", "Afreeca"]
},
"Match_id": {
"type": "string",
"format": "uuid"
},
"Timestamp": {
"type": "integer"
}
},
"required": [
"Discipline",
"Date",
"Team1",
"Team2",
"Tournament",
"Streams",
"Match_id",
"Timestamp"
]
}
JSON Specifiaction
Property | Data Type | Description of Property |
---|---|---|
Discipline |
String | Name of discipline. CS, DOTA, LoL, VALORANT, Arena of Valor, Call of Duty Mobile, Rainbow6, StarCraft2, Rocket League, Overwatch, Mobile Legends, Crossfire, Warcraft. |
Date |
String | The date and time UTC in ISO 8601, which represents match startime. Example: "2022-03-31T11:20:00Z" |
Team1 |
Object | First team of the match. Has two parameters: name and id. Team1 Object |
Team2 |
Object | Second team of the match. Has two parameters: name and id. Team2 Object |
Tournament |
Object | Tournament in which match is being played. Has two parameters: name and id. Tournament Object |
Streams |
Object | Available streams for this match. Supported platforms: Twitch, Youtube, Huya, Bilibili, AfreecaTV. Streams Object |
Match_id |
UUID | Unique ID of the match. Represented as hexadecimal string of UUID. |
Timestamp |
Long | Timestamp of the creation of the message. |
Team1/2 Object
Property | Data Type | Description of Property |
---|---|---|
name |
String | Name of the team. |
Date |
UUID | Unique ID of the team. Represented as hexadecimal string of UUID. |
A few words about how the team names are presented:
1. The words ["Esports", "Team", "Gaming"]
are always removed from the name.
2. For women's teams: if original name ends with ["fem", "female", "W"]
it is replaced with fe
.
Example: "Team Falcons" -> "Falcons", "Permitta W" -> "Permitta fe"
Warning
Teams with the same name may have different IDs, as organizations can maintain rosters across multiple disciplines.
Tournament Object
Property | Data Type | Description of Property |
---|---|---|
name |
String | Name of the tournament. |
Date |
UUID | Unique ID of the tournament. Represented as hexadecimal string of UUID. |
A few words about how the tournament names are presented:
1. Discipline names, monthes, stages, seasons numbers, punctuation symbols are removed.
Example: "ESEA Season 48: Advanced Division - Europe" -> "ESEA EU Advanced"
2. Regions and some qualifiers are converted to short format based on following table:
Region | Abbreviation |
---|---|
South America | SA |
North America | NA |
Eastern Europe | EEU |
Western Europe | WEU |
Europe | EU |
Southeast Asia | SEA |
Asia | AS |
Africa | AF |
China | CN |
Oceania | OC |
Middle East and North Africa | MENA |
Open Qualifier | OQ |
Closed Qualifier | CQ |
Warning
Tournaments with the same name may have different IDs, as organizers can host tournaments across multiple disciplines.
Streams Object
{
"Twitch": [
{
"link": "https://player.twitch.tv/?channel=valorant&parent=streamshelper.com",
"locale": "en"
},
{
"link": "https://player.twitch.tv/?channel=valorant_br&parent=streamshelper.com",
"locale": "pt"
}
],
"Youtube": [
{
"link": "https://www.youtube.com/embed/0-BoAhwpteQ?autoplay=1",
"locale": "ja"
},
{
"link": "https://www.youtube.com/embed/MrSuHJp7_Ow?autoplay=1",
"locale": null
}
],
"Huya": [
{
"link": "https://liveshare.huya.com/iframe/660679",
"locale": "zh"
}
],
"Bilibili": [
{
"link": "https://www.bilibili.com/blackboard/live/live-activity-player.html?cid=22908869&high_quality=1&danmaku=0",
"locale": "zh"
}
],
"Afreeca": [
{
"link": "https://play.afreecatv.com/valoranten/embed",
"locale": "ko"
}
]
}
Property | Data Type | Description of Property |
---|---|---|
Twitch |
Array | Information about available Twitch streams. |
Youtube |
Array | Information about available Youtube streams. |
Huya |
Array | Information about available Huya streams. |
Bilibili |
Array | Information about available Bilibili streams. |
Afreeca |
Array | Information about available AfreecaTV streams. |
Twitch/Youtube/Huya/Bilibili/AfreecaTV Object
Property | Data Type | Description of Property |
---|---|---|
link |
String | Embed link to the livestream of the match. |
locale |
String/Null | The ISO 639-1 two-letter language code that the broadcaster broadcasts in. Currently, there is one exception: "fil" for Filipino locale, which is ISO 639-2. If the language is unknown, parameter will have value null. |
Please note that if there is more than one stream with same locale, they will be sorted by viewers in descending order.
Example:
blastpremier viewers > heatoncs viewers
[{
"link": "https://player.twitch.tv/?channel=blastpremier&parent=streamshelper.com",
"locale": "en"
},
{
"link": "https://player.twitch.tv/?channel=heatoncs&parent=streamshelper.com",
"locale": "en"
}]
JSON Example
{
"Discipline": "VALORANT",
"Date": "2024-08-25T07:00:00.000Z",
"Team1": {
"name": "EDward",
"id": "698fa3be-d265-4b7e-8779-b19909e1adbc"
},
"Team2": {
"name": "Heretics",
"id": "b9d15c77-52a7-4b72-8195-d97013826c13"
},
"Tournament": {
"name": "Champions",
"id": "2c802cfd-f5cd-4ec1-b09b-955618ee1b2a"
},
"Streams": {
"Twitch": [
{
"link": "https://player.twitch.tv/?channel=valorant&parent=streamshelper.com",
"locale": "en"
},
{
"link": "https://player.twitch.tv/?channel=valorant_br&parent=streamshelper.com",
"locale": "pt"
},
{
"link": "https://player.twitch.tv/?channel=valorant_la&parent=streamshelper.com",
"locale": "es"
},
{
"link": "https://player.twitch.tv/?channel=valorant_kr&parent=streamshelper.com",
"locale": "ko"
},
{
"link": "https://player.twitch.tv/?channel=valorantesports_cn&parent=streamshelper.com",
"locale": "zh"
},
{
"link": "https://player.twitch.tv/?channel=valorant_id&parent=streamshelper.com",
"locale": "id"
},
{
"link": "https://player.twitch.tv/?channel=valorant_tw&parent=streamshelper.com",
"locale": "zh"
},
{
"link": "https://player.twitch.tv/?channel=valorant_tur&parent=streamshelper.com",
"locale": "tr"
},
{
"link": "https://player.twitch.tv/?channel=valorant_fr&parent=streamshelper.com",
"locale": "fr"
},
{
"link": "https://player.twitch.tv/?channel=valorant_es&parent=streamshelper.com",
"locale": "es"
},
{
"link": "https://player.twitch.tv/?channel=valorantleague_east&parent=streamshelper.com",
"locale": "pl"
},
{
"link": "https://player.twitch.tv/?channel=valleague_it&parent=streamshelper.com",
"locale": "it"
},
{
"link": "https://player.twitch.tv/?channel=valorantleague_dach&parent=streamshelper.com",
"locale": "de"
},
{
"link": "https://player.twitch.tv/?channel=valorantesports_ar&parent=streamshelper.com",
"locale": "ar"
},
{
"link": "https://player.twitch.tv/?channel=valorant_th&parent=streamshelper.com",
"locale": "th"
},
{
"link": "https://player.twitch.tv/?channel=ppgl_vctph&parent=streamshelper.com",
"locale": "tl"
},
{
"link": "https://player.twitch.tv/?channel=valorant_jpn&parent=streamshelper.com",
"locale": "ja"
}
],
"Youtube": [
{
"link": "https://www.youtube.com/embed/4YJeanhlIC4?autoplay=1",
"locale": "ja"
},
{
"link": "https://www.youtube.com/embed/D8GNgAZwhb8?autoplay=1",
"locale": "pt"
},
{
"link": "https://www.youtube.com/embed/Dlv3sGMk3vc?autoplay=1",
"locale": "en"
},
{
"link": "https://www.youtube.com/embed/MUjgoeDg1m8?autoplay=1",
"locale": "tr"
},
{
"link": "https://www.youtube.com/embed/SBsU3h3CiXc?autoplay=1",
"locale": "es"
},
{
"link": "https://www.youtube.com/embed/awcVY3_YkpY?autoplay=1",
"locale": "en"
},
{
"link": "https://www.youtube.com/embed/xJmYacZEyfU?autoplay=1",
"locale": "ko"
},
{
"link": "https://www.youtube.com/embed/0aCOQXq5Gbo?autoplay=1",
"locale": null
},
{
"link": "https://www.youtube.com/embed/fIDqt6kh3CE?autoplay=1",
"locale": null
}
],
"Huya": [
{
"link": "https://liveshare.huya.com/iframe/660679",
"locale": "zh"
}
],
"Bilibili": [
{
"link": "https://www.bilibili.com/blackboard/live/live-activity-player.html?cid=22908869&high_quality=1&danmaku=0",
"locale": "zh"
}
],
"Afreeca": [
{
"link": "https://play.afreecatv.com/valoranten/embed",
"locale": "ko"
}
]
},
"Match_id": "16ad415c-5391-4f99-a23c-cb82220c63b3",
"Timestamp": 1724537422
}