OrbTop

Card Ladder Graded Card Price Index Scraper

SPORTSBUSINESS

Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.

Card Ladder Graded Card Price Index Scraper

Scrape trending graded-card prices from Card Ladder — the card-investing industry's leading price index for sports and trading-card game collectibles.

What it does

Pulls Card Ladder's public "Ladder" price guide — the current top-trending cards per category — with real last-sale prices and dates, Card Ladder's own current index value, market cap, population counts, recorded sales volume, and 30-day price movement. Every row also carries the card's identity broken out into separate fields — year, set, player, variation, card number and image — so you can join it against your own inventory without parsing the card name. Covers all 11 categories Card Ladder tracks: Basketball, Baseball, Football, Hockey, Soccer, Pokemon, One Piece, Marvel, Wrestling, UFC, and Multi-Sport.

Input

Field Type Description
categories array Which category ladders to scrape. Leave empty to scrape all 11 categories.
maxItems integer Maximum number of card records to scrape across the selected categories.
resumeCursor string Cursor from a previous run's Output. Supply it to continue a large crawl without re-fetching — you are not re-charged for records already received.

Valid category values: Basketball, Baseball, Football, Hockey, Soccer, Pokemon, OnePiece, Marvel, Wrestling, UFC, MultiSport

Output

Each record represents one card at a specific grade:

{
  "card_name": "2000 Upper Deck Tom Brady #254",
  "grade": "PSA 10",
  "card_url": "https://www.cardladder.com/ladder/card/2000-upper-deck-tom-brady-star-rookie-base-254-psa-10",
  "category": "Football",
  "last_sale_usd": 8988,
  "last_sale_date": "2026-08-31T10:00:00.000Z",
  "index_value": 9083.79,
  "pct_change_30d": 10.96,
  "population": 179,
  "sales_volume": 226,
  "market_cap": 1625997.98,
  "year": "2000",
  "set_name": "Upper Deck",
  "player": "Tom Brady",
  "variation": "Star Rookie Base",
  "card_number": "254",
  "image_url": "https://firebasestorage.googleapis.com/v0/b/cardladder-71d53.appspot.com/o/cards%2Fthumb_L19V6BUUrBThIuL0iGHq?alt=media"
}
  • card_name — full card identity: year, set, player/character, and card number.
  • grade — the grading company + grade for this specific listing (e.g. PSA 10, BGS 9.5), or Raw for ungraded cards.
  • card_url — the card's page on Card Ladder.
  • category — the category ladder this row came from, so a multi-category run stays sortable.
  • last_sale_usd — the most recent recorded public sale price for this card/grade.
  • last_sale_date — when that sale was recorded.
  • index_value — Card Ladder's own current price index value for this card/grade. This can differ from last_sale_usd — it reflects Card Ladder's smoothed valuation rather than a single data point.
  • pct_change_30d — percent price change over the trailing 30 days.
  • population — grading-company population count for this card/grade. null for ungraded (Raw) cards, which have no population count to report.
  • sales_volume — number of recorded public sales Card Ladder holds for this card/grade.
  • market_cap — estimated total market value of the graded population. null wherever population is.
  • year, set_name, player, variation, card_number — the card's identity as separate fields, so you can match rows against your own inventory without parsing card_name. variation is null on cards with no parallel; card_number is null on the rare card that carries none.
  • image_url — Card Ladder's thumbnail image for the card.

Card Ladder's 6-month / 1-year / 2-year / all-time price-change figures are gated to paid subscribers and are not available to this actor — only the 30-day change is included.

Resuming a large crawl

Every run emits a resumeCursor in its Output. If a run stops before finishing — because it hit maxItems, a spend cap, or was aborted — start a new run with the same input plus that resumeCursor to continue from the queued work the previous run didn't reach.

  • You are not re-charged for records the earlier run already delivered.
  • Resume within your account's run-retention window — on the free tier, roughly the 10 most recent runs.
  • resumeCursor is opaque — supply it unmodified.

Example inputs

Scrape all categories (default):

{
  "maxItems": 100
}

Scrape only Pokemon and Basketball trending cards:

{
  "categories": ["Pokemon", "Basketball"],
  "maxItems": 50
}

Resume a previous run:

{
  "categories": ["Pokemon", "Basketball"],
  "maxItems": 50,
  "resumeCursor": "<paste the resumeCursor from the previous run's Output>"
}

Notes

  • Card Ladder's per-category ladder page surfaces a curated top-trending list (around 20 cards per category per run) rather than its full catalog — there is no publicly reachable pagination beyond that list.
  • population is null for ungraded (Raw) card rows — Card Ladder does not report a population count for raw cards.