pokeapi.co APIpokeapi.co ↗
Look up any Pokémon by name or Pokédex ID. Returns types, all six base stats, abilities with hidden flag, and the full evolution chain in one call.
curl -X GET 'https://api.parse.bot/scraper/1c78222e-8dec-4155-9804-f37c9a59a141/get_pokemon?pokemon_id=pikachu' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed Python client. Install the CLI, sign in, then pull this API’s generated client:
pip install parse-sdk parse login parse add --marketplace pokeapi-co-api
parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: PokeAPI SDK - look up Pokemon by name or ID."""
from parse_apis.PokeAPI_Pokemon_Lookup import PokeAPI, PokemonNotFound
client = PokeAPI()
# Fetch a Pokemon by name - typed field access on the result.
pokemon = client.pokemons.get(pokemon_id="charizard")
print(f"{pokemon.name} (#{pokemon.id}): types={pokemon.types}")
print(f" HP={pokemon.base_stats.hp}, Attack={pokemon.base_stats.attack}, Speed={pokemon.base_stats.speed}")
# Walk abilities
for ability in pokemon.abilities:
print(f" Ability: {ability.name} (hidden={ability.is_hidden})")
# Walk the evolution chain
for stage in pokemon.evolution_chain:
print(f" Evolution: {stage.name}, trigger={stage.trigger}, level={stage.min_level}")
# Typed error handling for a non-existent Pokemon.
try:
client.pokemons.get(pokemon_id="notreal")
except PokemonNotFound as exc:
print(f"Expected error: {exc}")
print("exercised: pokemons.get / base_stats / abilities / evolution_chain / PokemonNotFound")
Retrieve a Pokemon by name or numeric ID. Returns the Pokemon's types, all six base stats, abilities (with hidden flag), and the complete evolution chain for its species. The evolution chain is fetched by following the species to evolution-chain link, so one call resolves three upstream requests. A non-existent name or ID returns input_not_found.
| Param | Type | Description |
|---|---|---|
| pokemon_idrequired | string | Pokemon name (e.g. 'pikachu', 'charizard') or numeric Pokedex ID (e.g. '25', '6'). Case-insensitive. |
{
"type": "object",
"fields": {
"id": "integer - National Pokedex number",
"name": "string - canonical lowercase name",
"types": "array of type name strings",
"abilities": "array of objects with name (string) and is_hidden (boolean)",
"base_stats": "object mapping stat name to base value (hp, attack, defense, special-attack, special-defense, speed)",
"evolution_chain": "array of evolution stages in order, each with name, trigger, min_level, and item when applicable"
},
"sample": {
"data": {
"id": 25,
"name": "pikachu",
"types": [
"electric"
],
"abilities": [
{
"name": "static",
"is_hidden": false
},
{
"name": "lightning-rod",
"is_hidden": true
}
],
"base_stats": {
"hp": 35,
"speed": 90,
"attack": 55,
"defense": 40,
"special-attack": 50,
"special-defense": 50
},
"evolution_chain": [
{
"name": "pichu"
},
{
"name": "pikachu",
"trigger": "level-up",
"min_level": null
},
{
"item": "thunder-stone",
"name": "raichu",
"trigger": "use-item",
"min_level": null
}
]
},
"status": "success"
}
}About the pokeapi.co API
The PokéAPI API exposes one endpoint — get_pokemon — that returns 6 response objects covering types, base stats, abilities, and evolution chains for any Pokémon. Pass a name like pikachu or a numeric Pokédex ID like 25 and get back a structured payload that includes every base stat, each ability's hidden flag, and ordered evolution stages with their triggers and level requirements.
What the API Returns
The get_pokemon endpoint accepts a single pokemon_id parameter — either a lowercase name (e.g. charizard) or a National Pokédex number (e.g. 6). Input is case-insensitive. The response includes the Pokédex integer id, the canonical name, a types array of type-name strings, and an abilities array where each entry carries a name string and an is_hidden boolean that distinguishes hidden abilities from standard ones.
Base Stats and Evolution Chain
The base_stats object maps all six stat names — hp, attack, defense, special-attack, special-defense, and speed — to their integer base values. The evolution_chain field resolves the full chain for the Pokémon's species and returns an ordered array of evolution stages. Each stage carries a name, a trigger (e.g. level-up, use-item), an optional min_level integer, and an optional item name when the evolution requires one.
Coverage Notes
The API covers the full National Pokédex, so both older generation Pokémon and more recently added entries are reachable by name or ID. The single endpoint resolves species and evolution-chain data in one call, so callers do not need to make separate requests to piece together the chain.
The pokeapi.co API is a managed, monitored endpoint for pokeapi.co — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pokeapi.co changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pokeapi.co API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Pokédex reference app that displays types, stats, and evolution paths from a single lookup
- Power a team-builder tool that reads base stats (attack, speed, special-attack) for competitive analysis
- Render evolution trees in a fan game or quiz app using the ordered evolution_chain stages and triggers
- Filter and compare hidden abilities across Pokémon for a breeding or strategy guide
- Populate a database of Pokémon type matchups by iterating Pokédex IDs and collecting the types array
- Generate stat radar charts by pulling all six base_stats fields for a given Pokémon
- Drive a trivia game that quizzes players on evolution triggers and required items from the evolution_chain
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does PokéAPI have an official developer API?+
How does the evolution_chain field represent branching evolutions like Eevee?+
Does the API return move lists or held items for a Pokémon?+
Can I look up a Pokémon by its regional form, like Alolan Raichu?+
raichu-alola. The pokemon_id parameter is case-insensitive and accepts the same slugs that the National Pokédex uses for alternate forms. If a form slug is unknown, the endpoint will return an error rather than falling back to the base form.