cards.json file contains a list of card objects and includes every single
card in the game. Note that in Hearthstone, everything is a card, even Heroes,
Hero Powers and buffs (Enchantments).
cards.collectible.json is a restricted set which contains only collectible
cards (cards which will show up in your collection and the base heroes). Please
use this set if you do not need non-collectible cards in your app.
A card is an array of attributes. With noted exceptions, fields are only shown
if they do not evaluate to
0 or an empty string.
id (String) field identifies the card uniquely. Use it! For more info, see
The following attributes are available as non-localized string representations of enums (as described in the Enums section below):
Rarityenum). Note that the
FREErarity does not determine the presence of a rarity gem. Cards without a rarity gem are those in the
Factionenum). Although unused in Hearthstone, faction data for cards is (unreliably) stored.
NEUTRALcards do not display a faction attribute.
CardSetenum). Also determines the card’s watermark. The collectible sets are
CORE(basic, free cards),
CardClassenum, previously named
CardTypeenum). The only used types are
Raceenum). Usually only available on minions.
The following attributes are localized strings:
text (card text),
flavor (flavor text),
howToEarn (how to earn
the card; eg. reward, craft),
howToEarnGolden (how to earn the golden
version of the card) and
targetingArrowText (the text when targeting
something with the card)
The following additional attributes are available:
collectible(bool) determines whether the card is collectible.
cost(int) is the card’s mana cost. Always shown, even if 0, except on hero and buff cards.
attack(int) is the card’s attack value. Always shown on minions and weapons.
health(int) is the health value of the card. Always shown for minions and heroes.
durability(int) is the durability value of weapons. Always shown for weapons.
armor(int) is the armor value of heroes.
hideStats(bool) determines whether the card’s stats (cost, atk, health) are supposed to be hidden.
Most values in Hearthstone are integer-based. Some of those integers are available as enumerations. The full list of Hearthstone enums is available in python-hearthstone - enums.py.
mechanics attribute contains a sorted array of
GameTag boolean enum
string representations which are set on the card.
The following game tags are used in this field:
ImmuneToSpellpoweris set on cards which do not increase their damage with spell damage like other cards (such as Arcane Missiles).
InvisibleDeathrattleis an internal tag, used mostly in boss cards.
AI_MUST_PLAYis set on AI hero powers which are auto-cast.
AUTOATTACKis a mechanic used in the Karazhan Chess scenario.
COUNTERis… essentially just Counterspell.
EVIL_GLOWis set on cards which glow red while in the hand.
FORGETFULcorresponds to “50% chance to attack the wrong target”.
RITUALcorresponds to cards which buff C’Thun.
UNTOUCHABLEis used by minions which “do not count as minions”.
TOPDECKis set on cards which are revealed to the opponent when drawn.
playRequirements attribute contains an array of
key: param values which
determine various requirements which have to be met for the card to be played
and what it can target. The key corresponds to a
PlayReq enum string
representation. Most play requirements ignore the parameter, which is thus
Some (not all) play requirements are documented in the old PlayErrors.xml.
entourage attributes contains a sorted array of card IDs which represent
the card’s “entourage”. Entourage is often used for cards which can create new
cards randomly from a specific pool, such as Animal Companion or Ysera.