Passare da pokemontcg.io a PkmnPrices
Le chiavi di pokemontcg.io funzionano fino al 1° marzo 2027. Come le sue richieste e risposte corrispondono a PkmnPrices, il codice per spostare una ricerca di carta e i suoi prezzi, e i campi che perderai.
La Pokémon TCG API di pokemontcg.io è deprecata. La sua
documentazione dice che le nuove registrazioni sono
chiuse e che «existing API keys will continue to function through March 1, 2027».
Se la tua app chiama api.pokemontcg.io, quella è la tua scadenza.
Questo articolo è la parte di codice del passaggio: come una richiesta a
pokemontcg.io corrisponde alla nostra, qualche riga che ricostruisce l’oggetto
tcgplayer.prices che il tuo codice probabilmente legge, e i campi delle carte
senza equivalente. Gestiamo noi PkmnPrices, quindi valuta il consiglio di
conseguenza. Se ti servono il testo completo delle carte e i dati di legalità,
l’articolo di confronto tratta Scrydex, verso
cui punta pokemontcg.io. Ogni dettaglio su pokemontcg.io è stato verificato nella
sua documentazione il 26 ottobre 2026.
Cosa cambia
| pokemontcg.io | PkmnPrices | |
|---|---|---|
| URL di base | https://api.pokemontcg.io/v2 | https://api.pkmnprices.com/v1 |
| Header della chiave | X-Api-Key | x-api-key |
| Senza chiave | Funziona, con limiti molto più bassi | Non è possibile; una chiave gratuita dà 500 crediti al giorno |
| Id della carta | Una stringa come base1-4 | Un intero |
| Ricerca | q=name:charizard subtypes:mega | Un parametro per campo: name, set_id, number, rarity e altri |
| Dimensione pagina | pageSize, fino a 250 | per_page, fino a 100 |
| Info di paginazione | count, totalCount | Un oggetto pagination con total e total_pages |
| Scelta dei campi | select=id,name | Non disponibile; ogni risposta ha una forma fissa |
| Prezzi | Dentro ogni carta | Non nelle liste; GET /v1/cards/:id restituisce un array prices |
Autenticazione
Crea una chiave nella dashboard. Il piano gratuito non richiede una
carta. I nomi degli header non distinguono le maiuscole, quindi il codice che
invia già X-Api-Key continua a funzionare appena contiene una chiave PkmnPrices.
# pokemontcg.iocurl -H "X-Api-Key: $PTCG_KEY" \"https://api.pokemontcg.io/v2/cards?q=name:charizard&pageSize=3"# PkmnPricescurl -H "x-api-key: $PKMNPRICES_KEY" \"https://api.pkmnprices.com/v1/cards?name=charizard&per_page=3"
Ricerca
pokemontcg.io ha un linguaggio di query in q. Noi abbiamo parametri separati,
quindi ogni clausola di un q diventa un parametro a sé.
q di pokemontcg.io | PkmnPrices |
|---|---|
name:charizard | name=charizard, una corrispondenza per sottostringa |
set.id:base1 | set_id=1, l’id numerico da GET /v1/sets?name=Base Set |
number:4 | number=4; gli zeri iniziali vengono ignorati |
rarity:"Rare Holo" | rarity=Rare Holo, scritto esattamente come nelle risposte |
types:fire | energy_type=Fire |
supertype:pokemon | card_type=Pokemon |
subtypes:stage1 | stage=Stage 1; gli altri sottotipi non hanno filtro |
artist:"Mitsuhiro Arita" | artist=arita, una sottostringa senza distinzione di maiuscole |
hp:120 | hp=120; solo valori esatti, nessun intervallo |
orderBy=-set.releaseDate | sort=price_asc o price_desc, e solo con un filtro di prezzo |
Ritrovare la stessa carta
Un id di pokemontcg.io è un codice di set e un numero, base1-4. Il nostro è un
intero senza relazione con quello. Cerca quindi il set per nome una volta e
conserva il risultato.
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 carta restituita contiene i suoi prezzi. La chiamata di lista nel mezzo no, per questo l’ultima riga è una seconda richiesta.
Prezzi
pokemontcg.io annida i prezzi sotto il marketplace e la stampa:
card.tcgplayer.prices.holofoil.market. I nostri sono righe di un array
prices, una per fonte, condizione e stampa:
{"source": "tcgplayer","currency": "USD","condition": "Near Mint","variant": "Holofoil","market_price": 412.5}
Questo ricostruisce l’oggetto che il tuo codice legge già, per le tre stampe più usate dalle app:
// 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;};
Alcuni campi non passano:
low,mid,highedirectLownon vengono restituiti. Ogni riga ha un solomarket_price.- Le medie e le tendenze di Cardmarket (
trendPrice,avg1,avg7,avg30e il resto) non vengono restituite. Ilmarket_pricedi una riga Cardmarket è l’offerta attuale affidabile più bassa per quella condizione e stampa, in EUR, da Pro in su. - Le prime edizioni compaiono come varianti a parte. Leggi le stringhe delle varianti in una risposta reale prima di associarle.
In cambio ottieni un prezzo per ogni condizione e non solo Near Mint, uno storico giornaliero dei prezzi fino a un anno, le inserzioni in diretta di TCGplayer e Cardmarket, e le vendite eBay. La documentazione descrive ciascuno.
Cosa non troverai
Le nostre carte hanno i campi che servono a un’app di prezzi e lasciano fuori il testo completo delle regole. Questi non hanno equivalente:
legalitieseregulationMarksupertypeesubtypes(esistono solocard_typeestage)rules,evolvesFrom,evolvesToenationalPokedexNumbersancientTrait, e abilità e attacchi come oggetti strutturati: da noi sono testo- Immagini piccola e grande: c’è un solo
image_url - Serie, data di uscita e
ptcgoCodedi un set: un set haid,name,languageecard_count
Se la tua app ne ha bisogno, tieni una copia locale per quelli e usa l’API per i prezzi. I dati JSON storici nel repository pokemon-tcg-data si possono ancora clonare, anche se il suo README lo definisce legacy e dice che il progetto sta per essere dismesso. Scrydex ha ereditato il database completo delle carte.
Crediti e paginazione
Un credito è un elemento restituito. Una pagina di 100 carte costa 100 crediti, e la lista non ha prezzi, quindi ogni consultazione di prezzo costa un credito in più. Pro consente 20.000 crediti al giorno.
Un’app che replica tutte le carte non sta in un giorno. Ci sono più di 80.000 carte, quindi elencarle tutte una volta costa più o meno altrettanti crediti: distribuiscilo su qualche giorno e conserva gli id. Per i prezzi di tutto il catalogo, l’esportazione del catalogo del piano Scale restituisce ogni prezzo attuale in un solo file, e un download non costa crediti.
Passare senza un giorno X
Lascia attivo pokemontcg.io fino a marzo. Prendi una chiave gratuita ed esegui qualche consultazione con il codice qui sopra accanto alle tue chiamate attuali, così puoi confrontare i numeri. Salva il nostro id della carta accanto al tuo. Poi sposta le letture e lascia la vecchia chiave finché non sei sicuro. La pagina dei piani elenca cosa include ogni livello.
- Quando smettono di funzionare le chiavi di pokemontcg.io?
- La sua documentazione dice che le chiavi esistenti continuano a funzionare fino al 1° marzo 2027. Le nuove registrazioni sono già chiuse.
- Posso usare la mia chiave pokemontcg.io con PkmnPrices?
- No. Crea una chiave PkmnPrices nella dashboard. Il piano gratuito dà 500 crediti al giorno e non richiede una carta.
- PkmnPrices restituisce dati di legalità o di rotazione?
- No. Le carte hanno prezzi, attributi come stadio, tipo, PS, debolezza e testo degli attacchi, e un’immagine, ma non legalità né marchi di regolamentazione. Tieni una copia locale per quelli.
- Esiste un SDK?
- Sì, SDK ufficiali per JavaScript e Python. La pagina SDK della documentazione mostra entrambi.

Scritto da
PkmnPrices
PkmnPrices è un’API per sviluppatori con i dati del GCC Pokémon: prezzi TCGPlayer giornalieri per oltre 80.000 carte, più di 800 espansioni e prodotti sigillati.