Pokébattler API & Developer Reference

Public HTTP endpoints and MCP server for Pokémon GO raid counters, battle simulation, and rankings. Back to Pokébattler.

Pokébattler runs large-scale Monte Carlo combat simulations of Pokémon GO battles using the game's real damage, energy, and dodging mechanics. The same data behind every page on this site is available over a public HTTP API and, for AI assistants, over a Model Context Protocol server.

For AI assistants and LLM tools

If you are building an assistant, use the MCP server rather than the HTTP API. Raw API responses are enormous — a single raid-counters query is about 1.3 MB of JSON and the full Pokédex is about 7 MB. The MCP server runs the same simulations and trims each result to roughly 1–5 KB, which is the difference between one usable tool call and a blown context window.

https://mcp.pokebattler.com/mcp   (streamable HTTP)

Tools cover raid counters, best attackers, the live raid rotation, Max/Dynamax battle counters, Team GO Rocket lineups, single-fight simulation, team building, and Pokédex lookups. A free Pokébattler account is required; tools that read a trainer's own Pokémon collection require a subscription. See also /llms.txt.

Reading the data

Four conventions cause most misreadings of Pokébattler results:

Results are simulated, not hand-curated, and they change whenever Niantic changes movesets, stats, or the raid rotation. Cached copies go stale within days.

HTTP API

Base URL:

https://fight.pokebattler.com

All endpoints below are GET, return JSON, and require no authentication. Site URLs and API URLs are deliberately paired: a page at www.pokebattler.com/<path> generally loads the same <path> from fight.pokebattler.com, so you can read any API URL straight off the address bar.

EndpointReturns
/raids The current raid rotation, grouped into tiers, plus announced upcoming raids.
/raids/defenders/{boss}/levels/{tier}/attackers/levels/{level}/strategies/{attack}/{defense} Ranked counters for one raid boss.
/rankings/attackers/levels/{level}/defenders/levels/{level}/strategies/{attack}/{defense} General attacker rankings across the meta, by type.
/rankings/defenders/levels/{level}/attackers/levels/{level}/strategies/{attack}/{defense} Gym defender rankings.
/fights/attackers/{a}/quickMoves/{m}/cinMoves/{m}/cp/{cp}/defenders/{d}/quickMoves/{m}/cinMoves/{m}/cp/{cp}/strategies/{attack}/{defense} One specific matchup with explicit movesets.
/pokemon Full Pokédex: base stats, typings, and available movesets (~7 MB).
/moves Every fast and charged move with power, energy, and duration.
/rocket Current Team GO Rocket lineups.

Example: counters for a raid boss

curl 'https://fight.pokebattler.com/raids/defenders/RILLABOOM_GIGANTAMAX\
/levels/RAID_LEVEL_6/attackers/levels/40\
/strategies/CINEMATIC_ATTACK_WHEN_POSSIBLE/DEFENSE_RANDOM_MC\
?sort=ESTIMATOR&weatherCondition=NO_WEATHER\
&dodgeStrategy=DODGE_REACTION_TIME&aggregation=AVERAGE'

Example: one specific matchup

curl 'https://fight.pokebattler.com/fights\
/attackers/SNORLAX/quickMoves/LICK_FAST/cinMoves/BODY_SLAM/cp/1850\
/defenders/DRAGONITE/quickMoves/DRAGON_BREATH_FAST/cinMoves/DRAGON_PULSE/cp/2345\
/strategies/QUICK_ATTACK_ONLY/DEFENSE'

Common parameters

NameNotes
sort ESTIMATOR (trainers needed, lower is better), OVERALL, POWER, TIME.
weatherCondition NO_WEATHER, SUNNY, RAINY, PARTLY_CLOUDY, CLOUDY, WINDY, SNOW, FOG.
dodgeStrategy DODGE_REACTION_TIME is the realistic default; DODGE_100 and DODGE_NONE bracket the best and worst cases.
aggregation AVERAGE or BEST.
Boss and Pokémon IDs Upper snake case, e.g. MEWTWO. Forms use suffixes: RILLABOOM_GIGANTAMAX, CHARIZARD_MEGA_Y, GIRATINA_ORIGIN_FORM. Shadow Pokémon are a separate flag, not a name suffix.
Ranking queries are expensive. The /rankings/* endpoints simulate the full meta on demand and can time out under load; the site's own ranking pages are served from a precomputed cache. For anything latency-sensitive, use the MCP server or the per-boss /raids/defenders/... endpoint, which answers from pre-simulated results.

Fair use

These endpoints are the ones that power this website, and simulation is genuinely expensive to run — a single deep query can occupy a simulation worker for seconds. Please cache aggressively, avoid crawling the combinatorial attacker × defender × moveset URL space, and identify your client with a descriptive User-Agent. Sustained automated load may be rate limited. If you are building something that needs more than occasional access, get in touch — the MCP server exists precisely so that assistants do not have to scrape.

Attribution to Pokébattler is required when you publish results derived from this data. See the Terms of Service and Privacy Policy.