> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.wynncraft.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.wynncraft.com/_mcp/server.

# Get leaderboard entries

GET https://api.wynncraft.com/v3/leaderboards/{lb_type}

This endpoint is cached for 10 minutes in the USER cache source.   See [Caching](/welcome#caching).  This endpoint belongs to the LEADERBOARDS rate-limit bucket. See [Throttling and Rate Limits](/welcome#throttling-and-rate-limits).

Leaderboards update every 10 minutes for online players. Players who go offline between update intervals are flagged to update on the next interval.

Use `resultLimit` with an integer below 1000 to limit the response size. The default limit is `100`.

Character-based leaderboards can include `characterUuid` and `characterType`, such as profession or gamemode leaderboards.

`metadata` contains variable keys depending on the leaderboard type. Some gamemode leaderboards also include top-level `characterData`, which has the same structure as player character data.

Some entries also include optional rank presentation fields such as `rank`, `supportRank`, `shortenedRank`, `legacyRankColour`, and `rankBadge`.

Guild season leaderboard types are dynamic and use the `guildSeason...` format returned by `GET /leaderboards/types`, such as `guildSeason32`.

Raid leaderboards include a score and gambits used. Completion starts at 200, then adds +10, +20, or +30 for each gambit.

`previousRanking` is stored daily depending on player activity. Subtracting `previousRanking` from the current ranking gives the player's leaderboard progression.

Reference: https://docs.wynncraft.com/modules/leaderboards/get-leaderboard

## Request

### Path parameters

- `lb_type` (string, required) — Leaderboard identifier such as `playerContent`.

### Query parameters

- `resultLimit` (integer, optional) — Defaults to 100.

## Response

### 200

Leaderboard entries keyed by ranking position.

- `map from string to LeaderboardEntry`

## Errors

### 400 Bad Request Error

Invalid leaderboard type.

- `error` (string, required)
- `detail` (string, required)
- `code` (integer, required)

## Types

### LeaderboardEntry

### GuildEntry

- `metaScore` (integer, required)
- `uuid` (string, required)
- `name` (string, required)
- `prefix` (string, required)
- `score` (GuildEntryScore, required)
- `metadata` (LeaderboardMetadata, required)
- `banner` (GuildBanner, required)
- `previousRanking` (integer, optional)

### GuildLegacyEntry

- `uuid` (string, required)
- `name` (string, required)
- `prefix` (string, required)
- `level` (integer, required)
- `xp` (integer, required)
- `territories` (integer, required)
- `wars` (integer, required)
- `created` (datetime, required)
- `banner` (GuildBanner, required)

### PlayerEntry

- `metaScore` (integer, required)
- `name` (string, required)
- `uuid` (string, required)
- `score` (PlayerEntryScore, required)
- `metadata` (LeaderboardMetadata, required)
- `restricted` (boolean, required)
- `prefix` (string, optional)
- `characterUuid` (string, optional)
- `characterType` (string, optional)
- `characterData` (Character, optional)
- `rank` (string, optional)
- `supportRank` (string, optional, nullable)
- `shortenedRank` (string, optional)
- `legacyRankColour` (LegacyRankColour, optional)
- `rankBadge` (string, optional)
- `previousRanking` (integer, optional)

### GuildEntryScore

### LeaderboardMetadata

### GuildBanner

- `base` (enum, required)
  - Allowed values: `BLACK`, `RED`, `GREEN`, `BROWN`, `BLUE`, `PURPLE`, `CYAN`, `SILVER`, `GRAY`, `PINK`, `LIME`, `YELLOW`, `LIGHT_BLUE`, `MAGENTA`, `ORANGE`, `WHITE`
- `tier` (integer, required)
- `structure` (string, required)
- `layers` (list of BannerLayer, required)

### PlayerEntryScore

### Character

- `type` (string, required)
- `reskin` (string, required, nullable)
- `nickname` (string, required, nullable)
- `level` (integer, required)
- `xp` (integer, required)
- `xpPercent` (integer, required)
- `totalLevel` (integer, required)
- `preEconomy` (boolean, required, nullable)
- `gamemode` (list of string, required)
- `contentCompletion` (integer, required)
- `wars` (integer, required)
- `playtime` (double, required)
- `mobsKilled` (integer, required)
- `chestsFound` (integer, required)
- `itemsIdentified` (integer, required)
- `blocksWalked` (integer, required)
- `logins` (integer, required)
- `deaths` (integer, required)
- `discoveries` (integer, required)
- `pvp` (PvpStats, required)
- `skillPoints` (map from string to integer, required, nullable)
- `professions` (Professions, required)
- `dungeons` (DungeonCountList, required, nullable)
- `raids` (RaidCountList, required, nullable)
- `worldEvents` (integer, required)
- `lootruns` (integer, required)
- `caves` (integer, required)
- `quests` (list of string, required)
- `restrictions` (map from string to boolean, required)
- `removedStat` (list of string, required)

### LegacyRankColour

- `main` (string, required)
- `sub` (string, required)

### LeaderboardMetadataXpPlaytime

- `xp` (integer, required)
- `playtime` (double, required)

### LeaderboardMetadataTotalLevelXpPlaytime

- `totalLevel` (integer, required)
- `xp` (integer, required)
- `playtime` (double, required)

### LeaderboardMetadataPlaytime

- `playtime` (double, required)

### LeaderboardMetadataCompletionsGambits

- `completions` (integer, required)
- `gambits` (integer, required)

### LeaderboardMetadataGuildSeason

- `seasonName` (string, required)
- `position` (integer, required)

### BannerLayer

- `color` (enum, required)
  - Allowed values: `BLACK`, `RED`, `GREEN`, `BROWN`, `BLUE`, `PURPLE`, `CYAN`, `SILVER`, `GRAY`, `PINK`, `LIME`, `YELLOW`, `LIGHT_BLUE`, `MAGENTA`, `ORANGE`, `WHITE`
- `pattern` (enum, required)
  - Allowed values: `MOJANG`, `RHOMBUS_MIDDLE`, `SKULL`, `SQUARE_BOTTOM_LEFT`, `SQUARE_BOTTOM_RIGHT`, `SQUARE_TOP_LEFT`, `SQUARE_TOP_RIGHT`, `STRAIGHT_CROSS`, `STRIPE_BOTTOM`, `STRIPE_CENTER`, `STRIPE_DOWNLEFT`, `STRIPE_DOWNRIGHT`, `STRIPE_LEFT`, `STRIPE_MIDDLE`, `STRIPE_RIGHT`, `STRIPE_SMALL`, `STRIPE_TOP`, `TRIANGLE_BOTTOM`, `TRIANGLE_TOP`, `TRIANGLES_BOTTOM`, `TRIANGLES_TOP`, `BASE`, `BLANK`, `BORDER`, `BRICKS`, `CIRCLE_MIDDLE`, `CREEPER`, `CROSS`, `CURLY_BORDER`, `DIAGONAL_LEFT`, `DIAGONAL_LEFT_MIRROR`, `DIAGONAL_RIGHT`, `DIAGONAL_RIGHT_MIRROR`, `FLOWER`, `GRADIENT`, `GRADIENT_UP`, `HALF_HORIZONTAL`, `HALF_HORIZONTAL_MIRROR`, `HALF_VERTICAL`, `HALF_VERTICAL_MIRROR`

### PvpStats

- `kills` (integer, optional)
- `deaths` (integer, optional)

### Professions

- `fishing` (ProfessionProgress, optional)
- `woodcutting` (ProfessionProgress, optional)
- `mining` (ProfessionProgress, optional)
- `farming` (ProfessionProgress, optional)
- `scribing` (ProfessionProgress, optional)
- `jeweling` (ProfessionProgress, optional)
- `alchemism` (ProfessionProgress, optional)
- `cooking` (ProfessionProgress, optional)
- `weaponsmithing` (ProfessionProgress, optional)
- `tailoring` (ProfessionProgress, optional)
- `woodworking` (ProfessionProgress, optional)
- `armouring` (ProfessionProgress, optional)

### DungeonCountList

- `total` (integer, required)
- `list` (DungeonList, required)

### RaidCountList

- `total` (integer, required)
- `list` (RaidList, required)

### ProfessionProgress

- `level` (integer, required)
- `xpPercent` (integer, required)

### DungeonList

- `Skeleton` (integer, optional)
- `Decrepit Sewers` (integer, optional)
- `Corrupted Decrepit Sewers` (integer, optional)
- `Spider` (integer, optional)
- `Infested Pit` (integer, optional)
- `Zombie` (integer, optional)
- `Timelost Sanctum` (integer, optional)
- `Underworld Crypt` (integer, optional)
- `Corrupted Underworld Crypt` (integer, optional)
- `Animal` (integer, optional)
- `Lost Sanctuary` (integer, optional)
- `Corrupted Lost Sanctuary` (integer, optional)
- `Silverfish` (integer, optional)
- `Sand-Swept Tomb` (integer, optional)
- `Corrupted Sand-Swept Tomb` (integer, optional)
- `Ice` (integer, optional)
- `Ice Barrows` (integer, optional)
- `Corrupted Ice Barrows` (integer, optional)
- `Jungle` (integer, optional)
- `Undergrowth Ruins` (integer, optional)
- `Corrupted Undergrowth Ruins` (integer, optional)
- `Ocean` (integer, optional)
- `Galleon's Graveyard` (integer, optional)
- `Corrupted Galleon's Graveyard` (integer, optional)
- `Fallen Factory` (integer, optional)
- `Eldritch Outlook` (integer, optional)

### RaidList

- `Nest of the Grootslangs` (integer, optional)
- `Orphion's Nexus of Light` (integer, optional)
- `The Canyon Colossus` (integer, optional)
- `The Nameless Anomaly` (integer, optional)
- `The Wartorn Palace` (integer, optional)

## Examples

### Guild leaderboard entries

**Response**

```json
{
  "1": {
    "metaScore": 16082980,
    "name": "Sequoia",
    "uuid": "ee860b7c-9a1d-49cf-9f19-ab673ba0f23b",
    "prefix": "SEQ",
    "score": 16082980,
    "metadata": {
      "completions": 37580,
      "gambits": 434509
    },
    "banner": {
      "base": "YELLOW",
      "tier": 8,
      "structure": "dynastyBanner",
      "layers": [
        {
          "colour": "BLACK",
          "pattern": "RHOMBUS_MIDDLE"
        },
        {
          "colour": "YELLOW",
          "pattern": "CROSS"
        },
        {
          "colour": "BLACK",
          "pattern": "FLOWER"
        },
        {
          "colour": "RED",
          "pattern": "GRADIENT_UP"
        },
        {
          "colour": "WHITE",
          "pattern": "CIRCLE_MIDDLE"
        }
      ]
    }
  }
}
```

**SDK Code**

```python Guild leaderboard entries
import requests

url = "https://api.wynncraft.com/v3/leaderboards/lb_type"

response = requests.get(url)

print(response.json())
```

```javascript Guild leaderboard entries
const url = 'https://api.wynncraft.com/v3/leaderboards/lb_type';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Guild leaderboard entries
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.wynncraft.com/v3/leaderboards/lb_type"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Guild leaderboard entries
require 'uri'
require 'net/http'

url = URI("https://api.wynncraft.com/v3/leaderboards/lb_type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java Guild leaderboard entries
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.wynncraft.com/v3/leaderboards/lb_type")
  .asString();
```

```php Guild leaderboard entries
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.wynncraft.com/v3/leaderboards/lb_type');

echo $response->getBody();
```

```csharp Guild leaderboard entries
using RestSharp;

var client = new RestClient("https://api.wynncraft.com/v3/leaderboards/lb_type");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift Guild leaderboard entries
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.wynncraft.com/v3/leaderboards/lb_type")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Guild legacy leaderboard entries

**Response**

```json
{
  "1": {
    "uuid": "ee860b7c-9a1d-49cf-9f19-ab673ba0f23b",
    "name": "Sequoia",
    "prefix": "SEQ",
    "level": 215,
    "xp": 7596231191438,
    "territories": 61,
    "wars": 138095,
    "created": "2022-10-14T22:10:52.761000Z",
    "banner": {
      "base": "YELLOW",
      "tier": 8,
      "structure": "dynastyBanner",
      "layers": [
        {
          "colour": "BLACK",
          "pattern": "RHOMBUS_MIDDLE"
        },
        {
          "colour": "YELLOW",
          "pattern": "CROSS"
        },
        {
          "colour": "BLACK",
          "pattern": "FLOWER"
        },
        {
          "colour": "RED",
          "pattern": "GRADIENT_UP"
        },
        {
          "colour": "WHITE",
          "pattern": "CIRCLE_MIDDLE"
        }
      ]
    }
  }
}
```

**SDK Code**

```python Guild legacy leaderboard entries
import requests

url = "https://api.wynncraft.com/v3/leaderboards/lb_type"

response = requests.get(url)

print(response.json())
```

```javascript Guild legacy leaderboard entries
const url = 'https://api.wynncraft.com/v3/leaderboards/lb_type';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Guild legacy leaderboard entries
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.wynncraft.com/v3/leaderboards/lb_type"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Guild legacy leaderboard entries
require 'uri'
require 'net/http'

url = URI("https://api.wynncraft.com/v3/leaderboards/lb_type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java Guild legacy leaderboard entries
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.wynncraft.com/v3/leaderboards/lb_type")
  .asString();
```

```php Guild legacy leaderboard entries
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.wynncraft.com/v3/leaderboards/lb_type');

echo $response->getBody();
```

```csharp Guild legacy leaderboard entries
using RestSharp;

var client = new RestClient("https://api.wynncraft.com/v3/leaderboards/lb_type");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift Guild legacy leaderboard entries
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.wynncraft.com/v3/leaderboards/lb_type")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Player leaderboard entries

**Response**

```json
{
  "1": {
    "metaScore": 1288017050117652,
    "name": "Nepmia",
    "uuid": "98bc2236-ada5-4039-b560-8aaa4cc50384",
    "prefix": "SPC",
    "score": 1288,
    "metadata": {
      "totalLevel": 1705,
      "xp": 76520659687,
      "playtime": 3648.5
    },
    "characterUuid": "5b6ab8a0-8f7c-4f50-bd2c-bfabe22d74bc",
    "characterType": "assassin",
    "characterData": {
      "type": "ASSASSIN",
      "reskin": "NINJA",
      "nickname": "Neplicopter",
      "level": 106,
      "xp": 53307528,
      "xpPercent": 100,
      "totalLevel": 369,
      "gamemode": [],
      "meta": {
        "died": false
      },
      "preEconomy": null,
      "contentCompletion": 1860,
      "wars": 6,
      "playtime": 2485.42,
      "mobsKilled": 470208,
      "chestsFound": 3033,
      "itemsIdentified": 42,
      "blocksWalked": 123456,
      "logins": 128,
      "deaths": 666,
      "discoveries": 120,
      "pvp": {
        "kills": 443,
        "deaths": 666
      },
      "skillPoints": {
        "strength": 0,
        "dexterity": 0,
        "intelligence": 0,
        "defence": 0,
        "agility": 0
      },
      "professions": {
        "fishing": {
          "level": 73,
          "xpPercent": 41
        },
        "woodcutting": {
          "level": 52,
          "xpPercent": 88
        },
        "mining": {
          "level": 68,
          "xpPercent": 17
        },
        "farming": {
          "level": 91,
          "xpPercent": 64
        },
        "scribing": {
          "level": 39,
          "xpPercent": 22
        },
        "jeweling": {
          "level": 57,
          "xpPercent": 79
        },
        "alchemism": {
          "level": 44,
          "xpPercent": 35
        },
        "cooking": {
          "level": 28,
          "xpPercent": 93
        },
        "weaponsmithing": {
          "level": 61,
          "xpPercent": 11
        },
        "tailoring": {
          "level": 34,
          "xpPercent": 58
        },
        "woodworking": {
          "level": 49,
          "xpPercent": 84
        },
        "armouring": {
          "level": 72,
          "xpPercent": 26
        }
      },
      "dungeons": {
        "total": 2,
        "list": {
          "Decrepit Sewers": 1,
          "Corrupted Decrepit Sewers": 1
        }
      },
      "raids": {
        "total": 1,
        "list": {
          "Nest of the Grootslangs": 1
        }
      },
      "worldEvents": 2,
      "lootruns": 1,
      "caves": 43,
      "quests": [
        "A Journey Beyond"
      ],
      "restrictions": {
        "characterDataAccess": false,
        "characterBuildAccess": false
      },
      "removedStat": []
    },
    "rank": "WebDev",
    "supportRank": "champion",
    "shortenedRank": "WebDev",
    "legacyRankColour": {
      "main": "#aa0000",
      "sub": "#ff5555"
    },
    "rankBadge": "nextgen/badges/rank_webdev.svg",
    "restricted": false
  }
}
```

**SDK Code**

```python Player leaderboard entries
import requests

url = "https://api.wynncraft.com/v3/leaderboards/lb_type"

response = requests.get(url)

print(response.json())
```

```javascript Player leaderboard entries
const url = 'https://api.wynncraft.com/v3/leaderboards/lb_type';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Player leaderboard entries
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.wynncraft.com/v3/leaderboards/lb_type"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Player leaderboard entries
require 'uri'
require 'net/http'

url = URI("https://api.wynncraft.com/v3/leaderboards/lb_type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java Player leaderboard entries
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.wynncraft.com/v3/leaderboards/lb_type")
  .asString();
```

```php Player leaderboard entries
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.wynncraft.com/v3/leaderboards/lb_type');

echo $response->getBody();
```

```csharp Player leaderboard entries
using RestSharp;

var client = new RestClient("https://api.wynncraft.com/v3/leaderboards/lb_type");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift Player leaderboard entries
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.wynncraft.com/v3/leaderboards/lb_type")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```