How to Comp Trading Cards With eBay Sold Listings (Raw vs Graded, Parallels, No Comps)

To comp a trading card on eBay, search each version separately: raw, then each grade (PSA 9, PSA 10, and so on), excluding the other versions with minus words like -psa -bgs -cgc. Exclude lots, then take the median of 10 or more recent sales. Mixing raw and graded sales in one median gives a number that's wrong for every version. If a card has no sales, comp the nearest versions: an adjacent grade, print run or grader.
A raw trading card priced at $118 next to a graded GEM MT 10 slab of the same card priced at $1,150

"The hobby is obsessed with comps," as one popular r/sportscards thread put it. And for good reason: the same card can be worth $118 raw and $1,150 in a PSA 10 slab. Get the version wrong and your comp is off by 10x.

The #1 card comp mistake: one median for every version

Table: raw median $118 from 41 sales, PSA 9 $410 from 12, PSA 10 $1,150 from 6, all mixed together $140 from 59
Illustrative. The mixed median is wrong for every version.

A search for a card name returns raw copies, every grade, every grader, and lots. The "average" of all that describes a card that doesn't exist. Card app developers run into this at scale: one builder tracking 8,000 cards needed "different variations such as Raw, PSA 8 9 10", which turned 8,000 cards into 40,000 separate lookups. That's the right instinct. Every version is its own comp.

Search each version separately

  1. Start specific: name + set + card number. "charizard 4/102 base set holo", not "charizard".
  2. Raw: exclude graded copies with minus words: -psa -bgs -cgc -sgc -graded -slab.
  3. Graded: include the grader and grade in quotes, and exclude the neighbors: "psa 9" -"psa 10".
  4. Drop lots and "you pick" listings.
  5. Take the median, and check the count.

Python code that builds one query per version of a card (raw, PSA 9, PSA 10) with minus words, and prints the median and clean sale count for each
One query per version. Three medians, all correct.

Different graders aren't interchangeable

Collectors' rules of thumb, from recent threads: "BGS is usually valued 1 grade lower when comparing it to PSA," and "BGS only gets a premium for a 10." For a low-pop CGC 10, one experienced seller advised to "expect 10-30% of the PSA 10 price" when selling to a dealer. These vary widely by card. Treat them as starting points, and comp the exact grader and grade whenever sales exist.

Parallels and numbered cards

A /99, a /49 and a 1/1 of the same player are different cards. Include the serial run in the search (/49) and check titles: sellers often write "#/49" or "numbered to 49." If your exact run has no sales, use the comp ladder:

  • The next run up and down (/75 and /25 around a /49)
  • The same run, adjacent year or set
  • The base card's multiple: if base sells for $10 and /99 for $40, a /49 likely sits above $40

When there are no comps at all

"How to price extremely low pop CGC 10 with no comps? … the only comp is mine." It happens constantly with low-pop slabs and new parallels. Options, best first:

  1. Comp the ladder above and price between neighbors.
  2. Use a longer window. Product Research in Seller Hub shows older averages.
  3. Auction it with a sensible start price and let the market set the comp.

Whatever you do, a missing comp should be treated as "no data," not "$0."

Watch the format and the offers

Card auctions often close below Buy It Now sales of the same card (details), and a lot of card sales are accepted Best Offers where eBay hides the real price (details). Split by format, and drop offers with hidden prices.

Building a card app?

The same rules, in code: one query per version, lots excluded, hidden Best Offers left out of the median, and an honest zero when a card has no sales:

curl "https://api.soldcomps.io/v1/sold?q=charizard+4%2F102+%22psa+10%22" \
  -H "Authorization: Bearer $SALEHISTORY_KEY"

If you're pricing thousands of cards, read how to price a big catalog without 40,000 lookups a day.

More for card sellers and builders: Pokémon card prices, baseball card prices for a whole collection, and how card scanner apps get prices.

Frequently asked questions

How do I find sold prices for Pokémon cards on eBay?

Sign in, search the card name with set and number (for example 'charizard 4/102 base set'), tick Sold items, and add the grade if it's graded. Exclude other grades with minus words, and ignore lots.

How do you price a card with no sold comps?

Look at the nearest versions: the next grade up and down, the next print run (for example /75 and /49 for a /50 card), the same grade from a different grader, or the same card from a nearby set. Price between them and expect a wider range.

Is a BGS or CGC 10 worth the same as a PSA 10?

Usually not. Collectors commonly report that other graders' slabs sell below the PSA equivalent of the same grade, but the gap varies a lot by card. Comp the exact grader and grade when sales exist.

Should card comps use the last sale or the median?

The median of recent clean sales. A single last sale can be a no-bid auction, a damaged copy or a cancelled order. Check the date range too, because card prices can move within weeks.

Sources

  1. r/sportscards: The hobby is obsessed with comps (Aug 2026) (accessed Oct 22, 2026)
  2. r/PokeInvesting: BGS vs PSA sold prices for the same grade (Oct 2026) (accessed Oct 22, 2026)
  3. r/CGCCards: How to price an extremely low pop CGC 10 with no comps (Sep 2026) (accessed Oct 22, 2026)
  4. r/soccercard: Pricing parallels with no comps for your number (Jul 2026) (accessed Oct 22, 2026)
  5. r/scrapingtheweb: Daily prices for 8,000 cards across Raw, PSA 8, 9, 10 (Aug 2026) (accessed Oct 22, 2026)

SaleHistory sells an eBay sold-listings API, so we have a commercial interest in this topic. We link primary sources so you can check our work. Spotted something out of date? Email hello@soldcomps.io.