Search cards

GET /api/v1/onepiece/cards read:catalog 1 credit

Search every One Piece 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 }`.

Try it GET /api/v1/onepiece/cards?page_size=10&include=prices

These inputs are shared across all docs pages, so an id entered here carries over.

response
200 94ms preloaded server-side with the default context
object · 6 keys
{
  "success": true,
  "data": [
    {
      "id": "OP15-079",
      "name": "Absalom",
      "number": "79",
      "printed_number": "79",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.large.webp"
        }
      ],
      "expansion": {
        "id": "OP15",
        "name": "Adventure on Kami's Island",
        "total": 119,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP15",
        "printed_total": 119,
        "release_date": "2026/02/03",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP15.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "685431",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP15-079.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "4",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Black"
      ],
      "rules": [
        "[On K.O.] Add up to 1 card with the {Thriller Bark Pirates} type from your trash to your hand.",
        "[Trigger] Activate this card's [On K.O.] effect."
      ],
      "counter": "1000",
      "subtypes": [
        "Thriller Bark Pirates"
      ],
      "rarity": "Common",
      "pricing": {
        "currency": "USD",
        "market": 0.1,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 0.1
          }
        ],
        "graded": [],
        "market_updated_at": "2026-09-21T02:34:37.787Z",
        "trend_7d": {
          "direction": "flat",
          "percent": 0
        }
      }
    },
    {
      "id": "OP06-081vaa",
      "name": "Absalom (altArt)",
      "number": "81",
      "printed_number": "81",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.large.webp"
        }
      ],
      "expansion": {
        "id": "OP06",
        "name": "Wings of the Captain",
        "total": 119,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP06",
        "printed_total": 119,
        "release_date": "2023/03/15",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP06.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "541058",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081vaa.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "4",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Black"
      ],
      "rules": [
        "[On Play] You may return 2 cards from your trash to the bottom of your deck in any order: K.O. up to 1 Character with a cost of 2 or less."
      ],
      "counter": "1000",
      "subtypes": [
        "Thriller Bark Pirates"
      ],
      "rarity": "Rare",
      "pricing": {
        "currency": "USD",
        "market": 1.62,
        "is_stale": false,
        "conditions": [],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 54,
            "low": 45.9,
            "high": 62.1,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "CGC",
            "grade": "10",
            "value": 13.99,
            "low": 11.89,
            "high": 16.09,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "10",
            "value": 41.38,
            "low": 35.17,
            "high": 47.59,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "SGC",
            "grade": "10",
            "value": 25,
            "low": 21.25,
            "high": 28.75,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          }
        ],
        "market_updated_at": "2026-09-21T02:35:46.014Z",
        "trend_7d": {
          "direction": "up",
          "percent": 0.62
        }
      }
    },
    {
      "id": "OP06-081",
      "name": "Absalom (foil)",
      "number": "81",
      "printed_number": "81",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.large.webp"
        }
      ],
      "expansion": {
        "id": "OP06",
        "name": "Wings of the Captain",
        "total": 119,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP06",
        "printed_total": 119,
        "release_date": "2023/03/15",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP06.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "541057",
      "variants": [
        {
          "name": "holofoil",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP06-081.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "4",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Black"
      ],
      "rules": [
        "[On Play] You may return 2 cards from your trash to the bottom of your deck in any order: K.O. up to 1 Character with a cost of 2 or less."
      ],
      "counter": "1000",
      "subtypes": [
        "Thriller Bark Pirates"
      ],
      "rarity": "Rare",
      "pricing": {
        "currency": "USD",
        "market": 0.14,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 0.14
          }
        ],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 29.45,
            "low": 25.03,
            "high": 33.87,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          }
        ],
        "market_updated_at": "2026-09-21T02:35:46.014Z",
        "trend_7d": {
          "direction": "down",
          "percent": -6.67
        }
      }
    },
    {
      "id": "OP14-100",
      "name": "Absalom (foil)",
      "number": "100",
      "printed_number": "100",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.large.webp"
        }
      ],
      "expansion": {
        "id": "OP14",
        "name": "The Azure Sea's Seven",
        "total": 120,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP14",
        "printed_total": 120,
        "release_date": "2026/01/16",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP14.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "671431",
      "variants": [
        {
          "name": "holofoil",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP14-100.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "3",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Yellow"
      ],
      "rules": [
        "[On K.O.] Look at 3 cards from the top of your deck; reveal up to 1 {Thriller Bark Pirates} type card and add it to your hand. Then, place the rest at the bottom of your deck in any order.",
        "[Trigger] Play up to 1 {Thriller Bark Pirates} type Character card with a cost of 4 or less from your trash rested."
      ],
      "subtypes": [
        "Thriller Bark Pirates"
      ],
      "rarity": "Rare",
      "pricing": {
        "currency": "USD",
        "market": 0.27,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 0.27
          }
        ],
        "graded": [],
        "market_updated_at": "2026-09-21T03:22:49.720Z",
        "trend_7d": {
          "direction": "down",
          "percent": -3.57
        }
      }
    },
    {
      "id": "ST22-001",
      "name": "Ace & Newgate",
      "number": "1",
      "printed_number": "1",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.large.webp"
        }
      ],
      "expansion": {
        "id": "ST22",
        "name": "Ace & Newgate",
        "total": 17,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "ST22",
        "printed_total": 17,
        "release_date": "2025/09/05",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/ST22.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "647683",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001.large.webp"
            }
          ]
        }
      ],
      "type": "Leader",
      "power": "5000",
      "attribute": "Special",
      "colors": [
        "Blue"
      ],
      "rules": [
        "[Activate: Main] [Once Per Turn] You may reveal 1 card with a type including \"Whitebeard Pirates\" from your hand: Draw 1 card and place the revealed card at the top of your deck."
      ],
      "life": "5",
      "subtypes": [
        "The Four Emperors",
        "Whitebeard Pirates"
      ],
      "rarity": "Leader",
      "pricing": {
        "currency": "USD",
        "market": 2.33,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 2.33
          },
          {
            "condition": "LP",
            "price": 1.21
          },
          {
            "condition": "MP",
            "price": 0.1
          },
          {
            "condition": "HP",
            "price": 0.53
          }
        ],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 95,
            "low": 92,
            "high": 98,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "CGC",
            "grade": "10",
            "value": 37,
            "low": 30.37,
            "high": 53.87,
            "confidence": "high",
            "value_kind": "sold",
            "sold_count": 9
          },
          {
            "company": "CGC",
            "grade": "9",
            "value": 25,
            "low": 21.25,
            "high": 28.75,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "8",
            "value": 13.5,
            "low": 11.48,
            "high": 15.52,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9",
            "value": 24.92,
            "low": 21.18,
            "high": 28.66,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9.5",
            "value": 37,
            "low": 31.45,
            "high": 42.55,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "10",
            "value": 87.5,
            "low": 69.79,
            "high": 258,
            "confidence": "high",
            "value_kind": "sold",
            "sold_count": 10
          },
          {
            "company": "PSA",
            "grade": "8",
            "value": 25.75,
            "low": 19.63,
            "high": 33.38,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "9",
            "value": 35,
            "low": 22.5,
            "high": 37,
            "confidence": "med",
            "value_kind": "sold",
            "sold_count": 3
          },
          {
            "company": "PSA",
            "grade": "9.5",
            "value": 37.5,
            "low": 37,
            "high": 41,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "SGC",
            "grade": "10",
            "value": 44,
            "low": 42.75,
            "high": 45,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          }
        ],
        "market_updated_at": "2026-09-21T03:11:59.187Z",
        "trend_7d": {
          "direction": "up",
          "percent": 1.3
        }
      }
    },
    {
      "id": "ST22-001vaa",
      "name": "Ace & Newgate (altArt)",
      "number": "1",
      "printed_number": "1",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.large.webp"
        }
      ],
      "expansion": {
        "id": "ST22",
        "name": "Ace & Newgate",
        "total": 17,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "ST22",
        "printed_total": 17,
        "release_date": "2025/09/05",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/ST22.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "647684",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/ST22-001vaa.large.webp"
            }
          ]
        }
      ],
      "type": "Leader",
      "power": "5000",
      "attribute": "Special",
      "colors": [
        "Blue"
      ],
      "rules": [
        "[Activate: Main] [Once Per Turn] You may reveal 1 card with a type including \"Whitebeard Pirates\" from your hand: Draw 1 card and place the revealed card at the top of your deck."
      ],
      "life": "5",
      "subtypes": [
        "The Four Emperors",
        "Whitebeard Pirates"
      ],
      "rarity": "Leader",
      "pricing": {
        "currency": "USD",
        "market": 19.37,
        "is_stale": false,
        "conditions": [],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 271.5,
            "low": 150.68,
            "high": 294.5,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "CGC",
            "grade": "10",
            "value": 105.78,
            "low": 100,
            "high": 100,
            "confidence": "med",
            "value_kind": "blended",
            "sold_count": 2
          },
          {
            "company": "GENERIC",
            "grade": "9",
            "value": 47.75,
            "low": 47.63,
            "high": 47.88,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9.5",
            "value": 51,
            "low": 43.35,
            "high": 58.65,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "10",
            "value": 217.5,
            "low": 190.3,
            "high": 259.5,
            "confidence": "med",
            "value_kind": "sold",
            "sold_count": 3
          },
          {
            "company": "PSA",
            "grade": "9",
            "value": 53.8,
            "low": 52.48,
            "high": 54.7,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "9.5",
            "value": 117.09,
            "low": 101.46,
            "high": 118.39,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "SGC",
            "grade": "10",
            "value": 116.5,
            "low": 107,
            "high": 134.25,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          }
        ],
        "market_updated_at": "2026-09-21T03:11:59.187Z",
        "trend_7d": {
          "direction": "down",
          "percent": -2.22
        }
      }
    },
    {
      "id": "OP13-007vaa",
      "name": "Ace & Sabo & Luffy (altArt)",
      "number": "7",
      "printed_number": "7",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.large.webp"
        }
      ],
      "expansion": {
        "id": "OP13",
        "name": "Carrying On His Will",
        "total": 120,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP13",
        "printed_total": 120,
        "release_date": "2025/11/07",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP13.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "657261",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007vaa.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "1",
      "power": "1000",
      "attribute": "Strike",
      "colors": [
        "Red"
      ],
      "rules": [
        "[Activate: Main] You may give 1 of your active DON!! cards to 1 of your Leader or Character cards and trash this Character: Give up to 1 of your opponent's Characters −3000 power during this turn."
      ],
      "counter": "2000",
      "subtypes": [
        "Goa Kingdom"
      ],
      "rarity": "Super Rare",
      "pricing": {
        "currency": "USD",
        "market": 24.69,
        "is_stale": false,
        "conditions": [],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 144.03,
            "low": 119.85,
            "high": 154.63,
            "confidence": "med",
            "value_kind": "blended",
            "sold_count": 2
          },
          {
            "company": "BGS",
            "grade": "9.5",
            "value": 77.5,
            "low": 51.56,
            "high": 110,
            "confidence": "high",
            "value_kind": "sold",
            "sold_count": 6
          },
          {
            "company": "CGC",
            "grade": "10",
            "value": 147.5,
            "low": 88.73,
            "high": 192.49,
            "confidence": "med",
            "value_kind": "sold",
            "sold_count": 4
          },
          {
            "company": "GENERIC",
            "grade": "8",
            "value": 40,
            "low": 34,
            "high": 46,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9",
            "value": 55.83,
            "low": 55.11,
            "high": 56.54,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9.5",
            "value": 61.5,
            "low": 60.75,
            "high": 62.25,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "10",
            "value": 132.49,
            "low": 98.8,
            "high": 152.7,
            "confidence": "high",
            "value_kind": "sold",
            "sold_count": 48,
            "trend": {
              "direction": "flat",
              "percent": 0
            }
          },
          {
            "company": "PSA",
            "grade": "8",
            "value": 55.08,
            "low": 73.5,
            "high": 73.5,
            "confidence": "med",
            "value_kind": "blended",
            "sold_count": 1
          },
          {
            "company": "PSA",
            "grade": "9",
            "value": 75,
            "low": 36,
            "high": 91.5,
            "confidence": "high",
            "value_kind": "sold",
            "sold_count": 5
          },
          {
            "company": "PSA",
            "grade": "9.5",
            "value": 65.82,
            "low": 65,
            "high": 67,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "SGC",
            "grade": "10",
            "value": 79.5,
            "low": 73,
            "high": 87,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "TAG",
            "grade": "9",
            "value": 50.6,
            "low": 48.8,
            "high": 55.2,
            "confidence": "med",
            "value_kind": "blended",
            "sold_count": 2
          }
        ],
        "market_updated_at": "2026-09-21T02:52:16.605Z",
        "trend_7d": {
          "direction": "down",
          "percent": -3.59
        }
      }
    },
    {
      "id": "OP13-007",
      "name": "Ace & Sabo & Luffy (foil)",
      "number": "7",
      "printed_number": "7",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.large.webp"
        }
      ],
      "expansion": {
        "id": "OP13",
        "name": "Carrying On His Will",
        "total": 120,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP13",
        "printed_total": 120,
        "release_date": "2025/11/07",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP13.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "657260",
      "variants": [
        {
          "name": "holofoil",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP13-007.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "1",
      "power": "1000",
      "attribute": "Strike",
      "colors": [
        "Red"
      ],
      "rules": [
        "[Activate: Main] You may give 1 of your active DON!! cards to 1 of your Leader or Character cards and trash this Character: Give up to 1 of your opponent's Characters −3000 power during this turn."
      ],
      "counter": "2000",
      "subtypes": [
        "Goa Kingdom"
      ],
      "rarity": "Super Rare",
      "pricing": {
        "currency": "USD",
        "market": 2.43,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 2.43
          },
          {
            "condition": "MP",
            "price": 2.27
          },
          {
            "condition": "HP",
            "price": 0.29
          },
          {
            "condition": "DMG",
            "price": 0.95
          }
        ],
        "graded": [
          {
            "company": "BGS",
            "grade": "10",
            "value": 105.5,
            "low": 99.99,
            "high": 112.48,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "CGC",
            "grade": "10",
            "value": 23.25,
            "low": 21.5,
            "high": 25,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "7",
            "value": 9.5,
            "low": 8.07,
            "high": 10.93,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "8",
            "value": 21.5,
            "low": 18.27,
            "high": 24.73,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9",
            "value": 30.03,
            "low": 29.66,
            "high": 31.17,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "GENERIC",
            "grade": "9.5",
            "value": 33.25,
            "low": 28.26,
            "high": 38.24,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "10",
            "value": 79,
            "low": 73.74,
            "high": 91.38,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "7",
            "value": 9.5,
            "low": 8.07,
            "high": 10.93,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "8",
            "value": 21.5,
            "low": 18.27,
            "high": 24.73,
            "confidence": "low",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "9",
            "value": 26.32,
            "low": 25.88,
            "high": 27.66,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "PSA",
            "grade": "9.5",
            "value": 29,
            "low": 28,
            "high": 32.13,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          },
          {
            "company": "SGC",
            "grade": "10",
            "value": 48.5,
            "low": 44.75,
            "high": 57,
            "confidence": "med",
            "value_kind": "feed",
            "sold_count": 0
          }
        ],
        "market_updated_at": "2026-09-21T02:52:16.605Z",
        "trend_7d": {
          "direction": "down",
          "percent": -17.35
        }
      }
    },
    {
      "id": "OP03-002",
      "name": "Adio",
      "number": "2",
      "printed_number": "2",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.large.webp"
        }
      ],
      "expansion": {
        "id": "OP03",
        "name": "Pillars of Strength",
        "total": 123,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "OP03",
        "printed_total": 123,
        "release_date": "2023/06/30",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/OP03.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "499880",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/OP03-002.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "cost": "4",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Red"
      ],
      "rules": [
        "[DON!! x1] [When Attacking] Your opponent cannot activate a [Blocker] Character that has 2000 or less power during this battle."
      ],
      "counter": "1000",
      "subtypes": [
        "ODYSSEY"
      ],
      "rarity": "Uncommon",
      "pricing": {
        "currency": "USD",
        "market": 0.05,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 0.05
          }
        ],
        "graded": [],
        "market_updated_at": "2026-09-21T03:11:17.185Z",
        "trend_7d": {
          "direction": "flat",
          "percent": 0
        }
      }
    },
    {
      "id": "P-078",
      "name": "Adio",
      "number": "78",
      "printed_number": "78",
      "images": [
        {
          "type": "front",
          "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.small.webp",
          "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.large.webp",
          "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.large.webp"
        }
      ],
      "expansion": {
        "id": "P",
        "name": "Promos",
        "total": 103,
        "language": "English",
        "language_code": "en",
        "series": "One Piece",
        "code": "P",
        "printed_total": 103,
        "release_date": "2022/07/01",
        "logo": "https://api.rip.fun/storage/v1/object/public/tcg/sets/P.logo.png"
      },
      "language": "English",
      "language_code": "en",
      "tcgplayer_id": "656223",
      "variants": [
        {
          "name": "normal",
          "images": [
            {
              "type": "front",
              "small": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.small.webp",
              "medium": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.large.webp",
              "large": "https://api.rip.fun/storage/v1/object/public/tcg/cards/P-078.large.webp"
            }
          ]
        }
      ],
      "type": "Character",
      "power": "5000",
      "attribute": "Ranged",
      "colors": [
        "Green"
      ],
      "rules": [
        "If you have 2 or more rested {ODYSSEY} type Characters, this Character gains +1000 power."
      ],
      "counter": "2000",
      "subtypes": [
        "ODYSSEY"
      ],
      "rarity": "Promo",
      "pricing": {
        "currency": "USD",
        "market": 0.37,
        "is_stale": false,
        "conditions": [
          {
            "condition": "NM",
            "price": 0.37
          }
        ],
        "graded": [],
        "market_updated_at": "2026-09-21T02:28:01.810Z",
        "trend_7d": {
          "direction": "flat",
          "percent": 0
        }
      }
    }
  ],
  "page": 1,
  "page_size": 10,
  "total_count": 5764,
  "language": "en"
}
tracks the inputs above
curl -X GET 'https://service.rip.fun/api/v1/onepiece/cards?page_size=10&include=prices' \
  -H 'X-API-Key: rip_…'

Request fields

FieldTypeRequiredDescription
qstringAdvanced 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.
languagestringLanguage 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.
orderBystringComma 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.
distinctstringSet 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_sizenumberPagination. `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.
selectstringComma list of top-level fields to keep (`id` always included). Trims response size and does not change the credit cost.
includestringSet 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.

Response fields (data)

FieldDescription
data[].idCard id (variant printings carry a suffix, e.g. `…vh` for holofoil, `…vrh` for reverse holofoil)
data[].name / supertype / subtypesCard identity + classification
data[].rarity / number / printed_number / artistPrint 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_codeCard language: `English`/`en`, `Japanese`/`ja`. Each printing is its own object.
data[].tcgplayer_idTCGplayer product id for cross-referencing, or null when we don’t have one
data[].expansionNested expansion object (id, name, series, total, release_date, logo, symbol, …)
data[].variants[]`{ name, images[] }`, one self-describing element per card printing
data[].pricingPresent 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? }`

One Piece card fields

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.

FieldWhat it holds
typeLeader, Character, Event, Stage or DON!!. Replaces `supertype`, which is suppressed. DON!! rows are not deck cards, so a deck-building pool wants `-type:"DON!!"`.
costPlay cost, as a string. Metadata-only, so absent when the sync never captured it.
powerBattle power, as a string. Replaces `hp`, which is suppressed.
attributeSlash, Strike, Ranged, Special or Wisdom. Dual-attribute cards join with a slash, e.g. `Slash/Special`, so filter with a substring: `attribute:Slash`.
colorsRed, Green, Blue, Purple, Black, Yellow. Replaces `types`, which is suppressed.
subtypesTraits — crew and affiliation strings such as Straw Hat Crew, Supernovas.
rulesFree-text effect lines, one per printed paragraph, as an array of strings. Never parsed or structured, but always markup-free — the promo printings store one HTML blob upstream and we split and clean it before returning it.
counterPrinted Counter value on Characters (1000 / 2000), as a string. Sourced from the official card list, not from a price vendor — coverage is good but not complete, and Events, Stages and Leaders have no Counter at all.
lifeLeader Life total (4, 5, occasionally 6), as a string. Leaders only; same source and the same partial coverage.
blockThe Block icon printed in the lower-right corner. Verbatim from Bandai’s cardlist: `1`–`5`, or `X` for a printing with no numbered block. Multiple icons join with "/". Omitted where we have no value — absent is not the same answer as `X`. Read it as what the card shows, not as what is currently legal: see the note below before using it for format decisions.

Filtering on these fields

Each concept filters under the name it comes back as — that is the Query as column, and the one to write today. Also accepts is an older spelling from when q resolved only against physical columns; it still works, and a there just means the field never had one. A concept whose Query as is is not searchable at all; filter it client-side after fetching. Querying an unknown field returns 400 invalid_query with a suggested name rather than an empty result.

ConceptReturned asQuery asAlso accepts
Card typetypetype:Leadersupertype:Leader
Costcostcost:[1 TO 3]
Powerpowerpower:[5000 TO *]hp:[5000 TO *]
Colorcolorscolors:Redtypes:Red
Attributeattributeattribute:Slash
Traitsubtypessubtypes:"Straw Hat Crew"
Rules textrulesrules:Blocker
Printingvariants[0].namevariant:altArt
Blockblockblock:5
Countercountercounter:1000
Lifelifelife:[4 TO 5]

Every game field is optional and is omitted rather than sent as null, so a missing key means unknown — not zero and not empty.

Check `images[].small` before you rely on it. Roughly three in five One Piece cards were ingested with a single rendition, so `small` is the same URL as `large` — a full-size file where a thumbnail is expected. Compare the two strings and fall back to your own resizing when they match.

Scraping `rules` for Counter does not work. The `[Counter] +2000` string that appears on some cards is the Counter *effect keyword* — an ability played from hand — not the value printed in the corner. A Character with a printed +1000 Counter usually carries no `[Counter]` text at all, so a regex over `rules` returns a number for few cards and the wrong meaning for most of those. Life never appears in `rules` in any form.

Counter and Life are the only fields here we assemble ourselves rather than take from a catalog vendor, and coverage is still filling in. Treat a missing value as unknown, not as zero: Events, Stages and Leaders genuinely have no Counter, and only Leaders have Life, so absence is often correct — but it can also just mean we have not reached that card. Render nothing when the field is absent rather than a guessed or inferred value.

Where `counter` is absent we cannot tell you which kind of absent it is: the card may print no Counter, or we may simply not hold the value. The two are indistinguishable in the response, and the printed rules text does not settle it — cards missing a Counter carry ordinary ability text, not a `[Counter]` entry to parse. Anything that totals Counter across a deck is therefore incomplete rather than wrong, which is the safer of the two but still worth surfacing to your users.

Because coverage is partial, `counter:`, `life:` and `block:` filters narrow to the cards we hold a value for. Use them to explore, not to count — `counter:1000` is not the full set of 1000-Counter cards.

`block` is the printed icon, not the live regulation, and the two drift apart. Bandai reassigns blocks after print, and a reassignment never changes the artwork — so a card can be permanently Standard-legal while its printed icon says otherwise, and filtering `block:X` will miss it. Treat `block` as a catalog attribute you can display and group by; if you are deciding what is legal to play, take that from the current official regulation list, not from this field.

Block coverage is 77% of English printings and comes straight off Bandai’s cardlist, so it inherits their answers rather than a rule of thumb: their "booster packs 1–4 are Block 1, 5–8 are Block 2" shorthand disagrees with their own card list (OP16 reads Block 5), and OP05 lists different blocks for cards in the same set. The gap is the promo pool, whose printings carry synthetic numbers that match no page on the cardlist — the same reason `counter` stops at 56% of Characters.

Every field above is filterable under its own name, so a deck-building query reads the way the card does: `colors:Black cost:[1 TO 3] type:Character`. The older spellings in the table still resolve, so queries written against the DB-column names keep working.

`type` is a One Piece field. On `/pokemon` it is not a filter key at all — that game returns `supertype` and `types` as separate things — so `type:` there is a 400 naming both rather than a silent empty page.

Errors

StatusCodeWhen
400parse_errormalformed `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.
400unknown_fielda `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.
400invalid_valuethe 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.
400query_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.
400invalid_pagination`page`/`page_size` non-numeric, out of range, or `page × page_size` > 10,000
400invalid_language`language` is not a language code — expected `en`, `ja`, a comma list of codes, or `all`
400invalid_distinct`distinct` is anything other than `code`
400invalid_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.
400invalid_include`include` carries a value this endpoint does not offer. Cards and sealed accept `prices`; the expansion endpoints accept none at all.
404not_foundno 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.