Skip to main content
The GemRate API gives you programmatic access to graded trading-card data: look up a specific certificate, get a card’s population and its history, resolve a grader spec to a card, and download bulk catalogs.

Base URL

All routes live under the /v1 version prefix:
https://api.gemrate.com/v1
Reads are GET requests over HTTPS. The contract evolves additive-only within v1.

Authentication

Send your API key in the x-api-key header on every request:
curl https://api.gemrate.com/v1/cards/<gemrate_id> \
  -H "x-api-key: YOUR_API_KEY"
  • Missing or invalid key → 401.
  • Valid key without access to a resource → 403.

Response envelope

Every success is { "data": …, "meta": { "request_id": … } }; lists put pagination in meta.pagination. Errors carry a stable, machine-readable code:
{
  "error": { "code": "cert_not_found", "message": "…", "details": { } },
  "meta": { "request_id": "req_abc123" }
}
Be a tolerant reader: ignore unknown fields and tolerate new enum values so your integration keeps working as the API grows.

Grades are universal

All population/grade data is reported on one universal grade scale (e.g. gem_mint, mint_plus, 9), so numbers are directly comparable across PSA, Beckett, SGC, and CGC. Per-grader counts are integer | null (null = that grader doesn’t issue the grade).

Resources

Certificates

A specific graded copy — GET /v1/certs/{grader}/{cert} (+ /images).

Cards

The card itself + population — GET /v1/cards/{gemrate_id} (+ /history).

Specs

A grader’s catalog entry — GET /v1/specs/{grader}/{spec_id}.

Catalogs

Bulk CSV download — GET /v1/catalogs/{catalog}.