Introduction
A public API to fetch data from etf2l.org, the biggest European Team Fortress 2 League.
ETF2L REST API v2 beta
Migrating from v1 to v2
The second version of API is rewritten from the ground up in PHP/Laravel. In order to make migrating to the new API as painless as possible, most of the popular endpoints are functionally the same with some slight differences.
In order to migrate to the new API, first your endpoint will need to change to the new URL.
Second, the paginator used in the new API works differently from the paginator in v1. In order to change pages in v1, you provide the page as the URL parameter for a request. Example: /competition/list/:page However, in v2 the paginator takes a page as a query parameter. So in order to request page 2 you would do the following in v2: Example: /competition/list?page=2
The paginator also takes an argument for amount of records it can return at once. Please keep this within limits. By default, every page returns 20 records. If you want to override this, you can provide the limit query parameter. Example: /competition/list?page=1&limit=50 would give you 50 records instead of 20.
Supported output formats
To decrease maintenance overhead, the only output format that remains supported is JSON. yaml, VDF, XML, HTML, perl & php are deprecated. If you still need these, please keep using v1 of the API.
Timespans
Because this provided confusion in the past with data not being visible due to defaulting to only showing active competitions & matches, the since parameter was removed. We suggest using the 'from' and 'to' query parameters to limit records within a certain timespan. These represent UNIX timestamps.
Feature requests
Feature requests for the API are welcome and will be reviewed accordingly by the ETF2L team. Ultimately, it is still up to ETF2L whether additional data or filters get added. The best way to provide feedback on the API would be to contact us on Discord. Please describe your wishes and use case if you do so.
Boolean values
Booleans are non-numeric anymore when they get returned from the API. They will display true or false instead.
New endpoints
Some additional endpoints are provided in the API that were not present in v1, namely the Match API & Demo API.
Base URL
https://api-v2.etf2l.org
Authenticating requests
This API is not authenticated.
Bans
Bans
Returns a paginated list of all bans that were performed on ETF2L.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/bans?player=2788&reason=VAC" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/bans"
);
const params = {
"player": "2788",
"reason": "VAC",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 52
{
"bans": {
"current_page": 1,
"data": [],
"first_page_url": "https://api-v2.etf2l.org/bans?player=2788&reason=VAC&page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://api-v2.etf2l.org/bans?player=2788&reason=VAC&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/bans?player=2788&reason=VAC&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://api-v2.etf2l.org/bans",
"per_page": 20,
"prev_page_url": null,
"to": null,
"total": 0
}
}
Received response:
Request failed with error:
Competition
Competition overview
Gets a list of all competitions.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/list?category=6v6+Season&comp_type=Swiss&team_type=6on6" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/list"
);
const params = {
"category": "6v6 Season",
"comp_type": "Swiss",
"team_type": "6on6",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 51
{
"competitions": {
"current_page": 1,
"data": [],
"first_page_url": "https://api-v2.etf2l.org/competition/list?category=6v6%20Season&comp_type=Swiss&team_type=6on6&page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://api-v2.etf2l.org/competition/list?category=6v6%20Season&comp_type=Swiss&team_type=6on6&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/list?category=6v6%20Season&comp_type=Swiss&team_type=6on6&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://api-v2.etf2l.org/competition/list",
"per_page": 20,
"prev_page_url": null,
"to": null,
"total": 0
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Competition details
Provides some extra details on the competition. Extra information includes the map pool & total signups.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 50
{
"competition": {
"category": "6v6 Season",
"description": "ETF2L Season 1",
"id": 1,
"name": "Season 1",
"pool": [
"cp_well",
"cp_granary",
"cp_dustbowl",
"cp_gravelpit",
"ctf_2fort",
"ctf_turbine"
],
"archived": true,
"type": "6v6",
"teams": {
"max": 51,
"signedup": 40
},
"urls": {
"matches": "https://api-v2.etf2l.org/competition/1/matches",
"results": "https://api-v2.etf2l.org/competition/1/results",
"self": "https://api-v2.etf2l.org/competition/1",
"teams": "https://api-v2.etf2l.org/competition/1/teams"
}
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Competition teams
Returns a paginated list of teams that participated in the competition. Dropped teams are marked with the 'drop' parameter.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/1/teams" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/1/teams"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 49
{
"status": {
"code": 200,
"message": "OK"
},
"teams": {
"current_page": 1,
"data": [
{
"id": 4,
"country": "European",
"name": "Relic",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123f37bce.jpg",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/4"
},
{
"id": 19,
"country": "Sweden",
"name": "Kompaniet",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
{
"id": 9,
"country": "Finland",
"name": "Clan United",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/9"
},
{
"id": 21,
"country": "Sweden",
"name": "In Die Anale Combo",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/21"
},
{
"id": 11,
"country": "France",
"name": "FoF",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/11"
},
{
"id": 139,
"country": "Finland",
"name": "Blood Pressure",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
{
"id": 8,
"country": "European",
"name": "Team Vertex - RIP Youngblood",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ed7fd4.jpg",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/8"
},
{
"id": 3,
"country": "International",
"name": "TeamCoolermaster",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/3"
},
{
"id": 13,
"country": "European",
"name": "The Last Resort",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
{
"id": 15,
"country": "International",
"name": "Monster Munch",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/15"
},
{
"id": 31,
"country": "International",
"name": "Team CoolerMaster",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/31"
},
{
"id": 36,
"country": "Sweden",
"name": "Excello",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/36"
},
{
"id": 40,
"country": "Sweden",
"name": "Excello",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/40"
},
{
"id": 6,
"country": "Germany",
"name": "aX-eSport.GamerArea",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/6"
},
{
"id": 18,
"country": "European",
"name": "extenSia!",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/18"
},
{
"id": 50,
"country": "Russia",
"name": "LOL Team remix",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123d3e9f7.jpg",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/50"
},
{
"id": 43,
"country": "France",
"name": "N!nja Clan",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/43"
},
{
"id": 28,
"country": "Germany",
"name": "veil",
"dropped": 1,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/28"
},
{
"id": 5,
"country": "Finland",
"name": "sigh6",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/5"
},
{
"id": 29,
"country": "European",
"name": "Fracture",
"dropped": 0,
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"steam_group": null
},
"url": "https://api-v2.etf2l.org/team/29"
}
],
"first_page_url": "https://api-v2.etf2l.org/competition/1/teams?page=1",
"from": 1,
"last_page": 3,
"last_page_url": "https://api-v2.etf2l.org/competition/1/teams?page=3",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/teams?page=1",
"label": "1",
"active": true
},
{
"url": "https://api-v2.etf2l.org/competition/1/teams?page=2",
"label": "2",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/teams?page=3",
"label": "3",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/teams?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://api-v2.etf2l.org/competition/1/teams?page=2",
"path": "https://api-v2.etf2l.org/competition/1/teams",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 51
}
}
Received response:
Request failed with error:
Competition results
Gets a paginated list of all match results for this competition, ordered from most to least recent.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/1/results" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/1/results"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 48
{
"results": {
"current_page": 1,
"data": [
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"clan2": {
"country": "International",
"drop": false,
"id": 52,
"name": "Fragtastic!",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/52"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": true,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1093,
"maps": [],
"r1": 6,
"r2": 0,
"round": "Week 9",
"time": null,
"week": 9
},
{
"clan1": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"clan2": {
"country": "Finland",
"drop": false,
"id": 41,
"name": "Prima Nocta",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/41"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1079,
"maps": [
"ctf_2fort",
"cp_well"
],
"r1": 0,
"r2": 6,
"round": "Week 6",
"time": null,
"week": 6
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 10,
"name": "$myT1nk",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ea85c0.jpg",
"group": "https://steamcommunity.com/groups/myt1nktf2"
},
"url": "https://api-v2.etf2l.org/team/10"
},
"clan2": {
"country": "France",
"drop": false,
"id": 57,
"name": "The Old School Team",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/57"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1077,
"maps": [
"cp_well",
"cp_dustbowl"
],
"r1": 1,
"r2": 4,
"round": "Week 5",
"time": null,
"week": 5
},
{
"clan1": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"clan2": {
"country": "International",
"drop": false,
"id": 52,
"name": "Fragtastic!",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/52"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1076,
"maps": [
"ctf_2fort",
"ctf_2fort"
],
"r1": 6,
"r2": 0,
"round": "Week 5",
"time": null,
"week": 5
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 45,
"name": "Slackerz",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/45"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1075,
"maps": [
"cp_gravelpit",
"ctf_2fort"
],
"r1": 6,
"r2": 0,
"round": "Week 5",
"time": null,
"week": 5
},
{
"clan1": {
"country": "Finland",
"drop": false,
"id": 41,
"name": "Prima Nocta",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/41"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 45,
"name": "Slackerz",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/45"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1073,
"maps": [
"cp_gravelpit",
"cp_well"
],
"r1": 6,
"r2": 0,
"round": "Week 4",
"time": null,
"week": 4
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 7,
"name": "simply iQ",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/7"
},
"clan2": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1072,
"maps": [
"cp_granary",
"cp_gravelpit"
],
"r1": 4,
"r2": 1,
"round": "Week 4",
"time": null,
"week": 4
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"clan2": {
"country": "France",
"drop": false,
"id": 57,
"name": "The Old School Team",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/57"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1071,
"maps": [
"cp_well",
"cp_dustbowl"
],
"r1": 3,
"r2": 3,
"round": "Week 4",
"time": null,
"week": 4
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 7,
"name": "simply iQ",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/7"
},
"clan2": {
"country": "International",
"drop": false,
"id": 52,
"name": "Fragtastic!",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/52"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1081,
"maps": [
"cp_dustbowl",
"cp_dustbowl"
],
"r1": 6,
"r2": 0,
"round": "Week 6",
"time": null,
"week": 6
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 10,
"name": "$myT1nk",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ea85c0.jpg",
"group": "https://steamcommunity.com/groups/myt1nktf2"
},
"url": "https://api-v2.etf2l.org/team/10"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 45,
"name": "Slackerz",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/45"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1082,
"maps": [
"cp_well",
"ctf_2fort"
],
"r1": 6,
"r2": 0,
"round": "Week 6",
"time": null,
"week": 6
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 7,
"name": "simply iQ",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/7"
},
"clan2": {
"country": "Germany",
"drop": false,
"id": 10,
"name": "$myT1nk",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ea85c0.jpg",
"group": "https://steamcommunity.com/groups/myt1nktf2"
},
"url": "https://api-v2.etf2l.org/team/10"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1092,
"maps": [
"cp_well",
"cp_granary"
],
"r1": 1,
"r2": 4,
"round": "Week 9",
"time": null,
"week": 9
},
{
"clan1": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"clan2": {
"country": "France",
"drop": false,
"id": 57,
"name": "The Old School Team",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/57"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1091,
"maps": [
"ctf_turbine",
"cp_granary"
],
"r1": 6,
"r2": 0,
"round": "Week 9",
"time": null,
"week": 9
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 10,
"name": "$myT1nk",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ea85c0.jpg",
"group": "https://steamcommunity.com/groups/myt1nktf2"
},
"url": "https://api-v2.etf2l.org/team/10"
},
"clan2": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1090,
"maps": [
"cp_granary",
"cp_dustbowl"
],
"r1": 6,
"r2": 0,
"round": "Week 8",
"time": null,
"week": 8
},
{
"clan1": {
"country": "Finland",
"drop": false,
"id": 41,
"name": "Prima Nocta",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/41"
},
"clan2": {
"country": "International",
"drop": false,
"id": 52,
"name": "Fragtastic!",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/52"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": true,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1089,
"maps": [],
"r1": 6,
"r2": 0,
"round": "Week 8",
"time": null,
"week": 8
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 7,
"name": "simply iQ",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/7"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1087,
"maps": [
"cp_well",
"cp_gravelpit"
],
"r1": 0,
"r2": 6,
"round": "Week 8",
"time": null,
"week": 8
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 45,
"name": "Slackerz",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/45"
},
"clan2": {
"country": "France",
"drop": false,
"id": 57,
"name": "The Old School Team",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/57"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1086,
"maps": [
"cp_dustbowl",
"cp_gravelpit"
],
"r1": 0,
"r2": 6,
"round": "Week 7",
"time": null,
"week": 7
},
{
"clan1": {
"country": "England",
"drop": false,
"id": 16,
"name": "9 Men",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e5a58a.jpg",
"group": "https://steamcommunity.com/groups/9m"
},
"url": "https://api-v2.etf2l.org/team/16"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1085,
"maps": [
"ctf_turbine",
"cp_dustbowl"
],
"r1": 0,
"r2": 6,
"round": "Week 7",
"time": null,
"week": 7
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 7,
"name": "simply iQ",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/7"
},
"clan2": {
"country": "Finland",
"drop": false,
"id": 41,
"name": "Prima Nocta",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/41"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1083,
"maps": [
"cp_well",
"cp_gravelpit"
],
"r1": 0,
"r2": 6,
"round": "Week 7",
"time": null,
"week": 7
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 45,
"name": "Slackerz",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/45"
},
"clan2": {
"country": "International",
"drop": false,
"id": 52,
"name": "Fragtastic!",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/52"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1070,
"maps": [
"ctf_turbine",
"cp_dustbowl"
],
"r1": 6,
"r2": 0,
"round": "Week 3",
"time": null,
"week": 3
},
{
"clan1": {
"country": "Germany",
"drop": false,
"id": 10,
"name": "$myT1nk",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ea85c0.jpg",
"group": "https://steamcommunity.com/groups/myt1nktf2"
},
"url": "https://api-v2.etf2l.org/team/10"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 26,
"name": "jAgarna",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123e0e7e9.jpg",
"group": "https://steamcommunity.com/groups/jay"
},
"url": "https://api-v2.etf2l.org/team/26"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 21,
"name": "Division 3b",
"skill_contrib": 16,
"tier": 3
},
"id": 1069,
"maps": [
"ctf_2fort",
"cp_well"
],
"r1": 4,
"r2": 1,
"round": "Week 3",
"time": null,
"week": 3
}
],
"first_page_url": "https://api-v2.etf2l.org/competition/1/results?page=1",
"from": 1,
"last_page": 6,
"last_page_url": "https://api-v2.etf2l.org/competition/1/results?page=6",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=1",
"label": "1",
"active": true
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=2",
"label": "2",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=3",
"label": "3",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=4",
"label": "4",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=5",
"label": "5",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=6",
"label": "6",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/results?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://api-v2.etf2l.org/competition/1/results?page=2",
"path": "https://api-v2.etf2l.org/competition/1/results",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 118
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Competition matches
Gets a paginated list of all matches for this competition, ordered from most to least recent. The main difference with the competition results API is that matches do not have to be played yet in order to appear in this list.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/1/matches" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/1/matches"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 47
{
"matches": {
"current_page": 1,
"data": [
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 36,
"name": "Excello",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/36"
},
"clan2": {
"country": "Finland",
"drop": false,
"id": 5,
"name": "sigh6",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/5"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 19,
"name": "Division 2b",
"tier": 2
},
"id": 1151,
"maps": [
"cp_granary",
"cp_granary"
],
"result": {
"r1": 6,
"r2": 0
},
"round": "Playoffs",
"time": null,
"week": 12,
"skill_contrib": 20
},
{
"clan1": {
"country": "Finland",
"drop": false,
"id": 9,
"name": "Clan United",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/9"
},
"clan2": {
"country": "Finland",
"drop": true,
"id": 139,
"name": "Blood Pressure",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 943,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 4",
"time": null,
"week": 4,
"skill_contrib": 24
},
{
"clan1": {
"country": "International",
"drop": true,
"id": 3,
"name": "TeamCoolermaster",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/3"
},
"clan2": {
"country": "European",
"drop": true,
"id": 8,
"name": "Team Vertex - RIP Youngblood",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ed7fd4.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/8"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 944,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 4",
"time": null,
"week": 4,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": true,
"id": 13,
"name": "The Last Resort",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 19,
"name": "Kompaniet",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 945,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 4",
"time": null,
"week": 4,
"skill_contrib": 24
},
{
"clan1": {
"country": "France",
"drop": false,
"id": 11,
"name": "FoF",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/11"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 21,
"name": "In Die Anale Combo",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/21"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 946,
"maps": [
"cp_granary",
"cp_granary"
],
"result": {
"r1": 6,
"r2": 0
},
"round": "Week 4",
"time": null,
"week": 4,
"skill_contrib": 24
},
{
"clan1": {
"country": "Finland",
"drop": false,
"id": 9,
"name": "Clan United",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/9"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 19,
"name": "Kompaniet",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 947,
"maps": [
"cp_dustbowl",
"cp_well"
],
"result": {
"r1": 0,
"r2": 6
},
"round": "Week 5",
"time": null,
"week": 5,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": true,
"id": 8,
"name": "Team Vertex - RIP Youngblood",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ed7fd4.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/8"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 21,
"name": "In Die Anale Combo",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/21"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 948,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 5",
"time": null,
"week": 5,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": false,
"id": 4,
"name": "Relic",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123f37bce.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/4"
},
"clan2": {
"country": "Finland",
"drop": true,
"id": 139,
"name": "Blood Pressure",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 949,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 5",
"time": null,
"week": 5,
"skill_contrib": 24
},
{
"clan1": {
"country": "France",
"drop": false,
"id": 11,
"name": "FoF",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/11"
},
"clan2": {
"country": "European",
"drop": true,
"id": 13,
"name": "The Last Resort",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 950,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 5",
"time": null,
"week": 5,
"skill_contrib": 24
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 19,
"name": "Kompaniet",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 21,
"name": "In Die Anale Combo",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/21"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 942,
"maps": [
"ctf_2fort",
"cp_granary"
],
"result": {
"r1": 6,
"r2": 0
},
"round": "Week 3",
"time": null,
"week": 3,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": false,
"id": 4,
"name": "Relic",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123f37bce.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/4"
},
"clan2": {
"country": "Finland",
"drop": false,
"id": 9,
"name": "Clan United",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/9"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": false,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 941,
"maps": [
"cp_well",
"cp_dustbowl"
],
"result": {
"r1": 4,
"r2": 1
},
"round": "Week 3",
"time": null,
"week": 3,
"skill_contrib": 24
},
{
"clan1": {
"country": "International",
"drop": true,
"id": 3,
"name": "TeamCoolermaster",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/3"
},
"clan2": {
"country": "France",
"drop": false,
"id": 11,
"name": "FoF",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/11"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 940,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 3",
"time": null,
"week": 3,
"skill_contrib": 24
},
{
"clan1": {
"country": "International",
"drop": true,
"id": 3,
"name": "TeamCoolermaster",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/3"
},
"clan2": {
"country": "Finland",
"drop": true,
"id": 139,
"name": "Blood Pressure",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 932,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 1",
"time": null,
"week": 1,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": true,
"id": 8,
"name": "Team Vertex - RIP Youngblood",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ed7fd4.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/8"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 19,
"name": "Kompaniet",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 933,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 1",
"time": null,
"week": 1,
"skill_contrib": 24
},
{
"clan1": {
"country": "Finland",
"drop": false,
"id": 9,
"name": "Clan United",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/9"
},
"clan2": {
"country": "European",
"drop": true,
"id": 13,
"name": "The Last Resort",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 934,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 1",
"time": null,
"week": 1,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": true,
"id": 8,
"name": "Team Vertex - RIP Youngblood",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123ed7fd4.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/8"
},
"clan2": {
"country": "France",
"drop": false,
"id": 11,
"name": "FoF",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/11"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 935,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 2",
"time": null,
"week": 2,
"skill_contrib": 24
},
{
"clan1": {
"country": "Sweden",
"drop": false,
"id": 21,
"name": "In Die Anale Combo",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/21"
},
"clan2": {
"country": "Finland",
"drop": true,
"id": 139,
"name": "Blood Pressure",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 936,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 2",
"time": null,
"week": 2,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": false,
"id": 4,
"name": "Relic",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5577123f37bce.jpg",
"group": null
},
"url": "https://api-v2.etf2l.org/team/4"
},
"clan2": {
"country": "European",
"drop": true,
"id": 13,
"name": "The Last Resort",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 937,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 2",
"time": null,
"week": 2,
"skill_contrib": 24
},
{
"clan1": {
"country": "International",
"drop": true,
"id": 3,
"name": "TeamCoolermaster",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/3"
},
"clan2": {
"country": "Sweden",
"drop": false,
"id": 19,
"name": "Kompaniet",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/19"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 938,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 2",
"time": null,
"week": 2,
"skill_contrib": 24
},
{
"clan1": {
"country": "European",
"drop": true,
"id": 13,
"name": "The Last Resort",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/13"
},
"clan2": {
"country": "Finland",
"drop": true,
"id": 139,
"name": "Blood Pressure",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/139"
},
"competition": {
"category": "6v6 Season",
"id": 1,
"name": "Season 1",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/1"
},
"defaultwin": null,
"division": {
"id": 17,
"name": "Division 1",
"tier": 1
},
"id": 939,
"maps": [],
"result": {
"r1": null,
"r2": null
},
"round": "Week 3",
"time": null,
"week": 3,
"skill_contrib": 24
}
],
"first_page_url": "https://api-v2.etf2l.org/competition/1/matches?page=1",
"from": 1,
"last_page": 10,
"last_page_url": "https://api-v2.etf2l.org/competition/1/matches?page=10",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=1",
"label": "1",
"active": true
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=2",
"label": "2",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=3",
"label": "3",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=4",
"label": "4",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=5",
"label": "5",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=6",
"label": "6",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=7",
"label": "7",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=8",
"label": "8",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=9",
"label": "9",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=10",
"label": "10",
"active": false
},
{
"url": "https://api-v2.etf2l.org/competition/1/matches?page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://api-v2.etf2l.org/competition/1/matches?page=2",
"path": "https://api-v2.etf2l.org/competition/1/matches",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 194
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Competition tables
This endpoint returns the same data that is used to show the tables if you navigate to 'Competitions' -> {the competition} Tables.
drop marks if a team was dropped from the competition. gc_ stands for Golden Cap and covers both Golden Cap wins and losses. penalty_points are assigned when a team has contracted a certain amount of warnings (see ETF2L General Rules for more information) ach (short for achievement) indicates the placement of the teams at the end of a season. The tables are grouped by division names respectively. The order in which they are sorted indicates their placements. Dropped teams will always be at the bottom, while teams that finished top 3 will always be first even if they had overall less score in the main season.
Note that one season might have multiple competitions internally. This is usually the case for regular tiers vs top tiers.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/competition/1/tables" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/competition/1/tables"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 46
{
"tables": {
"Division 3a": [
{
"id": 25,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "Germany",
"name": "Friede seiner Asche",
"maps_played": 15,
"maps_won": 13,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 37,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 54,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "Germany",
"name": "SHIFTplay",
"maps_played": 16,
"maps_won": 12,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 4,
"penalty_points": 0,
"score": 32,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 33,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "Russia",
"name": "Team Empire",
"maps_played": 16,
"maps_won": 12,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 4,
"penalty_points": 0,
"score": 32,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 32,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "Sweden",
"name": "Northwave",
"maps_played": 16,
"maps_won": 10,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 26,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 35,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "UnitedKingdom",
"name": "clanda",
"maps_played": 14,
"maps_won": 5,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 9,
"penalty_points": 0,
"score": 15,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 48,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "International",
"name": "fight club united kingdom",
"maps_played": 15,
"maps_won": 5,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 10,
"penalty_points": 0,
"score": 13,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 47,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "European",
"name": "Kaizen",
"maps_played": 15,
"maps_won": 3,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 12,
"penalty_points": 0,
"score": 7,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 49,
"drop": false,
"division_id": 20,
"division_name": "Division 3a",
"country": "Finland",
"name": "The MIPC Second Edition",
"maps_played": 15,
"maps_won": 1,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 14,
"penalty_points": 0,
"score": 1,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 37,
"drop": true,
"division_id": 20,
"division_name": "Division 3a",
"country": "Finland",
"name": "Legioona",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
],
"Division 3b": [
{
"id": 41,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "Finland",
"name": "Prima Nocta",
"maps_played": 15,
"maps_won": 12,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 3,
"penalty_points": 0,
"score": 34,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 10,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "Germany",
"name": "$myT1nk",
"maps_played": 17,
"maps_won": 12,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 5,
"penalty_points": 0,
"score": 30,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 26,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "Sweden",
"name": "jAgarna",
"maps_played": 16,
"maps_won": 11,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 5,
"penalty_points": 0,
"score": 29,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 57,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "France",
"name": "The Old School Team",
"maps_played": 15,
"maps_won": 9,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 25,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 7,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "Germany",
"name": "simply iQ",
"maps_played": 16,
"maps_won": 8,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 8,
"penalty_points": 0,
"score": 20,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 16,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "England",
"name": "9 Men",
"maps_played": 15,
"maps_won": 7,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 8,
"penalty_points": 0,
"score": 19,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 45,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "Sweden",
"name": "Slackerz",
"maps_played": 14,
"maps_won": 2,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 12,
"penalty_points": 0,
"score": 6,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 52,
"drop": false,
"division_id": 21,
"division_name": "Division 3b",
"country": "International",
"name": "Fragtastic!",
"maps_played": 14,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 14,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 30,
"drop": true,
"division_id": 21,
"division_name": "Division 3b",
"country": "Sweden",
"name": "Unalleviated Suffering",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
],
"Division 4": [
{
"id": 27,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Poland",
"name": "total llamas",
"maps_played": 13,
"maps_won": 11,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 31,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 55,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Germany",
"name": "IsF",
"maps_played": 15,
"maps_won": 12,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 3,
"penalty_points": 0,
"score": 30,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 56,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Sweden",
"name": "hb0da",
"maps_played": 15,
"maps_won": 9,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 21,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 51,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Belgium",
"name": "Long Range Recce Patrol",
"maps_played": 13,
"maps_won": 7,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 19,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 24,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Netherlands",
"name": "Insane Dutch Killers",
"maps_played": 12,
"maps_won": 4,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 8,
"penalty_points": 0,
"score": 12,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 53,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Russia",
"name": "Chthonians",
"maps_played": 14,
"maps_won": 3,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 11,
"penalty_points": 0,
"score": 5,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 46,
"drop": false,
"division_id": 22,
"division_name": "Division 4",
"country": "Germany",
"name": "Die Philosoffen",
"maps_played": 14,
"maps_won": 2,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 12,
"penalty_points": 0,
"score": 2,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 42,
"drop": true,
"division_id": 22,
"division_name": "Division 4",
"country": "Germany",
"name": "x23",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
],
"Division 2b": [
{
"id": 36,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "Sweden",
"name": "Excello",
"maps_played": 12,
"maps_won": 10,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 26,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 5,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "Finland",
"name": "sigh6",
"maps_played": 12,
"maps_won": 10,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 26,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 29,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "European",
"name": "Fracture",
"maps_played": 10,
"maps_won": 6,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 4,
"penalty_points": 0,
"score": 18,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 17,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "European",
"name": "Pub Clan",
"maps_played": 11,
"maps_won": 4,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 7,
"penalty_points": 0,
"score": 10,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 2,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "Germany",
"name": "it's a farm!",
"maps_played": 11,
"maps_won": 3,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 8,
"penalty_points": 0,
"score": 7,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 39,
"drop": false,
"division_id": 19,
"division_name": "Division 2b",
"country": "Finland",
"name": "Neatmeat",
"maps_played": 10,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 10,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 93,
"drop": true,
"division_id": 19,
"division_name": "Division 2b",
"country": "Portugal",
"name": "5 Quinas",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 44,
"drop": true,
"division_id": 19,
"division_name": "Division 2b",
"country": "France",
"name": "Veni Vidi Vici",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
],
"Division 2a": [
{
"id": 15,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "International",
"name": "Monster Munch",
"maps_played": 12,
"maps_won": 9,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 3,
"penalty_points": 0,
"score": 23,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 31,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "International",
"name": "Team CoolerMaster",
"maps_played": 14,
"maps_won": 9,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 5,
"penalty_points": 0,
"score": 19,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 40,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "Sweden",
"name": "Excello",
"maps_played": 12,
"maps_won": 7,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 5,
"penalty_points": 0,
"score": 17,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 6,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "Germany",
"name": "aX-eSport.GamerArea",
"maps_played": 13,
"maps_won": 7,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 15,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 18,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "European",
"name": "extenSia!",
"maps_played": 12,
"maps_won": 4,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 8,
"penalty_points": 0,
"score": 8,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 50,
"drop": false,
"division_id": 18,
"division_name": "Division 2a",
"country": "Russia",
"name": "LOL Team remix",
"maps_played": 11,
"maps_won": 1,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 10,
"penalty_points": 0,
"score": 1,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 43,
"drop": true,
"division_id": 18,
"division_name": "Division 2a",
"country": "France",
"name": "N!nja Clan",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 28,
"drop": true,
"division_id": 18,
"division_name": "Division 2a",
"country": "Germany",
"name": "veil",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
],
"Division 1": [
{
"id": 4,
"drop": false,
"division_id": 17,
"division_name": "Division 1",
"country": "European",
"name": "Relic",
"maps_played": 9,
"maps_won": 7,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 19,
"ach": 1,
"byes": 0,
"seeded_points": 0
},
{
"id": 19,
"drop": false,
"division_id": 17,
"division_name": "Division 1",
"country": "Sweden",
"name": "Kompaniet",
"maps_played": 8,
"maps_won": 6,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 2,
"penalty_points": 0,
"score": 18,
"ach": 2,
"byes": 0,
"seeded_points": 0
},
{
"id": 9,
"drop": false,
"division_id": 17,
"division_name": "Division 1",
"country": "Finland",
"name": "Clan United",
"maps_played": 10,
"maps_won": 4,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 8,
"ach": 3,
"byes": 0,
"seeded_points": 0
},
{
"id": 21,
"drop": false,
"division_id": 17,
"division_name": "Division 1",
"country": "Sweden",
"name": "In Die Anale Combo",
"maps_played": 9,
"maps_won": 3,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 7,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 11,
"drop": false,
"division_id": 17,
"division_name": "Division 1",
"country": "France",
"name": "FoF",
"maps_played": 8,
"maps_won": 2,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 6,
"penalty_points": 0,
"score": 6,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 139,
"drop": true,
"division_id": 17,
"division_name": "Division 1",
"country": "Finland",
"name": "Blood Pressure",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 8,
"drop": true,
"division_id": 17,
"division_name": "Division 1",
"country": "European",
"name": "Team Vertex - RIP Youngblood",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 3,
"drop": true,
"division_id": 17,
"division_name": "Division 1",
"country": "International",
"name": "TeamCoolermaster",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
},
{
"id": 13,
"drop": true,
"division_id": 17,
"division_name": "Division 1",
"country": "European",
"name": "The Last Resort",
"maps_played": 0,
"maps_won": 0,
"gc_won": 0,
"gc_lost": 0,
"maps_lost": 0,
"penalty_points": 0,
"score": 0,
"ach": null,
"byes": 0,
"seeded_points": 0
}
]
}
}
Received response:
Request failed with error:
Demos
Demos
Returns a paginated list of all demos that were uploaded on ETF2L.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C+first_person&pruned=" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/demos"
);
const params = {
"player": "2788",
"type": "stv, first_person",
"pruned": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 40
{
"demos": {
"current_page": 1,
"data": [
{
"id": 11527,
"time": 1549385182,
"match": 74467,
"download_url": "https://etf2l.org/demos/11527",
"stv": true,
"first_person": false,
"downloads": 26,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5c59bdde98677",
"extension": "rar"
},
{
"id": 11526,
"time": 1549385140,
"match": 74467,
"download_url": "https://etf2l.org/demos/11526",
"stv": true,
"first_person": false,
"downloads": 24,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5c59bdb4eb923",
"extension": "rar"
},
{
"id": 10818,
"time": 1528123442,
"match": 72496,
"download_url": "https://etf2l.org/demos/10818",
"stv": false,
"first_person": true,
"downloads": 26,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5b155032cdda7",
"extension": "rar"
},
{
"id": 10817,
"time": 1528123412,
"match": 72496,
"download_url": "https://etf2l.org/demos/10817",
"stv": false,
"first_person": true,
"downloads": 33,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5b1550149e603",
"extension": "rar"
},
{
"id": 10697,
"time": 1524601922,
"match": 72318,
"download_url": "https://etf2l.org/demos/10697",
"stv": true,
"first_person": false,
"downloads": 98,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5adf944298021",
"extension": "rar"
},
{
"id": 10696,
"time": 1524601875,
"match": 72318,
"download_url": "https://etf2l.org/demos/10696",
"stv": true,
"first_person": false,
"downloads": 64,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5adf941362a4e",
"extension": "rar"
},
{
"id": 10695,
"time": 1524601829,
"match": 72318,
"download_url": "https://etf2l.org/demos/10695",
"stv": true,
"first_person": false,
"downloads": 68,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5adf93e578ec4",
"extension": "rar"
},
{
"id": 10655,
"time": 1524172681,
"match": 72318,
"download_url": "https://etf2l.org/demos/10655",
"stv": false,
"first_person": true,
"downloads": 22,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5ad907895ae75",
"extension": "rar"
},
{
"id": 10654,
"time": 1524172652,
"match": 72318,
"download_url": "https://etf2l.org/demos/10654",
"stv": false,
"first_person": true,
"downloads": 30,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5ad9076ce2765",
"extension": "rar"
},
{
"id": 10652,
"time": 1524172599,
"match": 72318,
"download_url": "https://etf2l.org/demos/10652",
"stv": false,
"first_person": true,
"downloads": 32,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5ad90737d7dc0",
"extension": "rar"
},
{
"id": 10576,
"time": 1521291900,
"match": 71579,
"download_url": "https://etf2l.org/demos/10576",
"stv": true,
"first_person": false,
"downloads": 32,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aad127c35382",
"extension": "rar"
},
{
"id": 10575,
"time": 1521291842,
"match": 71579,
"download_url": "https://etf2l.org/demos/10575",
"stv": true,
"first_person": false,
"downloads": 35,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aad12427d221",
"extension": "rar"
},
{
"id": 10553,
"time": 1521073544,
"match": 71556,
"download_url": "https://etf2l.org/demos/10553",
"stv": false,
"first_person": true,
"downloads": 35,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aa9bd883b661",
"extension": "rar"
},
{
"id": 10552,
"time": 1521073455,
"match": 71556,
"download_url": "https://etf2l.org/demos/10552",
"stv": true,
"first_person": false,
"downloads": 53,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aa9bd2fc8284",
"extension": "rar"
},
{
"id": 10551,
"time": 1521073379,
"match": 71574,
"download_url": "https://etf2l.org/demos/10551",
"stv": true,
"first_person": false,
"downloads": 28,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aa9bce3b2fa0",
"extension": "rar"
},
{
"id": 10550,
"time": 1521073246,
"match": 71567,
"download_url": "https://etf2l.org/demos/10550",
"stv": true,
"first_person": false,
"downloads": 26,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "5aa9bc5e1b542",
"extension": "rar"
},
{
"id": 6124,
"time": 1423174257,
"match": 56186,
"download_url": "https://etf2l.org/demos/6124",
"stv": true,
"first_person": false,
"downloads": 149,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "1423174257_2015-02-05-22-00-_r__vs_eshock-cp_process_final",
"extension": "rar"
},
{
"id": 6123,
"time": 1423174234,
"match": 56186,
"download_url": "https://etf2l.org/demos/6123",
"stv": true,
"first_person": false,
"downloads": 135,
"owner": 2788,
"owner_name": "kaidus",
"pruned": false,
"file": "1423174234_2015-02-05-21-25-_r__vs_eshock-cp_badlands",
"extension": "rar"
},
{
"id": 5187,
"time": 1406470651,
"match": 52365,
"download_url": "https://etf2l.org/demos/5187",
"stv": true,
"first_person": false,
"downloads": 356,
"owner": 2788,
"owner_name": "kaidus",
"pruned": true,
"file": "1406470651_2014-07-24-22-08-blu_vs_epsi-cp_badlands",
"extension": "rar"
},
{
"id": 5186,
"time": 1406470623,
"match": 52365,
"download_url": "https://etf2l.org/demos/5186",
"stv": true,
"first_person": false,
"downloads": 237,
"owner": 2788,
"owner_name": "kaidus",
"pruned": true,
"file": "1406470623_2014-07-24-21-30-blu_vs_epsi-cp_process_final",
"extension": "rar"
}
],
"first_page_url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=1",
"from": 1,
"last_page": 3,
"last_page_url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=3",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=1",
"label": "1",
"active": true
},
{
"url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=2",
"label": "2",
"active": false
},
{
"url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=3",
"label": "3",
"active": false
},
{
"url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://api-v2.etf2l.org/demos?player=2788&type=stv%2C%20first_person&pruned=0&page=2",
"path": "https://api-v2.etf2l.org/demos",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 50
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Matches
Matches
Returns a paginated list of all matches, sorted from most to least recent.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/matches?team_type=6on6&round=Semi-Final" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/matches"
);
const params = {
"team_type": "6on6",
"round": "Semi-Final",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 42
{
"results": {
"current_page": 1,
"data": [],
"first_page_url": "https://api-v2.etf2l.org/matches?team_type=6on6&round=Semi-Final&page=1",
"from": null,
"last_page": 1,
"last_page_url": "https://api-v2.etf2l.org/matches?team_type=6on6&round=Semi-Final&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/matches?team_type=6on6&round=Semi-Final&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://api-v2.etf2l.org/matches",
"per_page": 20,
"prev_page_url": null,
"to": null,
"total": 0
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Match details
Returns additional details about a match like the players who participated in it.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/matches/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/matches/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 41
{
"match": {
"clan1": {
"country": "International",
"drop": false,
"id": 160,
"name": "I am",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/160"
},
"clan2": {
"country": "Belgium",
"drop": false,
"id": 178,
"name": "beTeam",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"group": null
},
"url": "https://api-v2.etf2l.org/team/178"
},
"competition": {
"category": "6v6 Cup",
"id": 4,
"name": "ETF2L 3rd Cup",
"type": "6v6",
"url": "https://api-v2.etf2l.org/competition/4"
},
"defaultwin": false,
"division": null,
"id": 1,
"maps": [
"cp_pro_granary",
"cp_badlands"
],
"r1": 2,
"r2": 0,
"round": "Round 1",
"time": 1213291800,
"submitted": 1213305069,
"week": 1,
"urls": {
"self": "https://etf2l.org/matches/1",
"api": "https://api-v2.etf2l.org/matches/1"
},
"players": [],
"bye_week": false,
"demos": [],
"map_results": [
{
"match_order": 1,
"clan1": 8,
"clan2": 0,
"map": "cp_pro_granary",
"golden_cap": false
},
{
"match_order": 2,
"clan1": 14,
"clan2": 0,
"map": "cp_badlands",
"golden_cap": false
}
]
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Player
Player information
Gets the ETF2L user information.
Valid arguments: ETF2L Player ID, SteamID2, SteamID3, SteamID64.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/player/4" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/player/4"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
{
"status": {
"code": 404,
"message": "No player was found for 4. Provide either the ETF2L player ID or a valid SteamId2, SteamId3 or SteamId64 ID."
}
}
Received response:
Request failed with error:
Player transfers
Gets the team transfers of a player.
Valid parameters: ETF2L Player ID, SteamID2, SteamID3, SteamID64.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/player/4/transfers" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/player/4/transfers"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
{
"status": {
"code": 404,
"message": "No player was found for 4. Provide either the ETF2L player ID or a valid SteamId2, SteamId3 or SteamId64 ID."
}
}
Received response:
Request failed with error:
Player results
Gets the player's results. Sorted from most recent to least recent. Uses pagination. Provide a page query parameter to iterate through the results.
Valid parameters: ETF2L Player ID, SteamID2, SteamID3, SteamID64.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/player/4/results" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/player/4/results"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 57
{
"status": {
"code": 404,
"message": "No player was found for 4. Provide either the ETF2L player ID or a valid SteamId2, SteamId3 or SteamId64 ID."
}
}
Received response:
Request failed with error:
Recruitment
Player recruitment
Gets a paginated list of recruitment posts for players.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/recruitment/players?user=82350" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/recruitment/players"
);
const params = {
"user": "82350",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 45
{
"recruitment": {
"current_page": 1,
"data": [
{
"classes": [
"Demoman",
"Heavy",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 4,
"last": 1612792037
},
"id": 71219,
"name": "extrasolar",
"skill": "Prem/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/280916"
}
},
{
"classes": [
"Soldier"
],
"comments": {
"count": 2,
"last": 1600205449
},
"id": 68379,
"name": "extrasolar",
"skill": "Mid/Low",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/275066"
}
},
{
"classes": [
"Demoman",
"Scout",
"Soldier"
],
"comments": {
"count": 0,
"last": null
},
"id": 65907,
"name": "extrasolar",
"skill": "Mid/Low",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/270864"
}
},
{
"classes": [
"Scout",
"Soldier"
],
"comments": {
"count": 15,
"last": 1556881178
},
"id": 64607,
"name": "extrasolar",
"skill": "Mid/Low",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/268769"
}
},
{
"classes": [
"Demoman",
"Heavy",
"Sniper"
],
"comments": {
"count": 20,
"last": 1550094481
},
"id": 63083,
"name": "extrasolar",
"skill": "Prem/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/266148"
}
},
{
"classes": [
"Heavy"
],
"comments": {
"count": 14,
"last": 1548154270
},
"id": 62588,
"name": "extrasolar",
"skill": "Prem/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/265353"
}
},
{
"classes": [
"Spy"
],
"comments": {
"count": 13,
"last": 1536426798
},
"id": 60546,
"name": "extrasolar",
"skill": "Low/Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/261787"
}
},
{
"classes": [
"Heavy"
],
"comments": {
"count": 22,
"last": 1532363109
},
"id": 59632,
"name": "extrasolar",
"skill": "Prem/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/260457"
}
},
{
"classes": [
"Sniper"
],
"comments": {
"count": 22,
"last": 1501593812
},
"id": 53059,
"name": "extrasolar",
"skill": "Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/248510"
}
},
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Pyro",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 16,
"last": 1500581728
},
"id": 52773,
"name": "extrasolar",
"skill": "Mid/Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/247914"
}
},
{
"classes": [
"Heavy",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 7,
"last": 1494933987
},
"id": 51421,
"name": "extrasolar",
"skill": "Mid/Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/244984"
}
},
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Pyro",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 22,
"last": 1490067009
},
"id": 49398,
"name": "extrasolar",
"skill": "Prem/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/240688"
}
},
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Pyro",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 19,
"last": 1486236501
},
"id": 48466,
"name": "extrasolar",
"skill": "High/Mid",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/238412"
}
},
{
"classes": [
"Demoman",
"Pyro",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 16,
"last": 1478974186
},
"id": 47701,
"name": "extrasolar",
"skill": "Mid/Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/236890"
}
},
{
"classes": [
"Demoman",
"Heavy",
"Pyro",
"Sniper",
"Soldier"
],
"comments": {
"count": 17,
"last": 1478069602
},
"id": 47443,
"name": "extrasolar",
"skill": "High/Mid",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/236151"
}
},
{
"classes": [
"Heavy"
],
"comments": {
"count": 71,
"last": 1474736719
},
"id": 46626,
"name": "extrasolar",
"skill": "High/Mid",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/234402"
}
},
{
"classes": [
"Demoman",
"Pyro",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 32,
"last": 1471371852
},
"id": 45672,
"name": "extrasolar",
"skill": "Prem",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/232824"
}
},
{
"classes": [
"Heavy"
],
"comments": {
"count": 20,
"last": 1468454766
},
"id": 45374,
"name": "extrasolar",
"skill": "High/Mid",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/232153"
}
},
{
"classes": [
"Medic"
],
"comments": {
"count": 3,
"last": 1467121956
},
"id": 44732,
"name": "extrasolar",
"skill": "Open",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/231283"
}
},
{
"classes": [
"Heavy"
],
"comments": {
"count": 26,
"last": 1462073316
},
"id": 43576,
"name": "extrasolar",
"skill": "Mid/High",
"steam": {
"avatar": "https://avatars.steamstatic.com/0dfcd37228ac447124fa0501a2a1a94ad5e61cc3_full.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"player": "https://api-v2.etf2l.org/player/82350",
"recruitment": "https://etf2l.org/recruitment/228620"
}
}
],
"first_page_url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=1",
"from": 1,
"last_page": 2,
"last_page_url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=2",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=1",
"label": "1",
"active": true
},
{
"url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=2",
"label": "2",
"active": false
},
{
"url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "https://api-v2.etf2l.org/recruitment/players?user=82350&page=2",
"path": "https://api-v2.etf2l.org/recruitment/players",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 24
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Team recruitment
Gets a paginated list of recruitment posts for teams.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/recruitment/teams?user=82350" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/recruitment/teams"
);
const params = {
"user": "82350",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 44
{
"recruitment": {
"current_page": 1,
"data": [
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Medic",
"Pyro",
"Scout",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 0,
"last": null
},
"id": 61840,
"name": "Weed Cake Sellers",
"skill": "Prem/High",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5f3e889604d71.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"team": "https://api-v2.etf2l.org/team/27488",
"recruitment": "https://etf2l.org/recruitment/264219"
}
},
{
"classes": [
"Demoman",
"Medic",
"Scout",
"Soldier"
],
"comments": {
"count": 10,
"last": 1493658108
},
"id": 51016,
"name": "Police Squad",
"skill": "Mid/Open",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/5ecaa97191896.png",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "6v6",
"urls": {
"team": "https://api-v2.etf2l.org/team/28026",
"recruitment": "https://etf2l.org/recruitment/244029"
}
},
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Medic",
"Pyro",
"Scout",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 1,
"last": 1462872027
},
"id": 43824,
"name": "Banterlads",
"skill": "Open/Mid",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/573ccfddd94e6.png",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"team": "https://api-v2.etf2l.org/team/26225",
"recruitment": "https://etf2l.org/recruitment/229342"
}
},
{
"classes": [
"Demoman",
"Engineer",
"Heavy",
"Medic",
"Pyro",
"Scout",
"Sniper",
"Soldier",
"Spy"
],
"comments": {
"count": 5,
"last": 1445466301
},
"id": 38972,
"name": "MAKE TEA NOT WAR",
"skill": "Mid",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/55f5b3a22cc56.jpg",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"team": "https://api-v2.etf2l.org/team/25581",
"recruitment": "https://etf2l.org/recruitment/220222"
}
},
{
"classes": [
"Medic"
],
"comments": {
"count": 1,
"last": 1439099199
},
"id": 37458,
"name": "MAKE TEA NOT WAR",
"skill": "Open/Mid",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"team": "https://api-v2.etf2l.org/team/24752",
"recruitment": "https://etf2l.org/recruitment/217127"
}
},
{
"classes": [
"Demoman"
],
"comments": {
"count": 3,
"last": 1431267413
},
"id": 35294,
"name": "MAKE TEA NOT WAR",
"skill": "Open",
"steam": {
"avatar": "https://etf2l.org/wp-content/uploads/avatars/",
"id": "STEAM_1:1:50294888",
"id3": "[U:1:100589777]",
"id64": "76561198060855505"
},
"type": "Highlander",
"urls": {
"team": "https://api-v2.etf2l.org/team/24752",
"recruitment": "https://etf2l.org/recruitment/212728"
}
}
],
"first_page_url": "https://api-v2.etf2l.org/recruitment/teams?user=82350&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://api-v2.etf2l.org/recruitment/teams?user=82350&page=1",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api-v2.etf2l.org/recruitment/teams?user=82350&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"next_page_url": null,
"path": "https://api-v2.etf2l.org/recruitment/teams",
"per_page": 20,
"prev_page_url": null,
"to": 6,
"total": 6
},
"status": {
"code": 200,
"message": "OK"
}
}
Received response:
Request failed with error:
Team
Team
Shows information about an ETF2L team. Information includes competitions, current active players and details.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/team/2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/team/2"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 56
{
"message": "No query results for model [App\\Models\\Clan] 1"
}
Received response:
Request failed with error:
Team transfers
Gets the transfers of a team.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/team/2/transfers" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/team/2/transfers"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 55
{
"message": "No query results for model [App\\Models\\Clan] 1"
}
Received response:
Request failed with error:
Team results
Gets the team's results.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/team/2/results" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/team/2/results"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 54
{
"message": "No query results for model [App\\Models\\Clan] 1"
}
Received response:
Request failed with error:
Team matches
Returns a list of matches the team has played in, from most to least recent.
Requires a ETF2L team ID.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/team/2/matches" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/team/2/matches"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (404):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 53
{
"message": "No query results for model [App\\Models\\Clan] 1"
}
Received response:
Request failed with error:
Whitelists
Whitelists
Returns a list of all whitelists currently maintained by ETF2L.
Example request:
curl --request GET \
--get "https://api-v2.etf2l.org/whitelists" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api-v2.etf2l.org/whitelists"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 43
{
"status": {
"code": 200,
"message": "OK"
},
"whitelists": {
"ETF2L Ultiduo": {
"filename": "etf2l_whitelist_ultiduo",
"last_change": 1446081616,
"url": "https://etf2l.org/configs/etf2l_whitelist_ultiduo.txt"
},
"ETF2L BBall": {
"filename": "etf2l_whitelist_bball",
"last_change": 1446081616,
"url": "https://etf2l.org/configs/etf2l_whitelist_bball.txt"
},
"ETF2L HL Season 9": {
"filename": "etf2l_whitelist_9v9",
"last_change": 1446081616,
"url": "https://etf2l.org/configs/etf2l_whitelist_9v9.txt"
},
"ETF2L 1v1 Scout DM": {
"filename": "etf2l_whitelist_scoutdm",
"last_change": 1446081616,
"url": "https://etf2l.org/configs/etf2l_whitelist_scoutdm.txt"
},
"ETF2L Season 22": {
"filename": "etf2l_whitelist_6v6",
"last_change": 1446081615,
"url": "https://etf2l.org/configs/etf2l_whitelist_6v6.txt"
}
}
}
Received response:
Request failed with error: