grades rollup and
each by_grader entry are already expressed in the same universal keys, so a 9
means the same thing whether it came from PSA, Beckett, SGC, or CGC.
The scale
The universal scale has two axes:- The main ladder —
auth_altered,auth,1…9(whole + half steps),mint_plus(9.5),gem_mint(10),pristine,perfect. This is what almost everything is keyed by. - A PSA-only qualifier axis —
q1…q9plusq1_5. These are PSA grades that carry a qualifier (e.g. OC, ST, MK). No other grader issues them, so this axis isnull/absent for Beckett, SGC, and CGC.
gem_mint, pristine, and perfect — are the gem tiers:
they’re what gem_total / gem_rate count.
How each grader maps onto it
Each grader’s native grade keys are folded onto the universal ladder. Most grades line up one-to-one, but the top of the scale is where graders genuinely differ:| Universal grade | Label | PSA | Beckett | SGC | CGC |
|---|---|---|---|---|---|
perfect | Perfect | — | 10 Pristine | — | 10 Perfect |
pristine | Pristine | — | 10 Black | 10 Pristine | 10 Pristine |
gem_mint | Gem Mint (10) | 10 | 9.5 | 10 | 10 |
mint_plus | Mint+ (9.5) | 9.5 | — | 9.5 | 9.5 |
1 … 9 | 1 – 9 (whole + half) | 1 – 9 | 1 – 9 | 1 – 9 | 1 – 9 |
auth | Auth | Auth | — | Auth | Auth |
auth_altered | Auth Altered | — | — | — | AA |
| Universal grade | PSA |
|---|---|
q1, q1_5, q2 … q9 | Q1, Q1.5, Q2 … Q9 |
The quirks worth knowing
- Beckett has no
authand nomint_plus(9.5). Beckett’s 9.5 maps directly togem_mint(10); its straight tens — 10 Black and 10 Pristine — sit above everyone else’s 10 aspristineandperfect. - PSA and SGC have no
perfect. PSA tops out atgem_mint(10) withmint_plus(9.5) just below, and has nopristineat all; SGC’s 10 Pristine is itspristine. - Qualifiers are PSA-only. Beckett, SGC, and CGC have no qualifier grades.
auth_alteredis CGC-only.
A grader-specific grade that a company doesn’t issue is reported asnullin that grader’s block (versus0, which means “issues it, but none for this card”).
Download the full map
The complete map — every universal grade with each grader’s label and the PSA qualifier axis — is available to download as a spreadsheet, or to fetch live from the API.CSV
One row per grade, a column per grader. Best for spreadsheets.
API · GET /v1/grades
The same map as structured JSON, with a
version (content hash) that changes
only when the map changes. Best for code and LLM context.What it looks like in a response
Population is reported as a cross-gradergrades rollup plus a by_grader map,
both on the universal scale. Abridged from GET /v1/cards/{gemrate_id}:
psa.grades.pristine and psa.grades.perfect are null — PSA doesn’t
issue those tiers — while the top-level grades rollup still carries pristine and
perfect counts contributed by the graders that do. qualifiers appears only under
psa.
Why a universal scale
Without it, you’d have to know that Beckett’s9.5 is another grader’s 10, that
PSA qualifiers exist at all, and which grader issues pristine vs perfect — and
re-derive cross-grader totals by hand. The universal scale collapses all of that
into one vocabulary, so combined population, gem rates, and “this grade or higher”
comparisons work uniformly across every grader.