Card Ladder APIcardladder.com ↗
Access Card Ladder's trading card price guide via API. Get CL values, confidence scores, sales history, market indices, and cert lookups across 14 endpoints.
What is the Card Ladder API?
The Card Ladder API exposes 14 endpoints covering trading card valuations, sales history, market indices, and graded-cert lookups across sports and collectible card categories. The search_cards endpoint accepts free-text queries by player, set, year, or any combination and returns current CL values alongside market values for each matching card. Card IDs returned by search feed directly into get_card_value, get_card_sales, and get_card_sales_detail for deep per-card data.
curl -X GET 'https://api.parse.bot/scraper/97d5f4bc-6c65-4546-8f71-76149a5533cb/search_cards?page=0&sort=score&limit=5&query=Michael+Jordan&category=Basketball' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search across Card Ladder's trading card database. Returns cards matching the query with current values, market data, and price trends. Results are ranked by relevance score by default and paginated with page (zero-based) and limit. Optional filters narrow the result set on Card Ladder's own card fields and combine with AND: category, condition (the graded condition label of the card page, or 'Raw' for ungraded cards, so condition='Raw' returns only raw cards and excludes every PSA/BGS/CGC/SGC entry) and variation (the exact variation label; Card Ladder has no negative filter, so variation='Base' is the way to exclude autographs, parallels and inserts). Condition and variation filters are exact label matches: a label Card Ladder does not use for any matching card yields a valid empty result (cards empty, total_hits 0). Each card includes its unique ID for use with get_card_value and get_card_sales.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page index for pagination. |
| sort | string | Sort order for results. |
| limit | integer | Maximum number of results per page. |
| queryrequired | string | Search query for card name, player, set, year, or any combination (e.g. 'Michael Jordan', '1986 Fleer', 'Pikachu PSA 10'). |
| category | string | Filter results by card category. Omitted returns all categories. |
| condition | string | Filter by the card's condition label as Card Ladder writes it: 'Raw' for ungraded cards, or a grader and grade such as 'PSA 10', 'BGS 9.5', 'CGC 10 Pristine' (the condition field of results). The grader code's casing is normalised ('raw', 'psa 10' are accepted); the rest must match Card Ladder's label exactly. Omitted returns every condition. |
| variation | string | Filter by the card's exact variation label as Card Ladder writes it (the variation field of results), e.g. 'Base' for the base card only (excludes autographs, parallels and inserts), or a parallel name such as 'Chrome Refractor'. Case-sensitive exact match; omitted returns every variation. |
{
"type": "object",
"fields": {
"page": "integer current page index",
"cards": "array of card objects with id, label, slug, player, year, set, number, variation, condition, category, current_value, market_value, num_sales, pop, last_sold_date, and percent change metrics",
"limit": "integer page size",
"total_hits": "integer total number of matching cards"
},
"sample": {
"data": {
"page": 0,
"cards": [
{
"id": "JvbEFar2vAm92D23yFXU",
"pop": 131,
"set": "Star",
"slug": "1984-star-michael-jordan-base-101-psa-6",
"year": "1984",
"label": "1984 Star Michael Jordan Base #101 PSA 6",
"number": "101",
"player": "Michael Jordan",
"category": "Basketball",
"condition": "PSA 6",
"num_sales": 95,
"variation": "Base",
"market_value": 102023,
"current_value": 102023,
"last_sold_date": "2026-07-19T10:00:00.000Z",
"annual_percent_change": 2.52,
"monthly_percent_change": 0.045,
"quarterly_percent_change": 0.64
}
],
"limit": 5,
"total_hits": 1847
},
"status": "success"
}
}About the Card Ladder API
Card Valuation and Sales History
get_card_value returns the Card Ladder computed value (cl_value), a confidence score on a 1–5 scale, market value, price movement, gap between CL and market value, population count from the grading company, and a newest_sale object with price and date. get_card_sales aggregates that card's transactions by day — each entry gives a date, combined price, and count of sales on that date — while get_card_sales_detail exposes individual transactions with ISO timestamps, selling platform, listing type, seller name, feedback score, listing title, sale URL, and image URLs, paginated up to 50 records per page.
Certificate and Bulk Lookups
search_by_cert resolves a single graded slab's certificate number against a grading company (e.g. psa, bgs) and returns the matched card with up to 10 recent sales and current marketplace listings. search_by_certs_bulk accepts up to 200 cert/grader pairs in one POST body, resolves them in parallel, and returns per-cert errors without failing the whole batch. get_cert_values_bulk is a lean alternative that returns only three fields per cert: last sale price for that exact cert, CL value, and market value. get_cert_full_profile returns the most complete single-cert view: grade label, image, card ID usable in other endpoints, sales history, and an optional grade_summary with per-grade archive data controlled by the include_grade_summary boolean.
Market Indices and Set Browsing
list_indices enumerates all Card Ladder market indices — sport categories, market segments like Modern and Vintage, and curated sets like Bowman 100 — with daily_index, total_cards, and period percent changes. get_index_history returns the full time series for one index as {date, value} pairs from as far back as 2004. list_sets enumerates every set Card Ladder tracks for a given game (e.g. Pokemon, Magic, One Piece), returning exact set labels usable as set_name in get_pokemon_set_psa_prices. That endpoint walks a set and returns PSA grades 1–10 values for every card/grade combination that has verified sales, paginated via a cursor continuation token. get_showcase fetches cards from a public Card Ladder showcase URL, including collection metadata and which cards are linked to a Card Ladder card page.
The Card Ladder API is a managed, monitored endpoint for cardladder.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cardladder.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cardladder.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Portfolio valuation: resolve a list of cert numbers via
search_by_certs_bulkto get current CL and market values in one call. - Price trend tracking: pull
get_index_historyfor the Basketball or Pokemon index to chart long-term market movement since 2004. - Deal-finding: compare
cl_valueandmarket_valuegap fromget_card_valueto spot cards trading below their computed value. - Sales comps: use
get_card_sales_detailto retrieve per-transaction sale prices, platforms, and listing types for a specific graded card. - Set completion pricing: iterate
get_pokemon_set_psa_priceswith cursor pagination to build a PSA grade price matrix for an entire set. - Showcase auditing: fetch a collector's public showcase via
get_showcaseto see each card's Card Ladder card ID and linked valuation data. - Quick card lookup: use
search_card_salesto get the top-matched card and its aggregated sales history in a single query without a separate card ID lookup.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Card Ladder have an official developer API?+
What does `get_card_value` return beyond just a price?+
get_card_value returns cl_value (Card Ladder's computed dollar value), market_value, a confidence score from 1 to 5, price_movement, the gap between CL and market value, pop (population count from the grading company), and a newest_sale object with price and date.How does bulk cert lookup handle bad certificate numbers?+
search_by_certs_bulk and get_cert_values_bulk both accept up to 200 cert/grader pairs. Certs that fail to resolve appear in the errors array with a message field; the rest of the batch still returns in results. One bad cert does not abort the whole request.Are raw per-transaction sale records available, or only daily aggregates?+
get_card_sales returns daily aggregates — one entry per date with a combined price and count. get_card_sales_detail returns one record per transaction with platform, listing type, seller feedback, and sale URL, paginated up to 50 records per page.Does the API cover raw, ungraded card sales or only graded slabs?+
search_by_cert, get_cert_full_profile, get_cert_values_bulk) are oriented toward graded cards with certificate numbers. Sales returned through get_card_sales and get_card_sales_detail are tied to the cert a Card Ladder card page tracks. Data for raw, ungraded copies is not currently surfaced as a dedicated endpoint. You can fork this API on Parse and revise it to add an endpoint targeting ungraded sales if that data becomes available.