Skip to documentation

Pricing API

Base URL: https://api.onelab.im.

No API key or account is required.

This public API has three jobs:

  1. Find the exact card and grade.
  2. Get its current Cardinal price.
  3. Get its historical price series.

Find a card and grade

Search for a card:

GET /api/catalog/search?search={text}

Read items[].product and keep product_id.

Resolve the requested grade:

GET /api/skus?product_id={product_id}&grading_authority={grader}&grade_label={grade}

For PSA 10:

GET /api/skus?product_id={product_id}&grading_authority=PSA&grade_label=10

Select the exact unqualified SKU unless the user requested a qualifier. Keep sku_id.

Already have a sku_id:

GET /api/skus/{sku_id}

Current Cardinal price

GET /api/skus/{sku_id}/prices

Read latest_close.

latest_close contains:

  • reference_on
  • source_through
  • closing_price_major

currency is returned separately.

This endpoint is only for the latest published Cardinal price.

Historical prices

Cardinal history:

GET /api/products/{product_id}/history.json?source=cardinal

Card Ladder history:

GET /api/products/{product_id}/history.json?source=card_ladder

Read series[] and select entries whose sku_id matches the requested grade. Card Ladder returns separate series for native history, collected values, and published estimates. Keep each price_basis separate.

Each series contains points[].

Each point contains:

  • date
  • price_major
  • price_basis

Never combine Cardinal and Card Ladder into one price series.

Use Cardinal history when the user asks for Cardinal pricing. Use Card Ladder history when the user explicitly asks for Card Ladder or provider history.

Do not use sales as prices.

Use only the public endpoints documented above.

Endpoint reference

Download OpenAPI.

GET /api/catalog/search

  • card_number (query, optional)
  • collection (query, optional)
  • collection_id (query, optional)
  • franchise (query, optional)
  • game (query, optional)
  • language_code (query, optional)
  • limit (query, optional)
  • product_kind (query, optional)
  • region_code (query, optional)
  • release_year (query, optional)
  • search (query, required)
  • sport (query, optional)
  • vertical (query, optional)

GET /api/products/{product_id}/history.json

  • product_id (path, required)
  • filename (query, optional)
  • source (query, optional)

GET /api/skus

  • after (query, optional)
  • grade_label (query, optional)
  • grading_authority (query, optional)
  • limit (query, optional)
  • product_id (query, optional)
  • search (query, optional)
  • sku_kind (query, optional)

GET /api/skus/{sku_id}

  • sku_id (path, required)

GET /api/skus/{sku_id}/prices

  • sku_id (path, required)