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.
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.
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.
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.
| Endpoint | Returns |
|---|---|
/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. |
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'
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'
| Name | Notes |
|---|---|
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. |
/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.
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.