Kanto Tactics · API
einoow.com/api/meta/kanto/
Kanto Tactics data for the community
Free public data to build websites, bots or apps: the Meta (comps, Pokémon, items, types, boons), where players place their units, and the game data. Read-only, no keys, no sign-up. Any website can read it from the browser (open CORS).
Short link: einoow.com/kanto-tactics/api. Questions and requests: the Kanto Tactics Discord.
Quick start
The top 5 Meta comps with their Pokémon names (JavaScript, in the browser or Node 18+):
const api = 'https://einoow.com/api/meta/kanto/';
const meta = await fetch(api + 'meta.json').then(r => r.json());
const data = await fetch(api + 'data.json').then(r => r.json());
const nameOf = u => data.lines[u.line]?.stars[(u.star ?? 1) - 1]?.name ?? u.line;
for (const c of meta.comps.slice(0, 5))
console.log(c.tier, c.units.map(nameOf).join(', '), 'avg place', c.avg);
Routes
| Route | What it is | Updated |
|---|---|---|
meta.json | The Meta for the last 7 days (Ranked, humans only; every rules version in that window, see “Versions”): comps with tier, average place, top 4, wins and usage; Pokémon, items, types and boons; real placement and a stage-by-stage guide for each comp | daily (03:40 UTC) |
data.json | Game data: each Pokémon with its stats per ★ and its ability (in-game text in es/en and power), passives, items with their effect and recipe, types with thresholds and values, boons, Seals (since rules 34) and PvP rules (shop odds, XP, pool sizes). Without ?rules, the current version; ?rules=N for a given one (404 if not available) | with each game version |
ranking.json | PvP Top 100 (pos, nick, #tag, league and LP) and the Tower: the weekly Tower (current and last week) and the all-time one (pos, nick, #tag and floor). The same as the in-game ranking | hourly |
campana.json | Campaign and Tower: win rate at each gym and floor, and which teams (cores), Pokémon, ★ and items clear them. ?dif=1 Normal only, ?dif=2 Trainer only | daily (03:40 UTC) |
Reading data.json
- Pokémon (
lines, by line id):ccost,ttypes,sPokédex number of each stage andntheir names,rangein hexes,passive(Ghost and Dragon) andstars: one card per ★ withstats(base, no items or types: HP, Attack, Sp. Atk, attack speed, Defense, Sp. Def, crit %, range, Energy and starting Energy) andmove(name, type, Energy,powerat that ★ (since rules 34, the real hit against an average target, as in the in-game card),scale= how much comes from Attack and Sp. Atk, andtextin es/en, the same as the in-game card). Lines with two forms (depending on their items) haveflex.physandflex.spec. - Items (
items):k= part (component) · full (combined) · tool;recipe= its two components,inherits= stats it inherits from them,text= full effect in es/en.recipes= the [a, b, combined] table. - Types (
traits):ththresholds,valuesthe value at each level anddescthe text with{v}in place. - Boons (
boons): card text in the Tower and in PvP per pick (pvp[].round2-1, 3-2, 4-2;weight0 = not offered at that pick).pvp.boonssays whether they are on in PvP. - Seals (
seals, since rules 34): by id,code,rarity(1 Common · 2 Rare · 3 Mythic),cat,rounds(the pick where it shows up: 2-1, 3-2 or 4-2),nameandtext[]with the card line and, when it has one, thedetail, in es/en with the in-game numbers. Type templates carry{T}in the text andtypes; heroes carryhero(their line).pvp.seals= rarity pattern, cards per offer, rerolls and modes with Seals. - PvP rules (
pvp):pvp.odds[level]= % of each cost 1-5 in the shop,pool[cost]= copies of each Pokémon,xpToNext, interest, streaks, reroll cost and damage per stage.
Reading ranking.json and campana.json
- ranking.json:
pvp[]=pos,nick,tag,league(league id; order inleagues),lp(LP in that league) andpoints(ladder points).week= the weekly Tower, the one shown in-game since rules 34:n(week),ends(close, UTC),top[](current week) andlast[](last week), withpos,nick,tag,floorandlosses(tie-breaker);nullif it could not be read.tower[]= the all-time Tower (pos,nick,tagandfloor).generated= when it was copied. It is the game's public ranking, nothing more: don't call the game's database. - campana.json:
modes.camp(campaign) andmodes.torre(Tower), each with its rules version:stops("4:Brock"in the campaign,"10:snorlax"or"24:elite"in the Tower),cores(a 3-line core at a stop),lines,stars,itemsandholders(line + item). Numbers:win% with its 95 % intervallo-hi,exp= expected at those same stops andd= the difference,first= first-try %,tries= attempts per win,flagstrong/weak only with a large enough sample (thresholds.minFlag).
Reading meta.json
- Ids:
line(evolution line:charmanderalso covers Charmeleon and Charizard), itemidandtypeare the game ids. Names are in data.json. - Numbers:
avgaverage place (1-8, lower is better) withic= ±95 % CI;top4,winandusein %;ngames andneeffective games (the one that matters for confidence).tier= S/A/B/C againstref. With a small sample, trust the interval, not the average. - Placement (
comps[].placement.cells):cell0-27 on your own side of the hex board (7 columns × 4 rows):cell = row × 7 + col, row 0 = front line (closest to the enemy), 3 = back. Odd rows are shifted half a hex to the right.share= % of that comp's games with that unit on that cell. It shows where players put units (their last board), not proof that it is best. - Stage guide (
comps[].guide.stages): how the comp stood at the end of stages 3 and 4: units, level, HP and gold (from real games; only for comps with enough sample). Some units may come withstar: nullwhen there is not enough data. - Boons (
boons):round1-3 = pick (2-1, 3-2, 4-2),null= any pick. - Versions:
vis the format version andrulesthe newest game version. The Meta sums the last days (from-to,days) across every version in that window (versions, each with its games). A comp, Pokémon, item, type or boon withonlyRulesuses only that version (the newest, which already has plenty of games).
Stability
- Fields may be added at any time without notice: ignore the ones you don't know.
- An existing route or field is never removed or changed in meaning without notice in the Changelog and on Discord, at least 2 weeks ahead. Breaking format changes bump
v. rulesis the game version: data.json numbers change with each version (balance). Pin one withdata.json?rules=N.
Limits
- Data changes once a day (the ranking, hourly): poll at most once an hour and cache it on your side.
ETagandIf-None-Matchwork (304). - Requests that miss the cache are rate-limited per IP (429 with
retry-after). Abuse may be cut off without notice. GET/HEADonly. There is no per-player data (no single games, no match histories): only aggregates with a minimum sample. The only nicknames are the Top 100 already shown by the in-game ranking.
Terms
- Free to use. You are responsible for what you do with the data. It is provided as is, with no guarantee of availability or accuracy.
- Credit the source with a link: “Data: Kanto Tactics · einoow.com”.
- Don't present your project as official or use the logo as if it were.
- Don't scrape the game, the PvP server or its database: use these routes.
- The format may change as described in Stability. Access may be revoked for abuse.
Changelog
- 2026-10-22 · data.json adds the Seals (
seals,pvp.seals). ranking.json adds the weekly Tower (week), the one shown in-game. Since rules 34,poweris the real hit against an average target, as in the in-game card.guia/removed (simulator guides were never published). Short link einoow.com/kanto-tactics/api. The page is now English only. - 2026-10-21 · Full data.json per rules version (stats, abilities, items, types, boons and PvP rules), ranking.json and campana.json.
- 2026-10-20 · API opened to the community: meta.json with real placement and boons.