PkmnPrices7 min de lecture

Passer de pokemontcg.io à PkmnPrices

Les clés de pokemontcg.io fonctionnent jusqu’au 1er mars 2027. Comment ses requêtes et ses réponses correspondent à PkmnPrices, le code pour déplacer une recherche de carte et ses prix, et les champs que vous perdez.

L’API Pokémon TCG de pokemontcg.io est dépréciée. Sa documentation indique que les nouvelles inscriptions sont fermées et que « existing API keys will continue to function through March 1, 2027 ». Si votre application appelle api.pokemontcg.io, c’est votre échéance.

Cet article couvre la partie code de la migration : comment une requête pokemontcg.io correspond à la nôtre, quelques lignes qui reconstruisent l’objet tcgplayer.prices que votre code lit probablement, et les champs de carte sans équivalent. Nous exploitons PkmnPrices, pesez donc ce conseil en conséquence. Si vous avez besoin du texte complet des cartes et des données de légalité, l’article comparatif traite de Scrydex, vers lequel pointe pokemontcg.io. Tous les détails sur pokemontcg.io ont été vérifiés dans sa documentation le 26 octobre 2026.

Ce qui change

pokemontcg.ioPkmnPrices
URL de basehttps://api.pokemontcg.io/v2https://api.pkmnprices.com/v1
En-tête de cléX-Api-Keyx-api-key
Sans cléFonctionne, avec des limites bien plus bassesImpossible ; une clé gratuite donne 500 crédits par jour
Identifiant de carteUne chaîne comme base1-4Un entier
Rechercheq=name:charizard subtypes:megaUn paramètre par champ : name, set_id, number, rarity et d’autres
Taille de pagepageSize, jusqu’à 250per_page, jusqu’à 100
Infos de paginationcount, totalCountUn objet pagination avec total et total_pages
Choix des champsselect=id,nameIndisponible ; chaque réponse a une forme fixe
PrixDans chaque cartePas dans les listes ; GET /v1/cards/:id renvoie un tableau prices

Authentification

Créez une clé dans le tableau de bord. L’offre gratuite ne demande pas de carte bancaire. Les noms d’en-tête ne sont pas sensibles à la casse : un code qui envoie déjà X-Api-Key continue de fonctionner dès qu’il contient une clé PkmnPrices.

bash
# pokemontcg.io
curl -H "X-Api-Key: $PTCG_KEY" \
"https://api.pokemontcg.io/v2/cards?q=name:charizard&pageSize=3"
# PkmnPrices
curl -H "x-api-key: $PKMNPRICES_KEY" \
"https://api.pkmnprices.com/v1/cards?name=charizard&per_page=3"

Recherche

pokemontcg.io propose un langage de requête dans q. Nous avons des paramètres séparés : chaque clause d’un q devient donc son propre paramètre.

q de pokemontcg.ioPkmnPrices
name:charizardname=charizard, une recherche par sous-chaîne
set.id:base1set_id=1, l’identifiant numérique de GET /v1/sets?name=Base Set
number:4number=4 ; les zéros initiaux sont ignorés
rarity:"Rare Holo"rarity=Rare Holo, écrit exactement comme dans les réponses
types:fireenergy_type=Fire
supertype:pokemoncard_type=Pokemon
subtypes:stage1stage=Stage 1 ; les autres sous-types n’ont pas de filtre
artist:"Mitsuhiro Arita"artist=arita, une sous-chaîne insensible à la casse
hp:120hp=120 ; valeurs exactes uniquement, pas de plages
orderBy=-set.releaseDatesort=price_asc ou price_desc, et seulement avec un filtre de prix

Retrouver la même carte

Un identifiant pokemontcg.io est un code d’extension et un numéro, base1-4. Le nôtre est un entier sans rapport avec lui. Cherchez donc l’extension par son nom une fois, et gardez le résultat.

js
const API = "https://api.pkmnprices.com/v1";
const get = async (path, params = {}) => {
const url = new URL(API + path);
for (const [key, value] of Object.entries(params)) {
if (value !== undefined) url.searchParams.set(key, value);
}
const res = await fetch(url, { headers: { "x-api-key": process.env.PKMNPRICES_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
return res.json();
};
// pokemontcg.io id "base1-4" becomes a set name plus a number here.
export const findCard = async (setName, number) => {
const sets = await get("/sets", { name: setName });
const set = sets.data.find((s) => s.name === setName);
if (!set) throw new Error(`no set called ${setName}`);
const cards = await get("/cards", { set_id: set.id, number });
if (cards.data.length === 0) throw new Error(`no card ${number} in ${setName}`);
// The list has no prices; the single-card call does.
return get(`/cards/${cards.data[0].id}`);
};

La carte renvoyée contient ses prix. L’appel de liste au milieu n’en contient pas, c’est pourquoi la dernière ligne est une seconde requête.

Prix

pokemontcg.io imbrique les prix sous la place de marché et l’impression : card.tcgplayer.prices.holofoil.market. Chez nous, ce sont des lignes d’un tableau prices, une par source, état et impression :

json
{
"source": "tcgplayer",
"currency": "USD",
"condition": "Near Mint",
"variant": "Holofoil",
"market_price": 412.5
}

Ceci reconstruit l’objet que votre code lit déjà, pour les trois impressions les plus utilisées :

js
// card.tcgplayer.prices.holofoil.market, rebuilt from the prices array.
const VARIANT_KEY = {
Normal: "normal",
Holofoil: "holofoil",
"Reverse Holofoil": "reverseHolofoil",
};
export const tcgplayerPrices = (card) => {
const prices = {};
for (const row of card.prices) {
if (row.source !== "tcgplayer" || row.condition !== "Near Mint") continue;
const key = VARIANT_KEY[row.variant];
if (key) prices[key] = { market: row.market_price };
}
return prices;
};

Certains champs ne sont pas repris :

  • low, mid, high et directLow ne sont pas renvoyés. Chaque ligne a un seul market_price.
  • Les moyennes et tendances Cardmarket (trendPrice, avg1, avg7, avg30 et les autres) ne sont pas renvoyées. Le market_price d’une ligne Cardmarket est l’offre actuelle fiable la plus basse pour cet état et cette impression, en EUR, à partir de Pro.
  • Les éditions 1re apparaissent comme des variantes à part. Lisez les chaînes de variante dans une vraie réponse avant de les faire correspondre.

En échange, vous obtenez un prix pour chaque état et pas seulement Near Mint, un historique quotidien des prix jusqu’à un an, les annonces en direct de TCGplayer et Cardmarket, et les ventes eBay. La documentation détaille chacun.

Ce que vous ne trouverez pas

Nos cartes portent les champs dont une application de prix a besoin et laissent de côté le texte de règles complet. Ceux-ci n’ont pas d’équivalent :

  • legalities et regulationMark
  • supertype et subtypes (seuls card_type et stage existent)
  • rules, evolvesFrom, evolvesTo et nationalPokedexNumbers
  • ancientTrait, ainsi que les talents et attaques sous forme d’objets structurés : chez nous, ce sont des textes
  • Les images petite et grande : il y a un seul image_url
  • La série, la date de sortie et le ptcgoCode d’une extension : une extension a id, name, language et card_count

Si votre application en a besoin, gardez une copie locale pour cela et utilisez l’API pour les prix. Les données JSON historiques du dépôt pokemon-tcg-data peuvent toujours être clonées, même si son README les dit hérités et annonce l’arrêt du projet. Scrydex a repris la base complète des cartes.

Crédits et pagination

Un crédit est un élément renvoyé. Une page de 100 cartes coûte 100 crédits, et la liste n’a pas de prix : chaque consultation de prix coûte donc un crédit de plus. Pro autorise 20 000 crédits par jour.

Une application qui copie toutes les cartes ne tient pas en une journée. Il y a plus de 80 000 cartes : toutes les lister une fois coûte à peu près autant de crédits. Étalez-le sur quelques jours et gardez les identifiants. Pour les prix de tout le catalogue, l’export du catalogue de l’offre Scale renvoie chaque prix actuel dans un seul fichier, et un téléchargement ne coûte aucun crédit.

Migrer sans jour J

Laissez pokemontcg.io fonctionner jusqu’en mars. Prenez une clé gratuite et lancez quelques requêtes avec le code ci-dessus à côté de vos appels actuels, pour comparer les chiffres. Stockez notre identifiant de carte à côté du vôtre. Basculez ensuite les lectures et laissez l’ancienne clé en place jusqu’à être sûr. La page des offres liste ce que comprend chaque niveau.

Quand les clés de pokemontcg.io cessent-elles de fonctionner ?
Sa documentation indique que les clés existantes continuent de fonctionner jusqu’au 1er mars 2027. Les nouvelles inscriptions sont déjà fermées.
Puis-je utiliser ma clé pokemontcg.io avec PkmnPrices ?
Non. Créez une clé PkmnPrices dans le tableau de bord. L’offre gratuite donne 500 crédits par jour et ne demande pas de carte bancaire.
PkmnPrices renvoie-t-il des données de légalité ou de rotation ?
Non. Les cartes portent des prix, des attributs comme le stade, le type, les PV, la faiblesse et le texte des attaques, et une image, mais ni légalités ni marques de régulation. Gardez une copie locale pour cela.
Existe-t-il un SDK ?
Oui, des SDK officiels pour JavaScript et Python. La page SDK de la documentation montre les deux.
PkmnPrices

Écrit par

PkmnPrices

PkmnPrices est une API pour développeurs consacrée aux données du JCC Pokémon : prix TCGPlayer quotidiens pour plus de 80 000 cartes, plus de 800 extensions et les produits scellés.