Get card pricing

GET /api/v1/pokemon/cards/{id}/prices read:catalog 1 credit

The dedicated pricing endpoint: the full raw condition ladder plus every graded tier we can value, with sold counts, confidence bands and a last-sold timestamp per tier. Prefer this over `include=prices` when pricing is the point of the call, since it returns strictly more detail for the same credit. Returns `{ card_id, pricing }` — the same `pricing` object `include=prices` embeds, with `band` and `last_sold_at` added to each graded entry.

Try it GET /api/v1/pokemon/cards/swshp_ja-104vh/prices

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

response
200 85ms preloaded server-side with the default context
object · 2 keys
{
  "success": true,
  "data": {
    "card_id": "swshp_ja-104vh",
    "pricing": {
      "currency": "USD",
      "market": 4586.4,
      "is_stale": false,
      "conditions": [
        {
          "condition": "NM",
          "price": 4586.4
        }
      ],
      "graded": [
        {
          "company": "BGS",
          "grade": "10",
          "value": 11100,
          "low": 11100,
          "high": 11100,
          "confidence": "med",
          "value_kind": "blended",
          "sold_count": 1,
          "last_sold_at": "2026-08-30T00:00:00.000Z",
          "band": {
            "median": 11100,
            "recent_median": 11100,
            "p10": 11100,
            "p90": 11100,
            "count": 1
          }
        },
        {
          "company": "BGS",
          "grade": "9",
          "value": 3120,
          "low": 2652,
          "high": 3588,
          "confidence": "low",
          "value_kind": "feed",
          "sold_count": 0
        },
        {
          "company": "PSA",
          "grade": "10",
          "value": 9900,
          "low": 7660,
          "high": 9940,
          "confidence": "med",
          "value_kind": "sold",
          "sold_count": 3,
          "last_sold_at": "2026-08-26T00:00:00.000Z",
          "band": {
            "median": 9900,
            "recent_median": 7100,
            "p10": 7660,
            "p90": 9940,
            "count": 3
          }
        }
      ],
      "market_updated_at": "2026-09-21T02:28:31.895Z",
      "trend_7d": {
        "direction": "down",
        "percent": -2
      }
    }
  }
}
tracks the inputs above
curl -X GET 'https://service.rip.fun/api/v1/pokemon/cards/swshp_ja-104vh/prices' \
  -H 'X-API-Key: rip_…'

Response fields (data)

FieldDescription
card_idThe card the payload belongs to, in its stored spelling
pricing.currencyISO currency of every amount in the payload (always `USD` today)
pricing.marketHeadline market value for the default (Near Mint, raw) condition, or `null` where we hold none. Every amount in this payload is a **number**, not a decimal string — the one place in the CardOS API where money is not a string
pricing.market_updated_atWhen the market value was last recomputed (ISO 8601). Omitted when we have never priced the card
pricing.is_stale`true` when the underlying sales window is thin enough that the value should be treated as indicative
pricing.trend_7d`{ direction: up | down | flat, percent }` — the trailing week, and the only window a card carries. There is no `trend_30d` or `trend_90d`. Omitted when there is no move to report
pricing.conditions[]`{ condition, price }` raw ladder for the card’s own variant: NM, LP, MP, HP, DMG. Two fields only — the band and the comp count live on the graded entries, not here. Empty when we hold no per-condition data for the card
pricing.graded[]`{ company, grade, value, low, high, confidence, value_kind, sold_count, trend?, last_sold_at?, band? }` per grading company and grade. `low`/`high` are nullable; `last_sold_at` and `band` come from this endpoint only, not from `include=prices`

Errors

StatusCodeWhen
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.