Public JSON API

General stuff

Responses always contain an error field if something went wrong (success == false), and a data field otherwise.

The month field, when present, encodes a calendar month as such: (full_year * 12) + (month_of_year - 1). For example, August 2024 is encoded as: (2024 * 12) + (8 - 1) = 24288 + 7 = 24295. Any two consecutive calendar months have a difference of 1.

If there are no measurements for a certain calendar month (e.g. a player has not played during that period), that month will not appear in the response. Same for hours of day and days of week.

The damage_hit and damage_shot values are approximate due to how extinfo and Sauer Tracker report data. The accuracy computed from those values may not be the exact true value.


GET /a/global

Returns total numbers from all games

{
    success: boolean
    error? : string
    data?: {
        n_maps         : number
        n_players      : number
        n_players_year : number // number of players seen in the last 12 calendar month
        n_players_month: number // number of players seen in the last calendar month
        n_games        : number
        n_flags        : number
        n_frags        : number
        n_teamkills    : number
        updated        : string // time when data was last updated
    }
}

GET /a/global/by/players | /a/global/by/month | /a/global/by/hour | /global/by/day

Returns total number of games and total number of flags by (number of players | calendar month | hour of day | day of week)

All times are UTC. Hour zero = [0:00 - 1:00). Day zero = Monday.

The n_players field exists only for the hour endpoint and contains the sum of the number of players of each game.

{
    success: boolean
    error? : string
    data?: [{
        (n_players | month | hour | day): number
        n_games   : number
        n_players?: number
        flags     : number
    }, ...]
}

GET /a/topplayers?skip=n_skip&limit=n_limit | /a/topplayers/year?skip=n_skip&limit=n_limit | /a/topplayers/month?skip=n_skip&limit=n_limit

Returns a list of top players, respectively: globally | from the last 12 calendar months (excluding the current month) | from the past calendar month.

n_skip and n_limit are used for pagination and are optional.

A maximum of 100 results is returned per page.

{
    success: boolean
    error? : string
    data?: {
        n_players: number // total number of players
        players: [{
            name       : string
            n_games    : number
            n_won      : number
            n_lost     : number
            flags      : number
            frags      : number
            deaths     : number
            damage_hit : number
            damage_shot: number
            teamkills  : number
            rank       : number
        }, ...]
    }
}

GET /a/maps

Returns global stats for all known maps

{
    success: boolean
    error? : string
    data?: [{
        map       : string
        n_games   : number
        flags_good: number
        flags_evil: number
        wins_good : number
        wins_evil : number
        frags     : number
        teamkills : number
    }, ...]
}

GET /a/player/:name

Returns a player's global stats

{
    success: boolean
    error? : string
    data?: {
        name       : string
        n_games    : number
        n_won      : number
        n_lost     : number
        flags      : number
        frags      : number
        deaths     : number
        damage_hit : number
        damage_shot: number
        teamkills  : number
        rank       : number
        rank_year  : number
        rank_month : number
    }
}

GET /a/player/:name/by/month | /a/player/:name/by/hour | /a/player/:name/by/day

Returns a player's stats by (calendar month | hour of day | day of week).

All times are UTC. Hour zero = [0:00 - 1:00). Day zero = Monday.

{
    success: boolean
    error? : string
    data?: {
        name: string
        stats: [{
            (month | hour | day): number
            n_games    : number
            n_won      : number
            n_lost     : number
            flags      : number
            frags      : number
            deaths     : number
            damage_hit : number
            damage_shot: number
            teamkills  : number
        }, ...]
    }
}

GET /a/player/:name/topmaps

Returns all maps where a player played, sorted by number of games played

{
    success: boolean
    error? : string
    data?: {
        name: string
        topMaps: [{
            map        : string
            n_games    : number
            flags      : number
            frags      : number
            deaths     : number
            damage_hit : number
            damage_shot: number
            teamkills  : number
        }, ...]
    }
}

GET /a/player/:playername/map/:mapname

Returns a player's stats on a specific map

{
    success: boolean
    error? : string
    data?: {
        name       : string
        map        : string
        n_games    : number
        flags      : number
        frags      : number
        deaths     : number
        damage_hit : number
        damage_shot: number
        teamkills  : number
    }
}

GET /a/map/:name

Returns a map's global stats

{
    success: boolean
    error? : strimg
    data?: {
        map       : string
        rank      : number
        n_games   : number
        n_players : number
        flags_good: number
        flags_evil: number
        wins_good : number
        wins_evil : number
        frags     : number
        deaths    : number
        teamkills : number
    }
}

GET /a/map/:name/by/month

Returns a map's stats by calendar month

{
    success: boolean
    error? : string
    data?: {
        map: string
        stats: [{
            month     : number
            n_games   : number
            flags_good: number
            flags_evil: number
            wins_good : number
            wins_evil : number
            frags     : number
            deaths    : number
            teamkills : number
        }, ...]
    }
}

GET /a/map/:name/topplayers?skip=n_skip&limit=n_limit

Returns a map's top players by flags scored and their stats on that map.

n_skip and n_limit are used for pagination and are optional.

A maximum of 100 results is returned per page.

{
    success: boolean
    error? : string
    data?: {
        map        : string
        topPlayers: [{
            name       : string
            n_games    : number
            flags      : number
            frags      : number
            deaths     : number
            damage_hit : number
            damage_shot: number
            teamkills  : number
        }, ...]
    }
}

GET /a/search/:name

Finds players by name. Search is case insensitive and is limited to 100 results. Results are sorted by global rank (from best to worst) but if the search string exactly matches a known player, that player will appear as the first result.

{
    success: boolean
    error? : string
    data?: [{
        name       : string
        n_games    : number
        n_won      : number
        n_lost     : number
        flags      : number
        frags      : number
        deaths     : number
        damage_hit : number
        damage_shot: number
        teamkills  : number
        rank       : number
    }, ...]
}