Find an API

Search public APIs with auth details & Postman guides

← All APIs

PokéAPI

pokeapi.co · Media

Media No Auth Free & Open Games Pokemon Entertainment

The RESTful Pokémon API — all data from the Pokémon games including Pokémon, moves, abilities, types, items, and more. Completely free, no API key required.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get a Pokémon

Get full data for Pikachu including stats, moves, and sprites.

https://pokeapi.co/api/v2/pokemon/pikachu

Hover any highlighted part to learn what it does

curl -X GET "https://pokeapi.co/api/v2/pokemon/pikachu"
import requests
response = requests.get(
    "https://pokeapi.co/api/v2/pokemon/pikachu",
)
print(response.json())
const url = 'https://pokeapi.co/api/v2/pokemon/pikachu';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://pokeapi.co/api/v2/pokemon/pikachu"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://pokeapi.co/api/v2/pokemon/pikachu")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://pokeapi.co/api/v2/pokemon/pikachu";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get a move

Get details for the Thunderbolt move.

https://pokeapi.co/api/v2/move/thunderbolt

Hover any highlighted part to learn what it does

curl -X GET "https://pokeapi.co/api/v2/move/thunderbolt"
import requests
response = requests.get(
    "https://pokeapi.co/api/v2/move/thunderbolt",
)
print(response.json())
const url = 'https://pokeapi.co/api/v2/move/thunderbolt';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://pokeapi.co/api/v2/move/thunderbolt"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://pokeapi.co/api/v2/move/thunderbolt")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://pokeapi.co/api/v2/move/thunderbolt";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. No API key needed
  2. Try GET https://pokeapi.co/api/v2/pokemon/charizard
  3. Get all Pokémon: GET /pokemon?limit=20&offset=0
  4. Resources can be fetched by name or ID

Open documentation ↗