Discover/pokeapi.co API
live

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.

Endpoint health
verified 2h ago
get_pokemon
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago
Try it
Pokemon name (e.g. 'pikachu', 'charizard') or numeric Pokedex ID (e.g. '25', '6'). Case-insensitive.
api.parse.bot/scraper/1c78222e-8dec-4155-9804-f37c9a59a141/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
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'
Or use the typed Python SDKfully typed · autocompletes

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")
All endpoints · 1 totalmissing one? ·

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.

Input
ParamTypeDescription
pokemon_idrequiredstringPokemon name (e.g. 'pikachu', 'charizard') or numeric Pokedex ID (e.g. '25', '6'). Case-insensitive.
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • 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
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 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.

Frequently asked questions
Does PokéAPI have an official developer API?+
Yes. PokéAPI provides a free, public REST API at https://pokeapi.co/docs/v2. The Parse API builds a structured, single-call wrapper around that data, consolidating types, stats, abilities, and evolution chains into one response.
How does the evolution_chain field represent branching evolutions like Eevee?+
The evolution_chain array returns stages in order with name, trigger, min_level, and item fields. For Pokémon with branching paths — like Eevee's multiple evolutions — all branches are included in the array. Each branch entry carries its own trigger and item where applicable, so you can distinguish, for example, that Vaporeon requires a Water Stone while Espeon requires high friendship.
Does the API return move lists or held items for a Pokémon?+
Not currently. The endpoint covers types, base_stats, abilities, and evolution_chain. Move lists, held items, and egg groups are not included in the current response. You can fork the API on Parse and revise it to add those fields from additional endpoints.
Can I look up a Pokémon by its regional form, like Alolan Raichu?+
Regional forms are accessible using their hyphenated name variant — for example, 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.
Does the API return data for Mega Evolutions or Gigantamax forms?+
Mega and Gigantamax forms are not surfaced as distinct evolution_chain entries, since the chain reflects species-level evolution rather than battle-only transformations. Base stats and types for the standard form are returned. You can fork the API on Parse and revise it to pull form-specific stat overrides for those variants.
Page content last updated . Spec covers 1 endpoint from pokeapi.co.
Related APIs in EntertainmentSee all →