How many copies of a card exist at each grade, per grading company. Population is the scarcity half of value: two cards with the same market price are not the same asset if one has nine hundred PSA 10s and the other has twelve.
Not live yet. The population route is documented ahead of its build: GET /api/v1/{game}/cards/{id}/population is not deployed, so
a call today returns 404 and costs no credits. It
has no endpoint page or "Try it" runner in the sidebar for that reason. Everything below is
the shape it will return and the caveats that will come with it — design against it, but
don't ship a UI that has nothing to render.
{
"card_id": "sv3pt5-6",
"total_graded": 4218,
"companies": [
{
"company": "PSA",
"total": 3140,
"gem_rate": 0.31,
"updated_at": "2026-07-26T04:12:00Z",
"grades": [
{ "grade": "10", "count": 973, "qualifier_count": 0, "share": 0.310 },
{ "grade": "9", "count": 1402, "qualifier_count": 11, "share": 0.447 },
{ "grade": "8", "count": 488, "qualifier_count": 6, "share": 0.155 }
]
},
{ "company": "CGC", "total": 702, "gem_rate": 0.44, "grades": [ … ] },
{ "company": "BGS", "total": 376, "gem_rate": 0.19, "grades": [ … ] }
],
"scarcity": { "rank": 12, "percentile": 0.97 }
} | Field | What it means |
|---|---|
companies[].total | Every copy that company has slabbed, across all grades. This is the denominator for share. |
companies[].gem_rate | Fraction of that company's submissions that came back at the top grade. A low gem rate on a high total means the card is genuinely hard to grade well, usually because of centering or edge wear on a dark border. |
grades[].count | Copies at that grade. Half grades (BGS 9.5, CGC 9.5) appear as their own entries. |
grades[].qualifier_count | Of those, how many carry a qualifier (PSA OC, MK, ST, MC). Qualified slabs trade well below clean ones, so exclude
them when you compare against a price. |
scarcity.percentile | Where this card's top-grade population sits against every other card in the same
expansion. 0.97 means only 3% of the set has fewer top-grade copies. |
Population only ever goes up. It counts slabs graded, not slabs that still exist, and cracked, lost and destroyed cards are never subtracted. Treat it as an upper bound on supply.
Resubmissions inflate it. A card cracked and resubmitted for a better grade is
counted at both. Companies periodically prune known resubmissions, which is why a count can occasionally fall.
Companies are not comparable one-to-one. A CGC 10 and a PSA 10 are not the same bar. Compare grades within a company, not across them.
Reports are re-pulled from each company on a rolling schedule: daily for actively traded cards,
weekly for the long tail. companies[].updated_at tells you when that company's
numbers were last read, and it can differ between companies in the same response. Population
moves slowly; polling faster than daily just spends credits.
The graded values in pricing data use the same company and grade keys, so the two responses join cleanly. A common pattern is to render value alongside population per grade. That's the view that shows a PSA 9 is worth a third of a PSA 10 and that there are one and a half times as many of them.
When it ships, it will cover:
Coverage follows what the grading companies publish, so games too new to have a meaningful slab market won't have reports at all. The coverage table on the index is always current, and marks which families are live today.