/api/v1/pokemon/cards read:catalog 1
creditSearch every Pokémon Trading Card Game card we have. Leave `q` empty to page through the whole catalog, or use the Lucene-style query grammar to filter on any indexed field. Wrapped in `{ success, data, page, page_size, total_count, language }`.
GET /api/v1/pokemon/cards?page_size=10&include=prices These inputs are shared across all docs pages, so an id entered here carries over.
{
"success": true,
"data": [
{
"id": "pl2-88",
"name": "Aaron's Collection",
"number": "88",
"printed_number": "88",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.large.webp"
}
],
"expansion": {
"id": "pl2",
"name": "Rising Rivals",
"total": 120,
"language": "English",
"language_code": "en",
"series": "Platinum",
"code": "RR",
"printed_total": 111,
"release_date": "2009/05/16",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/pl2.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/pl2.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83439",
"variants": [
{
"name": "normal",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88.large.webp"
}
]
}
],
"supertype": "Trainer",
"subtypes": [
"Supporter"
],
"rarity": "Uncommon",
"artist": "Ken Sugimori",
"pricing": {
"currency": "USD",
"market": 1.25,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 1.25
},
{
"condition": "LP",
"price": 0.44
},
{
"condition": "MP",
"price": 0.35
},
{
"condition": "HP",
"price": 0.3
},
{
"condition": "DMG",
"price": 0.27
}
],
"graded": [],
"market_updated_at": "2026-09-21T03:43:25.711Z",
"trend_7d": {
"direction": "down",
"percent": -37.19
}
}
},
{
"id": "pl2-88vrh",
"name": "Aaron's Collection",
"number": "88",
"printed_number": "88",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.large.webp"
}
],
"expansion": {
"id": "pl2",
"name": "Rising Rivals",
"total": 120,
"language": "English",
"language_code": "en",
"series": "Platinum",
"code": "RR",
"printed_total": 111,
"release_date": "2009/05/16",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/pl2.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/pl2.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83439",
"variants": [
{
"name": "reverseHolofoil",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/pl2/88vrh.large.webp"
}
]
}
],
"supertype": "Trainer",
"subtypes": [
"Supporter"
],
"rarity": "Uncommon",
"artist": "Ken Sugimori",
"pricing": {
"currency": "USD",
"market": 0.1,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 0.1
}
],
"graded": [
{
"company": "PSA",
"grade": "6",
"value": 31.95,
"low": 27.16,
"high": 36.74,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-07-28T17:36:28.145Z",
"trend_7d": {
"direction": "flat",
"percent": 0
}
}
},
{
"id": "bw10-26",
"name": "Abomasnow",
"number": "26",
"printed_number": "26",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.large.webp"
}
],
"expansion": {
"id": "bw10",
"name": "Plasma Blast",
"total": 105,
"language": "English",
"language_code": "en",
"series": "Black & White",
"code": "PLB",
"printed_total": 101,
"release_date": "2013/08/14",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/bw10.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/bw10.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83442",
"variants": [
{
"name": "normal",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "120",
"attacks": [
{
"cost": [
"Grass",
"Grass"
],
"converted_energy_cost": 2,
"name": "Razor Leaf",
"damage": "40"
},
{
"cost": [
"Grass",
"Grass",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Bang Heads",
"text": "Both this Pokémon and the Defending Pokémon are now Confused.",
"damage": "80"
}
],
"weaknesses": [
{
"type": "Metal",
"value": "×2"
}
],
"rarity": "Uncommon",
"artist": "kawayoo",
"pricing": {
"currency": "USD",
"market": 0.3,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 0.3
},
{
"condition": "LP",
"price": 0.24
},
{
"condition": "MP",
"price": 0.16
},
{
"condition": "DMG",
"price": 0.18
}
],
"graded": [
{
"company": "PSA",
"grade": "9",
"value": 26,
"low": 22.1,
"high": 29.9,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:52:51.263Z",
"trend_7d": {
"direction": "flat",
"percent": 0
}
}
},
{
"id": "bw10-26vrh",
"name": "Abomasnow",
"number": "26",
"printed_number": "26",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.large.webp"
}
],
"expansion": {
"id": "bw10",
"name": "Plasma Blast",
"total": 105,
"language": "English",
"language_code": "en",
"series": "Black & White",
"code": "PLB",
"printed_total": 101,
"release_date": "2013/08/14",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/bw10.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/bw10.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83442",
"variants": [
{
"name": "reverseHolofoil",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/bw10/26vrh.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "120",
"attacks": [
{
"cost": [
"Grass",
"Grass"
],
"converted_energy_cost": 2,
"name": "Razor Leaf",
"damage": "40"
},
{
"cost": [
"Grass",
"Grass",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Bang Heads",
"text": "Both this Pokémon and the Defending Pokémon are now Confused.",
"damage": "80"
}
],
"weaknesses": [
{
"type": "Metal",
"value": "×2"
}
],
"rarity": "Uncommon",
"artist": "kawayoo",
"pricing": {
"currency": "USD",
"market": 1.02,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 1.02
},
{
"condition": "LP",
"price": 0.48
},
{
"condition": "MP",
"price": 0.75
},
{
"condition": "HP",
"price": 0.26
}
],
"graded": [
{
"company": "PSA",
"grade": "9",
"value": 26,
"low": 22.1,
"high": 29.9,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:52:51.263Z",
"trend_7d": {
"direction": "up",
"percent": 3.03
}
}
},
{
"id": "dp2-19",
"name": "Abomasnow",
"number": "19",
"printed_number": "19",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.large.webp"
}
],
"expansion": {
"id": "dp2",
"name": "Mysterious Treasures",
"total": 124,
"language": "English",
"language_code": "en",
"series": "Diamond & Pearl",
"code": "MT",
"printed_total": 123,
"release_date": "2007/08/01",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp2.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp2.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83440",
"variants": [
{
"name": "normal",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Grass"
],
"hp": "100",
"abilities": [
{
"name": "Glacier Snow",
"text": "If Abomasnow is your Active Pokémon and is damaged by an opponent's attack (even if Abomasnow is Knocked Out), the Attacking Pokémon is now Asleep.",
"type": "Poké-Body"
}
],
"attacks": [
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Heavy Blizzard",
"text": "Flip a coin. If heads, put 1 damage counter on each of your opponent's Benched Pokémon.",
"damage": "60"
}
],
"weaknesses": [
{
"type": "Fire",
"value": "+30"
}
],
"rarity": "Rare",
"artist": "Kazuyuki Kano",
"pricing": {
"currency": "USD",
"market": 0.8,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 0.8
},
{
"condition": "LP",
"price": 0.63
},
{
"condition": "MP",
"price": 0.46
},
{
"condition": "HP",
"price": 0.29
},
{
"condition": "DMG",
"price": 0.43
}
],
"graded": [
{
"company": "CGC",
"grade": "8",
"value": 8,
"low": 6.8,
"high": 9.2,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "8.5",
"value": 9.5,
"low": 8.07,
"high": 10.93,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "9",
"value": 3,
"low": 2.55,
"high": 3.45,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "8",
"value": 65,
"low": 55.25,
"high": 74.75,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:30:25.245Z",
"trend_7d": {
"direction": "down",
"percent": -3.61
}
}
},
{
"id": "dp2-19vrh",
"name": "Abomasnow",
"number": "19",
"printed_number": "19",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.large.webp"
}
],
"expansion": {
"id": "dp2",
"name": "Mysterious Treasures",
"total": 124,
"language": "English",
"language_code": "en",
"series": "Diamond & Pearl",
"code": "MT",
"printed_total": 123,
"release_date": "2007/08/01",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp2.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp2.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83440",
"variants": [
{
"name": "reverseHolofoil",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp2/19vrh.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Grass"
],
"hp": "100",
"abilities": [
{
"name": "Glacier Snow",
"text": "If Abomasnow is your Active Pokémon and is damaged by an opponent's attack (even if Abomasnow is Knocked Out), the Attacking Pokémon is now Asleep.",
"type": "Poké-Body"
}
],
"attacks": [
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Heavy Blizzard",
"text": "Flip a coin. If heads, put 1 damage counter on each of your opponent's Benched Pokémon.",
"damage": "60"
}
],
"weaknesses": [
{
"type": "Fire",
"value": "+30"
}
],
"rarity": "Rare",
"artist": "Kazuyuki Kano",
"pricing": {
"currency": "USD",
"market": 3.54,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 3.54
},
{
"condition": "LP",
"price": 1.37
},
{
"condition": "MP",
"price": 0.87
},
{
"condition": "HP",
"price": 0.6
},
{
"condition": "DMG",
"price": 0.7
}
],
"graded": [
{
"company": "CGC",
"grade": "8",
"value": 8,
"low": 6.8,
"high": 9.2,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "8.5",
"value": 9.5,
"low": 9.5,
"high": 9.63,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "9",
"value": 9,
"low": 7.65,
"high": 10.35,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "8",
"value": 65,
"low": 55.25,
"high": 74.75,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:30:25.245Z",
"trend_7d": {
"direction": "up",
"percent": 0.57
}
}
},
{
"id": "dp7-12",
"name": "Abomasnow",
"number": "12",
"printed_number": "12",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.large.webp"
}
],
"expansion": {
"id": "dp7",
"name": "Stormfront",
"total": 106,
"language": "English",
"language_code": "en",
"series": "Diamond & Pearl",
"code": "SF",
"printed_total": 100,
"release_date": "2008/11/01",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp7.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp7.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83441",
"variants": [
{
"name": "normal",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "100",
"abilities": [
{
"name": "Snow Veil",
"text": "As long as Abomasnow is your Active Pokémon, any damage done to your Pokémon by an opponent's attack is reduced by 20 (after applying Weakness and Resistance).",
"type": "Poké-Body"
}
],
"attacks": [
{
"cost": [
"Colorless",
"Colorless"
],
"converted_energy_cost": 2,
"name": "Snow Play",
"text": "Does 20 damage to each of your opponent's Benched Pokémon, excluding Grass Pokémon and Water Pokémon. (Don't apply Weakness and Resistance for Benched Pokémon.)",
"damage": "20"
},
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Below Zero",
"text": "If Abomasnow evolved from Snover during this turn, the Defending Pokémon is now Paralyzed.",
"damage": "60"
}
],
"weaknesses": [
{
"type": "Fire",
"value": "+30"
}
],
"rarity": "Rare",
"artist": "Mitsuhiro Arita",
"pricing": {
"currency": "USD",
"market": 1.97,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 1.97
},
{
"condition": "LP",
"price": 0.75
},
{
"condition": "MP",
"price": 0.51
},
{
"condition": "HP",
"price": 0.44
},
{
"condition": "DMG",
"price": 0.34
}
],
"graded": [
{
"company": "CGC",
"grade": "10",
"value": 32.5,
"low": 27.63,
"high": 37.38,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "8.5",
"value": 7,
"low": 5.95,
"high": 8.05,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "9",
"value": 11,
"low": 9.35,
"high": 12.65,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "9.5",
"value": 9.5,
"low": 8.07,
"high": 10.93,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "7",
"value": 4,
"low": 3.4,
"high": 4.6,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "8",
"value": 14.4,
"low": 12.24,
"high": 16.56,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "9",
"value": 49.95,
"low": 42.46,
"high": 57.44,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:04:14.224Z",
"trend_7d": {
"direction": "flat",
"percent": 0
}
}
},
{
"id": "dp7-12vrh",
"name": "Abomasnow",
"number": "12",
"printed_number": "12",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.large.webp"
}
],
"expansion": {
"id": "dp7",
"name": "Stormfront",
"total": 106,
"language": "English",
"language_code": "en",
"series": "Diamond & Pearl",
"code": "SF",
"printed_total": 100,
"release_date": "2008/11/01",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp7.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/dp7.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "83441",
"variants": [
{
"name": "reverseHolofoil",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/dp7/12vrh.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "100",
"abilities": [
{
"name": "Snow Veil",
"text": "As long as Abomasnow is your Active Pokémon, any damage done to your Pokémon by an opponent's attack is reduced by 20 (after applying Weakness and Resistance).",
"type": "Poké-Body"
}
],
"attacks": [
{
"cost": [
"Colorless",
"Colorless"
],
"converted_energy_cost": 2,
"name": "Snow Play",
"text": "Does 20 damage to each of your opponent's Benched Pokémon, excluding Grass Pokémon and Water Pokémon. (Don't apply Weakness and Resistance for Benched Pokémon.)",
"damage": "20"
},
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Below Zero",
"text": "If Abomasnow evolved from Snover during this turn, the Defending Pokémon is now Paralyzed.",
"damage": "60"
}
],
"weaknesses": [
{
"type": "Fire",
"value": "+30"
}
],
"rarity": "Rare",
"artist": "Mitsuhiro Arita",
"pricing": {
"currency": "USD",
"market": 4.88,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 4.88
},
{
"condition": "LP",
"price": 3.24
},
{
"condition": "MP",
"price": 0.72
},
{
"condition": "HP",
"price": 1.13
},
{
"condition": "DMG",
"price": 0.5
}
],
"graded": [
{
"company": "CGC",
"grade": "10",
"value": 32.5,
"low": 27.63,
"high": 37.38,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "8.5",
"value": 11.95,
"low": 17.99,
"high": 17.99,
"confidence": "med",
"value_kind": "blended",
"sold_count": 1
},
{
"company": "CGC",
"grade": "9",
"value": 10,
"low": 8.5,
"high": 11.5,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "CGC",
"grade": "9.5",
"value": 9.5,
"low": 8.07,
"high": 10.93,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "7",
"value": 4,
"low": 3.4,
"high": 4.6,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
},
{
"company": "PSA",
"grade": "9",
"value": 49.95,
"low": 42.46,
"high": 57.44,
"confidence": "low",
"value_kind": "feed",
"sold_count": 0
}
],
"market_updated_at": "2026-09-21T03:04:14.224Z",
"trend_7d": {
"direction": "down",
"percent": -2.79
}
}
},
{
"id": "sm11-42",
"name": "Abomasnow",
"number": "42",
"printed_number": "42",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.large.webp"
}
],
"expansion": {
"id": "sm11",
"name": "Unified Minds",
"total": 261,
"language": "English",
"language_code": "en",
"series": "Sun & Moon",
"code": "UNM",
"printed_total": 236,
"release_date": "2019/08/02",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/sm11.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/sm11.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "194963",
"variants": [
{
"name": "normal",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "140",
"attacks": [
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Quick Freeze",
"text": "If your opponent's Active Pokémon has any Water Energy attached to it, it is now Paralyzed.",
"damage": "70"
},
{
"cost": [
"Water",
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 4,
"name": "Wild Tackle",
"text": "This Pokémon does 20 damage to itself.",
"damage": "140"
}
],
"weaknesses": [
{
"type": "Metal",
"value": "×2"
}
],
"rarity": "Rare",
"artist": "Shin Nagasawa",
"pricing": {
"currency": "USD",
"market": 0.25,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 0.25
},
{
"condition": "MP",
"price": 0.1
}
],
"graded": [],
"market_updated_at": "2026-09-21T02:35:58.618Z",
"trend_7d": {
"direction": "flat",
"percent": 0
}
}
},
{
"id": "sm11-42vrh",
"name": "Abomasnow",
"number": "42",
"printed_number": "42",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.large.webp"
}
],
"expansion": {
"id": "sm11",
"name": "Unified Minds",
"total": 261,
"language": "English",
"language_code": "en",
"series": "Sun & Moon",
"code": "UNM",
"printed_total": 236,
"release_date": "2019/08/02",
"logo": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/sm11.logo.png",
"symbol": "https://gjnrvwqtdlspyfpezgox.supabase.co/storage/v1/object/public/tcg/sets/sm11.symbol.png"
},
"language": "English",
"language_code": "en",
"tcgplayer_id": "194963",
"variants": [
{
"name": "reverseHolofoil",
"images": [
{
"type": "front",
"small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.small.webp",
"medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.large.webp",
"large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/sm11/42vrh.large.webp"
}
]
}
],
"supertype": "Pokémon",
"subtypes": [
"Stage 1"
],
"types": [
"Water"
],
"hp": "140",
"attacks": [
{
"cost": [
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 3,
"name": "Quick Freeze",
"text": "If your opponent's Active Pokémon has any Water Energy attached to it, it is now Paralyzed.",
"damage": "70"
},
{
"cost": [
"Water",
"Water",
"Colorless",
"Colorless"
],
"converted_energy_cost": 4,
"name": "Wild Tackle",
"text": "This Pokémon does 20 damage to itself.",
"damage": "140"
}
],
"weaknesses": [
{
"type": "Metal",
"value": "×2"
}
],
"rarity": "Rare",
"artist": "Shin Nagasawa",
"pricing": {
"currency": "USD",
"market": 0.4,
"is_stale": false,
"conditions": [
{
"condition": "NM",
"price": 0.4
},
{
"condition": "LP",
"price": 0.3
},
{
"condition": "MP",
"price": 0.15
}
],
"graded": [],
"market_updated_at": "2026-09-21T02:35:58.618Z",
"trend_7d": {
"direction": "flat",
"percent": 0
}
}
}
],
"page": 1,
"page_size": 10,
"total_count": 37914,
"language": "en"
}curl -X GET 'https://service.rip.fun/api/v1/pokemon/cards?page_size=10&include=prices' \ -H 'X-API-Key: rip_…'
| Field | Type | Required | Description |
|---|---|---|---|
q | string | — | Advanced search, e.g. `name:char*`, `(subtypes:mega OR subtypes:vmax)`, `-types:water`, `hp:[150 TO *]`, `expansion.id:sv1`; on One Piece, the gameplay fields too — `colors:Black cost:[1 TO 3] type:Character`. Capped at 512 characters, 20 terms and 5 levels of parentheses — a generated filter reaches those long before a hand-typed one does. Unknown fields return 400 with a suggestion. Full grammar + field list: see the Search & filtering guide. |
language | string | — | Language code, or a comma list. **Defaults to `en`**: every card exists once per printed language, so an unfiltered list interleaves two catalogs. Pass `language=all` for every language, or `language=ja`. The applied value comes back in the envelope. A `language:`, `id:` or `expansion.id:` term in `q` already pins the language, so the default steps aside. |
orderBy | string | — | Comma list; `-` prefix = DESC, e.g. `-release_date`. Max 3 keys. Cards sort on `name`, `number`, `rarity`, `raw_price`/`market_price`, `release_date`, `expansion.id`, `id` (plus `hp` on Pokémon and `cost`, `power`, `counter`, `life` on One Piece). Missing values sort LAST in both directions, and every sort carries a unique `id` tiebreak, so paging a sorted result set can neither skip nor repeat a row. |
distinct | string | — | Set to `code` to return one row per card rather than one per printing, and to make `total_count` count cards. Without it a page of 30 is ~17 cards and a code whose printings straddle a page boundary appears on both. The row kept is the base printing; filters that vary BETWEEN printings of a code (`rarity`, `raw_price`, `is_holo`) do not combine with it — every gameplay field does. |
page / page_size | number | — | Pagination. `page` ≥ 1 (default 1), `page_size` 1–100 (default 100, `pageSize` also accepted). Out-of-range values are rejected, never clamped. `page × page_size` capped at 10,000, so narrow with `q` to go deeper. Always compare `total_count` against the rows you received — 100 is a cap, not a promise, and a truncated page looks identical to a complete one. Collections you might assume fit in a single call do not: there are more than 100 One Piece expansions, so an unpaginated `/expansions` omits the newest sets and everything you would have walked from them. |
select | string | — | Comma list of top-level fields to keep (`id` always included). Trims response size and does not change the credit cost. |
include | string | — | Set to `prices` to embed the pricing object on every returned object. **No surcharge** — metering is a flat 1 credit per request whatever the response carries, so hydrating a page of 100 with prices costs the same as without, and strictly less than a second call per row. |
data)| Field | Description |
|---|---|
data[].id | Card id (variant printings carry a suffix, e.g. `…vh` for holofoil, `…vrh` for reverse holofoil) |
data[].name / supertype / subtypes | Card identity + classification |
data[].rarity / number / printed_number / artist | Print metadata |
data[].images[] | `{ type, small, medium, large }`, `type` always `front`. Use `small` for grids and `large` for detail views. Two caveats: `medium` is always an alias of `large` (only two sizes are stored), and on cards whose source supplied a single rendition `small` is an alias too — it points at the same file as `large`. Compare the two URLs before assuming `small` is cheap; where they differ it is roughly 6× smaller. |
data[].language / language_code | Card language: `English`/`en`, `Japanese`/`ja`, `Chinese`/`zh`. Chinese splits into Simplified (`zh-Hans`) and Traditional (`zh-Hant`). Each printing is its own object. |
data[].tcgplayer_id | TCGplayer product id for cross-referencing, or null when we don’t have one |
data[].expansion | Nested expansion object (id, name, series, total, release_date, logo, symbol, …) |
data[].variants[] | `{ name, images[] }`, one self-describing element per card printing |
data[].pricing | Present only with `include=prices` — and then always present, even where we hold nothing: `market` comes back `null` and the two arrays empty rather than the key being dropped. `{ currency, market, market_updated_at, is_stale, trend_7d, conditions[], graded[] }`, with every amount a **number** rather than a decimal string. `trend_7d` is `{ direction, percent }`, and it is the only trend window there is. See the Pricing data guide. |
data[].pricing.conditions[] | `{ condition, price }` raw ladder (NM/LP/MP/HP/DMG) for the card’s variant — those two fields only |
data[].pricing.graded[] | Reconciled graded value per company+grade: `{ company, grade, value, low, high, confidence, value_kind, sold_count, trend? }` |
Game fields on the Card object, on top of the shared ones above. All are optional and are omitted when we have no value, so a missing key means unknown.
| Field | What it holds |
|---|---|
supertype | Pokémon, Trainer or Energy. |
subtypes | Classification, e.g. Basic, Stage 1, VMAX, Mega, Supporter. |
types | Energy types, e.g. Fire, Water. |
hp | Hit points, as a string. Emitted only when greater than zero. |
abilities | `{ type, name, text }` per printed ability. |
attacks | `{ cost, converted_energy_cost, name, text, damage }` per attack. |
weaknesses / resistances | `{ type, value }` pairs. |
These values are printed on the physical card but no endpoint returns them today, and nothing in the response lets you derive them. Don't infer them — see the notes below.
| Field | Why it's missing |
|---|---|
retreat_cost | The retreat cost printed at the foot of the card. Not ingested, so never emitted — not even as null. |
evolves_from | The Pokémon this one evolves from. Same gap; build evolution chains from `subtypes` and name matching instead. |
level / flavor_text / regulation_mark / national_pokedex_numbers | Also printed, also not ingested. Omitted rather than returned empty. |
Every game field is optional and is omitted rather than sent as null, so a missing key means unknown — not zero and not empty.
| Status | Code | When |
|---|---|---|
| 400 | parse_error | malformed `q` syntax: an unclosed quote or parenthesis, a missing term, a stray operator. `details.position` is the 0-based character offset of the offending token. |
| 400 | unknown_field | a `q` term names a field this resource does not register (`subtype:` for `subtypes:`, a card field on `/sealed`), or `orderBy` names a field you cannot sort on. The message carries a did-you-mean suggestion and `details.position` points at it. Unknown fields are rejected, never ignored — an empty page would be the more expensive answer. |
| 400 | invalid_value | the field exists but the value does not fit it: a range on a field that has no ordering, a non-numeric bound, a value outside a closed vocabulary. |
| 400 | query_too_complex | `q` exceeds 512 characters, 20 terms or 5 levels of parenthesis nesting, `orderBy` names more than 3 keys, or a value breaks the wildcard guardrails (a leading `*`, more than 3 per value, fewer than 2 literal characters). Filter builders hit this before people do — count terms as you assemble, and fall back to several narrower calls rather than one wide one. |
| 400 | invalid_pagination | `page`/`page_size` non-numeric, out of range, or `page × page_size` > 10,000 |
| 400 | invalid_language | `language` is not a language code — expected `en`, `ja`, a comma list of codes, or `all` |
| 400 | invalid_distinct | `distinct` is anything other than `code` |
| 400 | invalid_select | `select` names more than 40 fields. Names that do not exist are ignored rather than rejected, so a typo silently drops the field — check the response, not just the status. |
| 400 | invalid_include | `include` carries a value this endpoint does not offer. Cards and sealed accept `prices`; the expansion endpoints accept none at all. |
| 404 | not_found | no such object for this game (a Pokémon id on `/onepiece` is "not found") |
See Errors for the response envelope and the full code list.