Pokéapi API

Beginner's Pick Games & Comics / No Auth Required Beginner HTTPS
Free to Use
90 A+
Measured Score 0 50 100 Speed 27/30 Consistency 20/20 Security 20/20 Browser access 15/15 Transparency 8/15 TESTED 2026-08-10

Overview

PokéAPI is one of the most popular free APIs for developers and provides comprehensive Pokémon data including stats, moves, abilities, and evolutions for all 1000+ Pokémon. No API key is required, making it an ideal choice for beginners learning to work with REST APIs. You can query data by Pokémon name or National Pokédex number.

Beginner Tip

You can reference Pokémon by either their name (lowercase) or their Pokédex number in the URL. Start with simple endpoints like /pokemon/pikachu before exploring nested resources.

Measurement Record

What actually happened when we called this API from our own infrastructure. Every value below was recorded by the request, not copied from the provider's documentation.

Request
GET https://pokeapi.co/api/v2/pokemon/pikachu
Result
HTTP 200 · application/json · 290,335 bytes · compressed
Response time
38 ms (median of 3) · fastest 37 ms
Transport
TLSv1.3 · TLS_AES_256_GCM_SHA384 · certificate issued by Google Trust Services
Browser CORS
Allowed — Access-Control-Allow-Origin: *
Served by
cloudflare
Recorded
2026-08-10

Fields Returned

Top-level fields present in the response we captured, with the type and value we actually received.

Field Type Value received
abilities array [1 item]
base_experience integer 112
cries object {2 fields}
forms array [1 item]
game_indices array [1 item]
height integer 4
held_items array [1 item]
id integer 25
is_default boolean true
location_area_encounters string (url) https://pokeapi.co/api/v2/pokemon/25/encounters
moves array [1 item]
name string pikachu
order integer 35
past_abilities array [1 item]

Captured Response

Captured from a real request to https://pokeapi.co/api/v2/pokemon/pikachu on 2026-08-10. Long arrays and nested objects are truncated to keep the shape readable.

JSON Response · Captured
{
  "abilities": [
    {
      "ability": {
        "…": "(2 more fields)"
      },
      "is_hidden": false,
      "slot": 1
    }
  ],
  "base_experience": 112,
  "cries": {
    "latest": "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/latest/25.ogg",
    "legacy": "https://raw.githubusercontent.com/PokeAPI/cries/main/cries/pokemon/legacy/25.ogg"
  },
  "forms": [
    {
      "name": "pikachu",
      "url": "https://pokeapi.co/api/v2/pokemon-form/25/"
    }
  ],
  "game_indices": [
    {
      "game_index": 84,
      "version": {
        "…": "(2 more fields)"
      }
    }
  ],
  "height": 4,
  "held_items": [
    {
      "item": {
        "…": "(2 more fields)"
      },
      "version_details": [
        {
          "…": "(2 more fields)"
        }
      ]
    }
  ],
  "id": 25,
  "is_default": true,
  "location_area_encounters": "https://pokeapi.co/api/v2/pokemon/25/encounters",
  "moves": [
    {
      "move": {
        "…": "(2 more fields)"
      },
      "version_group_details": [
        {
          "…": "(4 more fields)"
        }
      ]
    }
  ],
  "name": "pikachu",
  "order": 35,
  "past_abilities": [
    {
      "abilities": [
        {
          "…": "(3 more fields)"
        }
      ],
      "generation": {
        "…": "(2 more fields)"
      }
    }
  ],
  "…": "(7 more fields)"
}

Field Reference

id National Pokédex number for the Pokémon
name Lowercase name of the Pokémon used in API URLs
base_experience Base experience points gained when this Pokémon is defeated
height Height of the Pokémon in decimetres (divide by 10 for metres)

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "https://pokeapi.co/api/v2/pokemon/pikachu";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

How This API Fails

We deliberately sent this API a broken request and recorded exactly what came back on 2026-08-10. Knowing the shape of an error before you hit it makes error handling much easier to write.

HTTP 400 Requesting a path that does not exist text/plain
Bad Request

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

404 Not Found The Pokémon name or ID in the URL does not match any entry in the database
Use lowercase names without special characters (e.g., "mr-mime" instead of "Mr. Mime") or use the National Pokédex number instead
Slow response on first request PokéAPI caches responses, so the very first request for a resource may be slower
Implement client-side caching using a library or store responses in localStorage to avoid repeated requests for the same data
CORS error in browser Some older browser setups may block the request depending on your configuration
PokéAPI fully supports CORS, so ensure you are fetching from https://pokeapi.co and not an older v1 URL

Measured Score Breakdown

Live HTTP request to the API endpoint

Speed 27/30
Consistency 20/20
Security 20/20
Browser access 15/15
Transparency 8/15
Endpoint Response Time 38ms

Fully tested on Aug 10, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS UNKNOWN
Category Games & Comics
Difficulty Beginner
Endpoint last called: 2026-08-10

Related Tags

Similar APIs

View All →