API Documentation

Simple endpoints, secure access, and fair daily limits for developers.

Join Discord

Authentication

Every request must include your API key in the Authorization header using Bearer token authentication.

Authorization Header
Authorization: Bearer <YOUR_API_KEY>
💡 Getting your API key: Log in to your account and visit your Profile page to find your unique API key.

API Endpoints

GET /pokemon

Search for Pokémon cards with optional filters

GET /pokemon/:query

Search using the query parameter in the URL path

Query Parameters

Parameter Type Description Default
query string Card name (LIKE search), exact ID, or card number
set string Set ID (exact) or Set name (LIKE search)
limit integer Number of results to return (max: 200) 20
offset integer Number of results to skip (pagination) 0

Code Examples

Search for Pikachu cards
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
  "https://pokefetch.info/pokemon?query=pikachu&limit=10"
simple-fetch.js
fetch("https://pokefetch.info/pokemon?query=pikachu", {
  headers: {
    "Authorization": "Bearer <YOUR_API_KEY>"
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error("Error:", error));
pokemon_api.py
import requests

API_KEY = "<YOUR_API_KEY>"
BASE_URL = "https://pokefetch.info"

headers = {
    "Authorization": f"Bearer {API_KEY}"
}

response = requests.get(
    f"{BASE_URL}/pokemon",
    headers=headers,
    params={"query": "charizard", "limit": 10}
)

if response.status_code == 200:
    data = response.json()
    print(f"Found {data['count']} cards")
else:
    print(f"Error: {response.status_code}")
pokemon.php
$apiKey = "<YOUR_API_KEY>";
$baseUrl = "https://pokefetch.info";

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $baseUrl . "/pokemon?query=bulbasaur&limit=5",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . $apiKey
    ]
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $data = json_decode($response, true);
    echo "Found " . $data['count'] . " cards\n";
} else {
    echo "Error: " . $httpCode . "\n";
}

Response Format

All successful responses return JSON with the following structure:

Example Response
{
  "count": 1,
  "limit": 20,
  "offset": 0,
  "data": [
    {
      "id": "xy7-54",
      "name": "Gardevoir",
      "card_number": "54",
      "set": {
        "id": "xy7",
        "name": "Ancient Origins",
        "series": "XY",
        "release_date": "2015-08-12",
        "logo_url": "https://pokefetch.info/img/pkmn/sets/xy7/logo.png",
        "symbol_url": "https://pokefetch.info/img/pkmn/sets/xy7/symbol.png"
      },
      "images": {
        "small": "https://pokefetch.info/img/pkmn/xy7/54.png",
        "large": "https://pokefetch.info/img/pkmn/xy7/54_hires.png"
      }
    }
  ]
}

Response Fields

Field Type Description
count integer Total number of results matching your query
limit integer Maximum results returned in this response
offset integer Number of results skipped (for pagination)
data array Array of card objects

Image URL Patterns

Card Images
Small:
img/pkmn/{set_id}/{card_number}.png
Large:
img/pkmn/{set_id}/{card_number}_hires.png
Set Assets
Logo:
img/pkmn/sets/{set_id}/logo.png
Symbol:
img/pkmn/sets/{set_id}/symbol.png

Rate Limits

5,000

Requests per day

00:00 UTC

Daily reset time

Custom

Higher limits available

Response Headers

Every API response includes rate limit information in the headers:

Rate Limit Headers
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4847
X-RateLimit-Reset: 1698969600
⚠️ Rate Limit Exceeded: If you exceed your rate limit, you'll receive a 429 Too Many Requests response. Wait until the reset time or contact support for a quota increase.
💎 Need Higher Limits? Contact our support team to discuss increased quotas for your project. We're happy to accommodate legitimate high-volume use cases.

About the Data

This is a simple API with a lean dataset focused on essential card information: names, IDs, card numbers, set details, and high-quality images. It is not intended to be a comprehensive or official Pokémon TCG database.

If you need additional fields or data points, you can enrich the results on your side or contact us about custom data requirements for your project.