CGC Cards API

How many copies CGC graded, at every grade - and what is behind any CGC cert number

endpoints
8
credits per call
1–2

The CGC Cards API returns CGC's own grading data as clean JSON.

This page covers what the CGC Cards API returns, who uses it, a real response and pricing. Every parameter and response field is in CGC Cards API parameters and responses →

POST/cgc/v1/cert_lookup
Real result, captured Nov 8, 2026
subject

Haunter

cert_number
6090960083
grading_company
CGC
collectible
tcg
card_name
Haunter
game
Pokémon
8 active endpoints, on 1 and 2 credit tiers.cert_lookup · search · card_population · set_population · sets · subcategories+2 more ↓OpenAPI 3.0 spec ↗

2 credits per call≈ $2/1,000 calls1,000 free credits, no card

Get a free API key
Try it live

Run the call yourself, on the real endpoint

Change a parameter and press Try it. The response on the right is what your code will receive.

CGC Cards API

3 of 8 endpoints, ready to run

View docs ↗

A CGC certification number in: card, set, number, year, language, grade as printed, autograph grade, grade date, slab photos and the card's population at and above that grade.

2 credits1 required · 0 optional
POST/cgc/v1/cert_lookup
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

Try every endpoint in the playground

Endpoints

What CGC Cards endpoints does ReefAPI ship?

8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

  • cert_lookup

    2 cr

    Verify a CGC-graded card by its certification number (the number on the slab label).

    required
    cert_number
    optional
    include_population, max_rotations
  • search

    2 cr

    Find cards in CGC's population report by name, player, set or number ("charizard base set", "…

    required
    query
    optional
    collectible, category, year, language, limit, include_population, max_rotations
  • card_population

    1 cr

    One card's CGC population.

    required
    population_id
    optional
    collectible, max_rotations
  • set_population

    2 cr

    Every card CGC has graded from one set, 50 a page, each with its count at every grade (Perfec…

    required
    set_id
    optional
    collectible, query, page, max_rotations
  • sets

    2 cr

    The sets CGC files under one series (e.g.

    required
    subcategory_id
    optional
    collectible, query, language, sort, page, max_rotations
  • subcategories

    1 cr

    The series / eras CGC files under one game or sport (Pokémon.

    required
    category
    optional
    collectible, max_rotations
  • categories

    1 cr

    Every game, sport and non-sports line in CGC's population report with how many cards CGC grad…

    required
    —
    optional
    collectible, query, sort, max_rotations
  • grading_scale

    1 cr

    CGC Cards' published grading scale.

    required
    —
    optional
    max_rotations

Every parameter, every allowed value →

Missing a CGC Cards endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
How it works

How the CGC Cards API works

CGC Cards is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

Authenticate01
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 632 engines.

Call02
POST /cgc/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

Pay03
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and nothing is cached: every call reads the source live.

Read04
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Recipe

Is this slab rare? Two calls

From the number on a CGC label to the card's place in CGC's population.

01cert_lookup
POST/cgc/v1/cert_lookup
{"cert_number": "6090960001"}

Haunter, Japanese ex Starter Set, GEM MINT 10: 4,191 at this grade, 4,796 higher (all Pristine 10).

02card_population
POST/cgc/v1/card_population
{"population_id": "2325252"}

The full breakdown: 10,912 graded, 82% of them 10s, top grade Pristine 10.

Grade, photos and scarcity of one slab in two calls.

request
curl -X POST https://api.reefapi.com/cgc/v1/cert_lookup \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"cert_number":"6090960083"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "cgc",
    "endpoint": "cert_lookup",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}
Fields

CGC has three different 10s - and a 1999 Base Set Charizard has 298 of them out of 15,118

CGC's population report splits the top grade three ways. Measured on 2026-11-08 for Pokémon Base Set Unlimited Charizard 4/102: 15,118 graded, 1 Perfect 10, 11 Pristine 10, 286 Gem Mint 10 - a 2% share of 10s. For a 2025 Japanese Haunter from the Mega Gengar ex starter set the same share is 82%, with 4,796 Pristine 10s. The API returns each column separately, never one merged '10'.

CGC gradekey in by_gradewhat it means
Perfect 10perfect_10Retired top grade: Pristine with all four sub-grades at 10; old slabs keep it
Pristine 10pristine_10Virtually flawless, 50/50 centering; gets CGC's Pristine label
Gem Mint 10gem_mint_10A 10 that misses one Pristine criterion (centering up to 55/45)
Mint+ 9.5 … Poor 19.5 … 1Numeric grades, half points included
Authentic / Authentic Alteredauthentic / authentic_alteredGenuine but not numerically graded / altered (e.g. trimmed)

total counts Authentic and Authentic Altered too, exactly as CGC prints it; numeric_graded and gem_rate_percent leave them out, so the share of 10s is over cards that received a number. In a cert lookup, 'higher grades' is CGC's own figure: the sum of every column above the slab's grade, Perfect 10 first.

Coverage

What CGC publishes, and what it does not

CGC Cards only - trading card games, sports and non-sports cards graded by CGC. Measured 2026-11-08: 39 of 39 live cases across eight actions, 13 of 13 values matched CGC's own pages, 31 offline checks on real responses. Some of these lines go against us.

Population

23 grade columns for every card.

Certificates

Card, set, number, year, grade and date, with photos when CGC has them (1 of the 12 certs we found live had none).

Search

The top 50 matches per card type. Use set_population for a complete list.

Not published

Sub-grades (CGC stopped them in 2023; 0 of 70 sampled certs had any), the holder label type, and population history over time.

Use cases

What people build with CGC Cards

The jobs this data is most often used for.

01

Slab verification at checkout or in a marketplace listing: cert number in, card, grade and CGC's photos out

02

Population-aware pricing: how many copies exist above the grade being sold

03

Grading ROI: the share of 10s CGC gave a card before you submit yours

04

Set trackers and registries: every card of a set with its graded counts

8

endpoints

1/2

credits per call

Pricing

What CGC Cards data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

$0.67–$1.50 / 1,000 credits
Full pricing →
  • 1,000 free credits on signup, no card
  • One key, all 632 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire
no credit card1,000 free credits · instant API key · pay by card or crypto
Quickstart

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/cgc/v1/cert_lookup \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"cert_number":"6090960083"}'
python
import os
import requests

REEF_KEY = os.environ["REEF_KEY"]

r = requests.post(
    "https://api.reefapi.com/cgc/v1/cert_lookup",
    headers={"x-api-key": REEF_KEY},
    json={
        "cert_number": "6090960083"
    },
    timeout=90,
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up CGC Cards.

Can I verify a CGC slab by its certification number?▾

Yes. cert_lookup takes the 10-digit number on the label (or a CGC cert URL) and returns the card, set, number, year, language, variants, the grade as printed with CGC's grade name, autograph grade, grade date and the front and back photos CGC took of the slab. An unknown number returns NOT_FOUND and costs nothing; CGC notes that a cert only appears once the order has shipped.

How many copies of a card has CGC graded at each grade?▾

card_population returns all 23 columns of CGC's report for one card - Perfect 10, Pristine 10, Gem Mint 10, Mint+ 9.5, 9 down to 1, Authentic and Authentic Altered - plus the total, the number of 10s, the share of 10s and the highest grade reached. set_population returns the same for every card in a set, 50 cards a page. Every value matched CGC's own population page in our 2026-11-08 check (7 cards, 24 cells each).

Does it cover sports cards and non-Pokémon games?▾

Yes. CGC's report has 461 trading card game categories (Pokémon, One Piece, Magic, Yu-Gi-Oh!, Lorcana, Weiss Schwarz, Dragon Ball and hundreds more), 14 sports (baseball, basketball, football, soccer, hockey …, filed by decade) and 111 non-sports lines (Pokémon Topps and Carddass, Marvel, Star Wars, phone cards …). On 2026-11-08 that was about 14.4 million TCG cards, 4.0 million sports cards and 1.8 million non-sports cards.

What is the difference between Pristine 10 and Gem Mint 10?▾

Both are 10s on CGC's scale. Pristine 10 is virtually flawless with 50/50 centering and gets CGC's Pristine label; Gem Mint 10 is a 10 that misses one Pristine criterion (centering up to 55/45 front, 75/25 back). The API keeps them apart in every population and names the grade the way CGC prints it. grading_scale returns CGC's full published definitions.

Does it return sub-grades?▾

When the cert page prints them, cert_lookup returns centering, corners, edges and surface. CGC stopped offering sub-grades in 2023, and none of the 70 recent certs we sampled carried them, so for most slabs subgrades is null.

How do I find a card if I do not know its CGC id?▾

search with the card name, player, set or number ("charizard base set", "tom brady 2000"), optionally narrowed by game or sport, year and language. CGC answers with its top 50 matches per card type; every row carries the population_id that card_population takes, and include_population attaches the counts to the first 10 rows.

What is the CGC Cards API?▾

CGC Cards API is a ReefAPI endpoint group for cgc's own graded-card population report and cert verification as json: how many copies cgc graded at every grade, for pokémon, magic, one piece, sports and 580+ categories. It returns live JSON through POST requests under /cgc/v1.

Is the CGC Cards API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. CGC Cards calls use the same shared credit balance as every other ReefAPI engine.

Do I need a CGC Cards login or account?▾

No login to CGC Cards is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the CGC Cards data?▾

The page example is captured from a live cert_lookup call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the CGC Cards API use?▾

CGC Cards actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call CGC Cards from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call cgc actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the CGC Cards API a CGC Cards scraper?▾

It is the managed alternative to a DIY CGC Cards scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same cgc's own graded-card population report and cert verification as json: how many copies cgc graded at every grade, for pokémon, magic, one piece, sports and 580+ categories back as clean JSON.

Why does my CGC Cards scraper keep getting blocked?▾

Most CGC Cards scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

Contact

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 631 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-11-08.