API Documentation
Simple endpoints, secure access, and fair daily limits for developers.
Join DiscordQuick Navigation
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.