Completed Pokemon sales as JSON, with PSA, BGS, CGC and the numeric grade read off each title, up to 1,095 days of history, and the real price on accepted Best Offer sales.
Add cards=1 and each row gains a card object with the grading service and the numeric grade pulled out of the title, so you are not string matching "PSA10" against "PSA 10" yourself. Verified 13 October 2026 on a single graded query: 152 sales came back with the grader parsed as PSA on 147 of them, CGC on 4 and BGS on 1, and grades spread across 10, 9, 8.5, 8 and 3.
grader, grade, graded and first_edition all work as filters, so you can ask for exactly PSA 10 rather than filtering afterwards.
curl -G https://api.compsapi.com/v1/sold \
-H "Authorization: Bearer YOUR_KEY" \
--data-urlencode "q=charizard psa 10" \
--data-urlencode "days=1095" \
--data-urlencode "best_offer=1"
This matters more than anything else on this page, so here is a real measurement rather than a promise. Searching charizard base set psa 10 across three years returned 152 sales with a median of $16.69. A PSA 10 Base Set Charizard is worth orders of magnitude more than that. The median was not wrong, the query was: eBay matched loosely and filled the page with cheap singles, lots and unrelated Charizards.
Adding the card number moved it a long way. charizard 4/102 psa 10 returned a median of $380.01 over 199 sales. Better, and still not the card most people mean.
Because sets reprint numbering. 4/102 is Base Set Charizard, and it is also the 30th Anniversary Classic Collection reprint, which sells for a fraction as much and appeared throughout those results. A card number identifies a card within a set, not across sets.
What actually works is naming the set and the grade and letting the filters do the rest. Verified the same day: charizard base set shadowless 4/102 with cards=1, graded=true, grader=PSA and grade=10 returned 4 sales, the card object parsed on 4 of 4, every row PSA, every row grade 10, and every title a genuine Base Set Shadowless 1st Edition 4/102.
Those four rows ran from $198.70 to $4,950. Same nominal card, same grader, same grade, a 25x spread. eBay titles are written by sellers, and some of them describe something other than what sold. So take the median and the spread, not a single row, and treat a tight cluster as a price and a wide one as a question. Any source that hands you one clean number for a card like this is hiding this problem rather than solving it.
Narrow further with min_price and max_price when you already know roughly where the real market sits, and remember exclude takes junk and sealed separately: sealed is not part of junk.
Cards above a few hundred often sell through an accepted offer, and on those eBay's public sold page reports the asking price rather than what was paid. Across 5,859 matched sales that ran high 99.0% of the time by a median of 14.9%. We return the settled amount, see Best Offer prices. Depth matters here too: a single quarter cannot price a card across set rotations and reprints, and the full 1,095 days is on Growth and above.
100 free requests a month · every filter on · no card
Get a free key