Clan & Progression

Clan Data

Clan-level data that lives outside any single base: level progression, labels, and war rewards.


Clan levels

clan().levels() returns a ClanLevels query over all 20 clan levels, including XP requirements and unlocked perks.

import { clan } from 'clash-of-clans-data'

const level10 = clan().levels().atLevel(10)!
console.log(level10.perks.donationUpgradeLevels) // 2
console.log(level10.perks.treasuryExtraStorage) // percentage

const goldLevels = clan().levels().byBadge('gold').get()

Methods

MethodSignatureDescription
getget()Return all 20 clan levels.
countcount()Return the number of clan levels.
atLevelatLevel(level: number)Return the entry for a specific clan level.
byBadgebyBadge(badge: ClanBadge)Filter to levels that display a given badge tier.

Type shape

interface ClanLevel {
  level: number
  xpRequired: number | null
  cumulativeXp: number | null
  badge: ClanBadge
  image: string
  perks: ClanLevelPerks
}

interface ClanLevelPerks {
  donationLimit: { troops: number; spells: number; siegeMachines: number }
  donationUpgradeLevels: number
  treasuryExtraStorage: number
  warBonusExtraLoot: number
}

type ClanBadge =
  | 'bronze'
  | 'silver'
  | 'gold'
  | 'crystal'
  | 'master'
  | 'champion'
  | 'titan'
  | 'legend'

Clan labels

clan().labels() returns a ClanLabels query over all 17 searchable clan labels.

import { clan } from 'clash-of-clans-data'

const warLabel = clan().labels().findByName('clan wars')

Extends the shared QueryBase terminal methods, plus byId(id: string) for an exact ID lookup.


Clan war

clan().war() returns a ClanWar object with max base loot, war bonus tiers, and max base ore.

import { clan } from 'clash-of-clans-data'

const war = clan().war()

war.maxWarBaseLoot() // WarBaseLootEntry[]: TH3–18
war.warBonus() // WarBonusTier[]: 5 clan-level tiers
war.bonusTierForClanLevel(7) // WarBonusTier for a given clan level
war.maxWarBaseOre() // WarBaseOreEntry[]: TH8–18

Methods

MethodReturnsDescription
maxWarBaseLootWarBaseLootEntry[]Maximum available loot in an enemy war base, indexed by Town Hall.
maxWarBaseOreWarBaseOreEntry[]Maximum available ore in an enemy war base, indexed by Town Hall.
warBonusWarBonusTier[]War bonus tiers, grouped by clan level range.
bonusTierForClanLevelWarBonusTier | undefinedThe war bonus tier that applies to a given clan level.

Type shape

interface WarBaseLootEntry {
  townHallLevel: number
  goldAndElixir: number
  darkElixir: number
}

interface WarBonusTier {
  clanLevelRange: string // e.g. "1-2", "9+"
  label: string
  minClanLevel: number
  maxClanLevel?: number
  byTownHall: WarBonusByTownHall[]
}

interface WarBaseOreEntry {
  townHallLevel: number | string // string "16-18" for the grouped top tier
  shinyOre: number
  glowyOre: number
  starryOre: number | null
}

Examples

import { clan } from 'clash-of-clans-data'

// War bonus for a level 7 clan against each Town Hall
const tier = clan().war().bonusTierForClanLevel(7)!
tier.byTownHall.forEach((entry) => {
  console.log(
    `TH${entry.townHallLevel}: ${entry.victory.goldAndElixir} Gold/Elixir`,
  )
})

// Max ore available from a TH16 war base
const th16Ore = clan()
  .war()
  .maxWarBaseOre()
  .find((e) => e.townHallLevel === 16)

Next steps

Previous
Buildings & leagues