Overview
The Items API provides comprehensive data about Pokémon items including held items, evolution items, Mega Stones, Z-Crystals, and more.Basic Usage
Get an Item
Retrieve item information usingDex.items.get():
const {Dex} = require('pokemon-showdown');
const leftovers = Dex.items.get('Leftovers');
console.log(leftovers.name); // 'Leftovers'
console.log(leftovers.num); // Item dex number
console.log(leftovers.gen); // Generation introduced
Item names are case-insensitive and whitespace is ignored.
// All of these work
Dex.items.get('leftovers');
Dex.items.get('Leftovers');
Dex.items.get('LEFTOVERS');
Dex.items.get('L e f t o v e r s');
Item Properties
const choiceBand = Dex.items.get('Choice Band');
console.log(choiceBand.name); // 'Choice Band'
console.log(choiceBand.num); // 220
console.log(choiceBand.gen); // 3
console.log(choiceBand.spritenum); // 68
console.log(choiceBand.isChoice); // true
Held Item Types
Type-Boosting Items
const flamePlate = Dex.items.get('Flame Plate');
console.log(flamePlate.onPlate); // 'Fire'
console.log(flamePlate.num); // 298
// Boosts Fire-type moves by 20%
// Changes Arceus to Fire-type
const splashPlate = Dex.items.get('Splash Plate');
console.log(splashPlate.onPlate); // 'Water'
Choice Items
const choiceBand = Dex.items.get('Choice Band');
console.log(choiceBand.isChoice); // true
// Boosts Attack by 50%, locks into one move
const choiceScarf = Dex.items.get('Choice Scarf');
console.log(choiceScarf.isChoice); // true
// Boosts Speed by 50%, locks into one move
const choiceSpecs = Dex.items.get('Choice Specs');
console.log(choiceSpecs.isChoice); // true
// Boosts Special Attack by 50%, locks into one move
console.log(choiceBand.gen); // 3
console.log(choiceScarf.gen); // 4
console.log(choiceSpecs.gen); // 4
Berries
const sitrusBerry = Dex.items.get('Sitrus Berry');
console.log(sitrusBerry.isBerry); // true
console.log(sitrusBerry.naturalGift);
// { basePower: 80, type: 'Psychic' }
// Heals 1/4 max HP when below 50% HP
const oranBerry = Dex.items.get('Oran Berry');
console.log(oranBerry.isBerry); // true
// Heals 10 HP (not percentage-based)
Mega Stones
const venusaurite = Dex.items.get('Venusaurite');
console.log(venusaurite.megaStone);
// { 'Venusaur': 'Venusaur-Mega' }
console.log(venusaurite.itemUser); // ['Venusaur']
console.log(venusaurite.num); // 659
console.log(venusaurite.gen); // 6
console.log(venusaurite.isNonstandard); // 'Past'
const charizarditeX = Dex.items.get('Charizardite X');
console.log(charizarditeX.megaStone);
// { 'Charizard': 'Charizard-Mega-X' }
const charizarditeY = Dex.items.get('Charizardite Y');
console.log(charizarditeY.megaStone);
// { 'Charizard': 'Charizard-Mega-Y' }
Z-Crystals
const electriumZ = Dex.items.get('Electrium Z');
console.log(electriumZ.zMove); // true
console.log(electriumZ.zMoveType); // 'Electric'
console.log(electriumZ.onPlate); // 'Electric'
console.log(electriumZ.num); // 779
console.log(electriumZ.gen); // 7
console.log(electriumZ.isNonstandard); // 'Past'
const fightiniumZ = Dex.items.get('Fightinium Z');
console.log(fightiniumZ.zMoveType); // 'Fighting'
Evolution Items
const thunderStone = Dex.items.get('Thunder Stone');
console.log(thunderStone.num); // 83
console.log(thunderStone.gen); // 1
// Evolves Pikachu → Raichu
const duskStone = Dex.items.get('Dusk Stone');
console.log(duskStone.num); // 108
console.log(duskStone.gen); // 4
// Evolves Murkrow → Honchkrow, etc.
const ovalStone = Dex.items.get('Oval Stone');
console.log(ovalStone.num); // 110
// Evolves Happiny → Chansey when held + daytime level-up
Special Items
Utility Items
const lifeOrb = Dex.items.get('Life Orb');
console.log(lifeOrb.num); // 270
console.log(lifeOrb.gen); // 4
// Boosts moves by 30%, loses 10% HP per attack
const expertBelt = Dex.items.get('Expert Belt');
console.log(expertBelt.num); // 268
// Boosts super effective moves by 20%
Status Items
const flameOrb = Dex.items.get('Flame Orb');
console.log(flameOrb.num); // 273
console.log(flameOrb.gen); // 4
// Burns the holder after one turn
const toxicOrb = Dex.items.get('Toxic Orb');
console.log(toxicOrb.num); // 272
// Badly poisons the holder after one turn
const stickyBarb = Dex.items.get('Sticky Barb');
console.log(stickyBarb.num); // 288
// Damages holder, may transfer on contact
Forme-Changing Items
const griseousOrb = Dex.items.get('Griseous Orb');
console.log(griseousOrb.num); // 112
console.log(griseousOrb.itemUser); // ['Giratina']
// Changes Giratina to Origin Forme
const adamantOrb = Dex.items.get('Adamant Orb');
console.log(adamantOrb.itemUser); // ['Dialga']
// Boosts Dialga's Dragon/Steel moves
Generation-Specific Items
New Item Mechanics
// Gen 9 items
const boosterEnergy = Dex.items.get('Booster Energy');
console.log(boosterEnergy.num); // 1880
console.log(boosterEnergy.gen); // 9
// Activates Paradox abilities
const clearAmulet = Dex.items.get('Clear Amulet');
console.log(clearAmulet.num); // 1882
// Prevents stat lowering
const abilityShield = Dex.items.get('Ability Shield');
console.log(abilityShield.num); // 1881
console.log(abilityShield.ignoreKlutz); // true
// Protects ability from being changed
Past Generation Items
const gen1Dex = Dex.mod('gen1');
const gen1Items = gen1Dex.items.all();
console.log(gen1Items.length); // 0 (no held items in Gen 1)
const gen2Dex = Dex.mod('gen2');
const leftovers = gen2Dex.items.get('Leftovers');
console.log(leftovers.exists); // true
console.log(leftovers.gen); // 2
List All Items
Retrieve all item data:const allItems = Dex.items.all();
console.log(allItems.length); // 2000+ items
// Filter to berries only
const berries = allItems.filter(i => i.isBerry && i.exists);
// Filter to Mega Stones
const megaStones = allItems.filter(i =>
i.megaStone && i.exists
);
// Filter to current generation items
const currentItems = allItems.filter(i =>
i.exists && !i.isNonstandard
);
The
.all() method includes nonstandard items from past generations, unreleased items, and Pokéballs. Always check exists and isNonstandard properties.Checking Item Existence
const leftovers = Dex.items.get('Leftovers');
console.log(leftovers.exists); // true
console.log(leftovers.isNonstandard); // null (standard)
const venusaurite = Dex.items.get('Venusaurite');
console.log(venusaurite.exists); // true
console.log(venusaurite.isNonstandard); // 'Past'
const fakeItem = Dex.items.get('Not Real Item');
console.log(fakeItem.exists); // false
Practical Examples
Find All Choice Items
const choiceItems = Dex.items.all()
.filter(i => i.isChoice && i.exists)
.map(i => i.name);
console.log(choiceItems);
// ['Choice Band', 'Choice Scarf', 'Choice Specs']
Get All Type Plates
const plates = Dex.items.all()
.filter(i => i.onPlate && i.exists && !i.isNonstandard)
.map(i => ({ name: i.name, type: i.onPlate }));
plates.forEach(plate => {
console.log(`${plate.name}: ${plate.type} type`);
});
Find Berry by Type
function findBerriesByType(type) {
return Dex.items.all()
.filter(i => i.isBerry && i.exists)
.filter(i => i.naturalGift?.type === type)
.map(i => i.name);
}
const fireberries = findBerriesByType('Fire');
console.log('Fire-type Natural Gift berries:', fireberries);
Get Mega Stone for Species
function getMegaStone(speciesName) {
const allItems = Dex.items.all();
const megaStone = allItems.find(i =>
i.megaStone && i.megaStone[speciesName]
);
if (megaStone) {
return {
stone: megaStone.name,
forme: megaStone.megaStone[speciesName]
};
}
return null;
}
const venusaurStone = getMegaStone('Venusaur');
console.log(venusaurStone);
// { stone: 'Venusaurite', forme: 'Venusaur-Mega' }
List All Fling Powers
const flingPowers = new Map();
Dex.items.all()
.filter(i => i.fling && i.exists && !i.isNonstandard)
.forEach(i => {
const power = i.fling.basePower;
if (!flingPowers.has(power)) {
flingPowers.set(power, []);
}
flingPowers.get(power).push(i.name);
});
for (const [power, items] of flingPowers) {
console.log(`${power} BP: ${items.length} items`);
}
Related APIs
Species API
Find which Pokémon can use specific items
Moves API
Learn about moves that interact with items
Abilities API
Discover abilities that affect items
Formats Data
Check format-specific item restrictions
