Get a card
One printing by id, in any language.
Ids are stable. When a set is re-keyed, the old id keeps resolving to the card under its new id, with meta.movedFrom set to the id you sent. Store data.id.
Query parameters are ignored.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| idrequired | string | A card id. An id retired by a set re-key keeps working and is reported in meta.movedFrom. |
Response
200 The card.
| Field | Type | Description |
|---|---|---|
| data | Card (Card reference) | The card. |
| meta | object | Present only when the id was retired. Absent unless it applies. |
| meta.movedFrom | string | The id you sent. |
Examples
Real responses from the production API, recorded on 2026-09-24 by the script that also checks every field above against them. Arrays are shown in full.
Charizard ex, 151
curl "https://api.tcggraph.com/v1/cards/pkm_sv3pt5_6" \
-H "Authorization: Bearer $TCGGRAPH_API_KEY"const response = await fetch("https://api.tcggraph.com/v1/cards/pkm_sv3pt5_6", {
headers: {
Authorization: `Bearer ${process.env.TCGGRAPH_API_KEY}`,
},
});
const body = await response.json();
if (!response.ok) throw new Error(`${body.error.code}: ${body.error.message}`);import os
import requests
response = requests.get(
"https://api.tcggraph.com/v1/cards/pkm_sv3pt5_6",
headers={"Authorization": f"Bearer {os.environ['TCGGRAPH_API_KEY']}"},
)
body = response.json()
response.raise_for_status()200 · X-Credits-Cost: 1
{
"data": {
"id": "pkm_sv3pt5_6",
"game": "pokemon",
"name": "Charizard ex",
"language": "en",
"printedName": null,
"englishId": null,
"pricesFrom": "own",
"set": {
"code": "sv3pt5",
"name": "151",
"language": "en",
"releasedAt": "2023-09-22"
},
"collectorNumber": "6",
"rarity": "Double Rare",
"artist": "PLANETA Mochizuki",
"text": null,
"images": {
"small": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/small.webp",
"normal": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/normal.webp",
"large": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/large.webp"
},
"hashes": {
"phash": "c35f14b4727b1a8c",
"phashColor": "c35916b46aebb984c35f04a6737b1c8cfb6f84e4d05a1a0b"
},
"prices": [
{
"source": "cardmarket",
"region": "EU",
"listType": "retail",
"finish": "foil",
"currency": "EUR",
"market": 8.62,
"low": 4,
"trend": 8.62,
"avg1": 7.03,
"avg7": 8.8,
"avg30": 8.47,
"updatedAt": "2026-09-24T07:34:30.239Z"
},
{
"source": "tcgplayer",
"region": "NA",
"listType": "retail",
"finish": "foil",
"currency": "USD",
"market": 8.79,
"low": 6,
"trend": null,
"avg1": null,
"avg7": null,
"avg30": null,
"updatedAt": "2026-09-24T07:19:35.232Z"
}
],
"gradedPrices": [
{
"grader": "raw",
"grade": "ungraded",
"currency": "USD",
"price": 8.12,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "7",
"currency": "USD",
"price": 16.76,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "8",
"currency": "USD",
"price": 17.75,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "9",
"currency": "USD",
"price": 25,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "9.5",
"currency": "USD",
"price": 25,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "psa",
"grade": "10",
"currency": "USD",
"price": 125.65,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "bgs",
"grade": "10",
"currency": "USD",
"price": 163,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "cgc",
"grade": "10",
"currency": "USD",
"price": 34.46,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "sgc",
"grade": "10",
"currency": "USD",
"price": 39,
"salesVolume": 370,
"updatedAt": "2026-09-23T09:20:51.748Z"
}
],
"languagePrices": [
{
"source": "cardmarket",
"language": "en",
"finish": "foil",
"currency": "EUR",
"low": 5,
"lowNm": 5,
"market": 5.5,
"offers": 2,
"truncated": true,
"truncatedAbove": 6.26,
"conditions": [
{
"condition": "nm",
"low": 5,
"offers": 2
}
],
"updatedAt": "2026-09-24T02:51:27.427Z"
},
{
"source": "cardmarket",
"language": "it",
"finish": "foil",
"currency": "EUR",
"low": 4,
"lowNm": 4,
"market": 5.49,
"offers": 47,
"truncated": true,
"truncatedAbove": 6.26,
"conditions": [
{
"condition": "nm",
"low": 4,
"offers": 41
},
{
"condition": "ex",
"low": 4.5,
"offers": 6
}
],
"updatedAt": "2026-09-24T02:51:27.427Z"
},
{
"source": "cardmarket",
"language": "de",
"finish": "foil",
"currency": "EUR",
"low": 7.5,
"lowNm": 7.5,
"market": 7.5,
"offers": 1,
"truncated": true,
"truncatedAbove": 7.5,
"conditions": [
{
"condition": "nm",
"low": 7.5,
"offers": 1
}
],
"updatedAt": "2026-09-13T03:15:59.919Z"
},
{
"source": "cardmarket",
"language": "fr",
"finish": "foil",
"currency": "EUR",
"low": 6,
"lowNm": 6,
"market": 6,
"offers": 1,
"truncated": true,
"truncatedAbove": 6.26,
"conditions": [
{
"condition": "nm",
"low": 6,
"offers": 1
}
],
"updatedAt": "2026-09-24T02:51:27.427Z"
}
],
"printings": [
{
"key": "foil",
"label": "Holofoil",
"kind": "surface",
"images": {
"small": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/small.webp",
"normal": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/normal.webp",
"large": "https://cards.tcggraph.io/sv/pkm_sv3pt5_6/large.webp"
},
"imageFrom": "card",
"externalIds": {
"cardmarketId": 733601,
"tcgplayerId": 502558
},
"prices": [
{
"source": "cardmarket",
"region": "EU",
"listType": "retail",
"finish": "foil",
"currency": "EUR",
"market": 8.62,
"low": 4,
"trend": 8.62,
"avg1": 7.03,
"avg7": 8.8,
"avg30": 8.47,
"updatedAt": "2026-09-24T07:34:30.239Z"
},
{
"source": "tcgplayer",
"region": "NA",
"listType": "retail",
"finish": "foil",
"currency": "USD",
"market": 8.79,
"low": 6,
"trend": null,
"avg1": null,
"avg7": null,
"avg30": null,
"updatedAt": "2026-09-24T07:19:35.232Z"
}
]
}
],
"priceStatus": {
"cardmarket": "priced",
"tcgplayer": "priced",
"graded": "priced"
},
"legalities": {
"expanded": "legal",
"standard": "legal",
"unlimited": "legal"
},
"gameData": {
"hp": 330,
"types": [
"Fire"
],
"attacks": [
{
"cost": [
"Fire"
],
"name": "Brave Wing",
"text": "If this Pokémon has any damage counters on it, this attack does 100 more damage.",
"damage": "60+",
"convertedEnergyCost": 1
},
{
"cost": [
"Fire",
"Fire",
"Fire",
"Fire"
],
"name": "Explosive Vortex",
"text": "Discard 3 Energy from this Pokémon.",
"damage": "330",
"convertedEnergyCost": 4
}
],
"subtypes": [
"Stage 2",
"ex"
],
"abilities": [],
"supertype": "Pokémon",
"weaknesses": [
{
"type": "Water",
"value": "×2"
}
],
"evolvesFrom": "Charmeleon",
"resistances": [],
"retreatCost": [
"Colorless",
"Colorless"
],
"regulationMark": "G",
"convertedRetreatCost": 2,
"nationalPokedexNumbers": [
6
]
},
"externalIds": {
"cardmarketId": 733601,
"tcgplayerId": 502558
}
}
}A retired id
curl "https://api.tcggraph.com/v1/cards/pkm_me5pt5_1" \
-H "Authorization: Bearer $TCGGRAPH_API_KEY"const response = await fetch("https://api.tcggraph.com/v1/cards/pkm_me5pt5_1", {
headers: {
Authorization: `Bearer ${process.env.TCGGRAPH_API_KEY}`,
},
});
const body = await response.json();
if (!response.ok) throw new Error(`${body.error.code}: ${body.error.message}`);import os
import requests
response = requests.get(
"https://api.tcggraph.com/v1/cards/pkm_me5pt5_1",
headers={"Authorization": f"Bearer {os.environ['TCGGRAPH_API_KEY']}"},
)
body = response.json()
response.raise_for_status()200 · X-Credits-Cost: 1
{
"data": {
"id": "pkm_me55_1",
"game": "pokemon",
"name": "Exeggcute",
"language": "en",
"printedName": null,
"englishId": null,
"pricesFrom": "own",
"set": {
"code": "me55",
"name": "30th Celebration",
"language": "en",
"releasedAt": "2026-09-16"
},
"collectorNumber": "1",
"rarity": "Common",
"artist": "Nelnal",
"text": null,
"images": {
"small": "https://cards.tcggraph.io/me/pkm_me5pt5_1/small.webp",
"normal": "https://cards.tcggraph.io/me/pkm_me5pt5_1/normal.webp",
"large": "https://cards.tcggraph.io/me/pkm_me5pt5_1/large.webp"
},
"hashes": {
"phash": "c35a54a03d359f96",
"phashColor": "cb5a56a43d259786c17a50903f3d1f96dbd2a42c7c398d07"
},
"prices": [
{
"source": "cardmarket",
"region": "EU",
"listType": "retail",
"finish": "foil",
"currency": "EUR",
"market": 0.04,
"low": 0.02,
"trend": 0.04,
"avg1": 0.15,
"avg7": 0.2,
"avg30": 0.2,
"updatedAt": "2026-09-24T07:34:30.239Z"
},
{
"source": "tcgplayer",
"region": "NA",
"listType": "retail",
"finish": "foil",
"currency": "USD",
"market": 0.13,
"low": 0.01,
"trend": null,
"avg1": null,
"avg7": null,
"avg30": null,
"updatedAt": "2026-09-24T07:19:35.232Z"
}
],
"gradedPrices": [
{
"grader": "raw",
"grade": "ungraded",
"currency": "USD",
"price": 0.19,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "9",
"currency": "USD",
"price": 10.23,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "any",
"grade": "9.5",
"currency": "USD",
"price": 11,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "psa",
"grade": "10",
"currency": "USD",
"price": 30.9,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "bgs",
"grade": "10",
"currency": "USD",
"price": 40,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "cgc",
"grade": "10",
"currency": "USD",
"price": 19,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
},
{
"grader": "sgc",
"grade": "10",
"currency": "USD",
"price": 19,
"salesVolume": 394,
"updatedAt": "2026-09-23T09:20:51.748Z"
}
],
"languagePrices": [
{
"source": "cardmarket",
"language": "en",
"finish": "normal",
"currency": "EUR",
"low": 0.09,
"lowNm": 0.09,
"market": 0.15,
"offers": 25,
"truncated": true,
"truncatedAbove": 0.5,
"conditions": [],
"updatedAt": "2026-09-16T17:24:37.809Z"
},
{
"source": "cardmarket",
"language": "en",
"finish": "foil",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.03,
"offers": 20,
"truncated": true,
"truncatedAbove": 0.05,
"conditions": [
{
"condition": "mt",
"low": 0.02,
"offers": 1
},
{
"condition": "nm",
"low": 0.02,
"offers": 19
}
],
"updatedAt": "2026-09-24T02:47:05.356Z"
},
{
"source": "cardmarket",
"language": "fr",
"finish": "normal",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.2,
"offers": 18,
"truncated": true,
"truncatedAbove": 0.5,
"conditions": [],
"updatedAt": "2026-09-16T17:24:37.809Z"
},
{
"source": "cardmarket",
"language": "it",
"finish": "normal",
"currency": "EUR",
"low": 0.2,
"lowNm": 0.2,
"market": 0.2,
"offers": 3,
"truncated": true,
"truncatedAbove": 0.5,
"conditions": [],
"updatedAt": "2026-09-16T17:24:37.809Z"
},
{
"source": "cardmarket",
"language": "it",
"finish": "foil",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.02,
"offers": 18,
"truncated": true,
"truncatedAbove": 0.05,
"conditions": [
{
"condition": "nm",
"low": 0.02,
"offers": 18
}
],
"updatedAt": "2026-09-24T02:47:05.356Z"
},
{
"source": "cardmarket",
"language": "es",
"finish": "normal",
"currency": "EUR",
"low": 0.09,
"lowNm": 0.09,
"market": 0.09,
"offers": 1,
"truncated": true,
"truncatedAbove": 0.5,
"conditions": [],
"updatedAt": "2026-09-16T17:24:37.809Z"
},
{
"source": "cardmarket",
"language": "es",
"finish": "foil",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.02,
"offers": 4,
"truncated": true,
"truncatedAbove": 0.05,
"conditions": [
{
"condition": "nm",
"low": 0.02,
"offers": 4
}
],
"updatedAt": "2026-09-24T02:47:05.356Z"
},
{
"source": "cardmarket",
"language": "de",
"finish": "normal",
"currency": "EUR",
"low": 0.4,
"lowNm": 0.4,
"market": 0.44,
"offers": 3,
"truncated": true,
"truncatedAbove": 0.5,
"conditions": [],
"updatedAt": "2026-09-16T17:24:37.809Z"
},
{
"source": "cardmarket",
"language": "de",
"finish": "foil",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.04,
"offers": 4,
"truncated": true,
"truncatedAbove": 0.05,
"conditions": [
{
"condition": "nm",
"low": 0.02,
"offers": 4
}
],
"updatedAt": "2026-09-24T02:47:05.356Z"
},
{
"source": "cardmarket",
"language": "fr",
"finish": "foil",
"currency": "EUR",
"low": 0.02,
"lowNm": 0.02,
"market": 0.02,
"offers": 4,
"truncated": true,
"truncatedAbove": 0.05,
"conditions": [
{
"condition": "nm",
"low": 0.02,
"offers": 4
}
],
"updatedAt": "2026-09-24T02:47:05.356Z"
}
],
"printings": [
{
"key": "foil",
"label": "Holofoil",
"kind": "surface",
"images": {
"small": "https://cards.tcggraph.io/me/pkm_me5pt5_1/small.webp",
"normal": "https://cards.tcggraph.io/me/pkm_me5pt5_1/normal.webp",
"large": "https://cards.tcggraph.io/me/pkm_me5pt5_1/large.webp"
},
"imageFrom": "card",
"externalIds": {
"cardmarketId": 907607,
"tcgplayerId": 716435
},
"prices": [
{
"source": "cardmarket",
"region": "EU",
"listType": "retail",
"finish": "foil",
"currency": "EUR",
"market": 0.04,
"low": 0.02,
"trend": 0.04,
"avg1": 0.15,
"avg7": 0.2,
"avg30": 0.2,
"updatedAt": "2026-09-24T07:34:30.239Z"
},
{
"source": "tcgplayer",
"region": "NA",
"listType": "retail",
"finish": "foil",
"currency": "USD",
"market": 0.13,
"low": 0.01,
"trend": null,
"avg1": null,
"avg7": null,
"avg30": null,
"updatedAt": "2026-09-24T07:19:35.232Z"
}
]
}
],
"priceStatus": {
"cardmarket": "priced",
"tcgplayer": "priced",
"graded": "priced"
},
"legalities": {},
"gameData": {
"hp": 60,
"types": [
"Grass"
],
"attacks": [
{
"cost": [
"Colorless"
],
"name": "Hypnosis",
"text": "Your opponent's Active Pokémon is now Asleep.",
"convertedEnergyCost": 1
}
],
"subtypes": [
"Basic"
],
"abilities": [],
"supertype": "Pokémon",
"weaknesses": [
{
"type": "Fire",
"value": "×2"
}
],
"evolvesFrom": null,
"resistances": [],
"retreatCost": [
"Colorless"
],
"regulationMark": "J",
"convertedRetreatCost": 1,
"nationalPokedexNumbers": [
102
]
},
"externalIds": {
"cardmarketId": 907607,
"tcgplayerId": 716435
}
},
"meta": {
"movedFrom": "pkm_me5pt5_1"
}
}Errors
Every error has the same body; switch on error.code. Any endpoint can also answer 401, 402, 403 or 429 for reasons of key, plan or rate; those are on Errors.
| Status | Code | When |
|---|---|---|
| 404 | not_found | No card has, or had, that id. |
Unknown id
curl "https://api.tcggraph.com/v1/cards/pkm_nope_1" \
-H "Authorization: Bearer $TCGGRAPH_API_KEY"const response = await fetch("https://api.tcggraph.com/v1/cards/pkm_nope_1", {
headers: {
Authorization: `Bearer ${process.env.TCGGRAPH_API_KEY}`,
},
});
const body = await response.json();
if (!response.ok) throw new Error(`${body.error.code}: ${body.error.message}`);import os
import requests
response = requests.get(
"https://api.tcggraph.com/v1/cards/pkm_nope_1",
headers={"Authorization": f"Bearer {os.environ['TCGGRAPH_API_KEY']}"},
)
body = response.json()
response.raise_for_status()404
{
"error": {
"code": "not_found",
"message": "No card with id \"pkm_nope_1\"."
}
}