SportsCardsPro API & Scraper
The SportsCardsPro API turns sportscardspro.com, the sports-card site of PriceCharting, into JSON in six actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search finds cards by player, set, year or card number, narrowed by sport (baseball, basketball, football, hockey, soccer, racing, wrestling, UFC, boxing, golf, tennis), by one set, to rookie cards only and with or without parallels; every row has the card's id, set and its Ungraded, Grade 9 and PSA 10 prices. card returns one card in full: the price of every grade the site tracks (Ungraded, Grade 1 to Grade 9.5, PSA 10, BGS 10, BGS 10 Black, CGC 10, CGC 10 Pristine, SGC 10, TAG 10, ACE 10), the change since the last update and the sales volume of the headline grades, the PSA and CGC population for grades 1 to 10, the card number, rookie flag and eBay ePID. price_history returns the monthly series behind the chart for each headline grade, sales returns the completed sales the prices are computed from (date, listing title, sold price, marketplace and link, up to 30 per grade), set lists every card of a set 150 at a time and sets lists the popular sets of a sport with its most searched players and card brands. Prices are SportsCardsPro's own estimates in US dollars, computed from completed sales. One ReefAPI key, the standard { ok, data, meta, error } envelope, no SportsCardsPro account.
The six headline grades of a sports card
SportsCardsPro shows six headline prices per card and a Full Price Guide with every other grade. Read off card pages on 2026-10-15; the API returns each price with the label the page prints.
| source_key | grade | example (1984 Star Michael Jordan #101) |
|---|---|---|
| used | Ungraded | 9,999.00 |
| cib | Grade 7 | 111,325.00 |
| new | Grade 8 | 132,169.53 |
| graded | Grade 9 | 221,890.03 |
| boxonly | Grade 9.5 | 244,079.00 |
| manualonly | PSA 10 | null (no price) |
Search and set rows carry three of them: Ungraded, PSA 10 and Grade 9. The Full Price Guide in card adds Grade 1 to Grade 6, BGS 10, BGS 10 Black, CGC 10, CGC 10 Pristine, SGC 10, TAG 10 and ACE 10. A grade the site has no price for is null.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/sportscardspro/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "michael jordan",
"sport": "basketball-cards"
}
}{
"ok": true,
"meta": {
"api": "sportscardspro",
"endpoint": "search",
"mode": "live",
"latency_ms": 1005,
"record_count": 100,
"bytes": 38708,
"cache_hit": false,
"query": "michael jordan",
"filters_applied": {
"sport": "basketball-cards",
"sort": "popularity"
},
"possibly_truncated": true,
"source_row_cap": 100,
"has_more": false,
"rows_outside_sport": 0,
"upstream_requests": 2,
"warnings": [],
"currency": "USD",
"charged_credits": 2,
"version": "1.0.0",
"request_id": "5a2428a6a6e54424",
"queue_ms": 1.3,
"fetched_at": "2026-10-15T13:28:22.661Z"
},
"data": {
"rows": [
{
"id": "72584",
"name": "Michael Jordan #57",
"set_name": "Basketball Cards 1986 Fleer",
"set_id": "G155",
"category": "basketball-cards",
"image": "https://storage.googleapis.com/images.pricecharting.com/g6rm2ocsaugjzeot/240.jpg",
"print_run": null,
"prices": [
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
}
]
},
{
"id": "5408284",
"name": "Michael Jordan #26",
"set_name": "Basketball Cards 1990 Fleer",
"set_id": "G182",
"category": "basketball-cards",
"image": "https://storage.googleapis.com/images.pricecharting.com/corr3ll6r6vryf436f6v/240.jpg",
"print_run": null,
"prices": [
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
}
]
},
{
"id": "83502",
"name": "Michael Jordan #278",
"set_name": "Basketball Cards 1995 Skybox Premium",
"set_id": "G249",
"category": "basketball-cards",
"image": "https://storage.googleapis.com/images.pricecharting.com/correi7irp4d2aakcqor/240.jpg",
"print_run": null,
"prices": [
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
},
{
"condition": "[trimmed-depth]",
"source_key": "[trimmed-depth]",
"price_usd": "[trimmed-depth]"
}
]
}
]
}
}What the SportsCardsPro API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search SportsCardsPro by player, set, year or card number. Each row has the card id, set, sport and its Ungraded, PSA 10 and Grade 9 prices. The source returns at most 100 rows and has no further pages; narrow with sport / set_id / rookies_only. | Pricing teams call search to search SportsCardsPro by player, set, year or card number. | query, sport, rookies_only, exclude_variants, set_id, ... |
| card | One card in full by its id: the price of every grade the site tracks (Full Price Guide), the headline grades with their last change and sales volume, the PSA and CGC population report by grade, card number, rookie flag, eBay ePID, images and how many sold listings each grade shows. | Marketplace operators call card to get one card in full by its id. | id |
| price_history | The monthly price history behind the card's chart, one series per headline grade (Ungraded, Grade 7, 8, 9, 9.5, PSA 10); the last point is the current month and equals the current price. Months without a price are null. | Catalog enrichment teams call price_history to get the monthly price history behind the card's chart, one series per headline grade (Ungraded, G…. | id |
| sales | The completed sales the site shows for a card, per grade (up to 30 per grade, newest first): date, listing title, sold price (best-offer: accepted price plus list price), marketplace and the item link. | Retail analysts call sales to get the completed sales the site shows for a card, per grade (up to 30 per grade, newest first). | id, condition |
| set | Every card of one set with its Ungraded, PSA 10 and Grade 9 prices and the latest price change, 150 per page. | Pricing teams call set to get every card of one set with its Ungraded, PSA 10 and Grade 9 prices and the latest price chang…. | set, sort, cursor |
| sets | The popular sets the site lists for one sport (with the slug the `set` action takes), plus the sport's most popular players and card brands. | Marketplace operators call sets to get the popular sets the site lists for one sport (with the slug the `set` action takes), plus th…. | sport |
Call search from your stack
curl -X POST https://api.reefapi.com/sportscardspro/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"michael jordan","sport":"basketball-cards"}'import requests
r = requests.post(
"https://api.reefapi.com/sportscardspro/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "michael jordan",
"sport": "basketball-cards"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/sportscardspro/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "michael jordan",
"sport": "basketball-cards"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.sportscardspro.search with {"query":"michael jordan","sport":"basketball-cards"}.Who uses this API and why
- Price a collection: card for each card gives the current price in the exact grade you own.
- Decide whether to grade: compare Ungraded with Grade 9 and PSA 10, and check how many PSA copies exist.
- Chart a card: price_history per grade, one point a month.
- Check a deal: sales shows what the same card in the same grade really sold for, with date and marketplace.
- Track a set: set pages through every card of a set with three headline prices and the latest change.
Questions developers ask before integrating
Is the price a real sale?
No. It is SportsCardsPro's current market price for each grade, calculated from completed sales. The sales themselves come from the sales action with date, listing title, sold price and marketplace. On the cards checked every headline price matched the card's Full Price Guide and the last point of its price chart.
Which grades do I get?
Ungraded, Grade 1 to Grade 9.5, PSA 10, BGS 10, BGS 10 Black, CGC 10, CGC 10 Pristine, SGC 10, TAG 10 and ACE 10 — 19 grades for the 1984 Star Michael Jordan #101, 11 of them priced. Each card also carries the PSA and CGC population for grades 1 to 10 (149 PSA 7 copies of that Jordan).
How do I find only rookie cards?
Set rookies_only=true on search: 'michael jordan' returns 100 cards, with rookies_only 58. sport limits the search to one sport, set_id to one set, and exclude_variants leaves out parallels.
How many search results can I get?
SportsCardsPro returns at most 100 cards for a search and has no further pages; meta.possibly_truncated says when a search hit that limit. Narrow it with sport, set_id or rookies_only, or list a whole set with set, which pages through every card 150 at a time.
What is in the sold listings?
Up to 30 completed sales per grade, newest first: date, listing title, sold price, the marketplace (eBay, Heritage, Goldin, Fanatics) and the link. For an eBay best-offer sale both the accepted price and the list price are returned. Use condition to get one grade, for example condition=Grade 9.
How is this different from the Card Ladder API?
SportsCardsPro gives a price for every grade from its own guide, the PSA and CGC population and the individual sold listings. Card Ladder gives its CL Value, a per-day sales history, market and player indexes. Many teams use both: the same card, two independent price sources.
How do I go from a search row to the card?
Every search and set row carries id (3225905 is the 1984 Star Michael Jordan #101). Pass it to card, price_history or sales as it is; a sportscardspro.com/game/… link works too. Cards also return the eBay ePID to join with listings elsewhere.
What is the SportsCardsPro API?
SportsCardsPro API is a ReefAPI endpoint group for sportscardspro's sports card price guide as json: the current price of every grade from ungraded to psa 10 for baseball, basketball, football, hockey and soccer cards, with the psa and cgc population, the monthly price history and the sold listings behind it. It returns live JSON through POST requests under /sportscardspro/v1.
Is the SportsCardsPro API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. SportsCardsPro calls use the same shared credit balance as every other ReefAPI engine.
Do I need a SportsCardsPro login or account?
No login to SportsCardsPro 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 SportsCardsPro data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the SportsCardsPro API use?
SportsCardsPro actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call SportsCardsPro from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call sportscardspro actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the SportsCardsPro API a SportsCardsPro scraper?
It is the managed alternative to a DIY SportsCardsPro 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 sportscardspro's sports card price guide as json: the current price of every grade from ungraded to psa 10 for baseball, basketball, football, hockey and soccer cards, with the psa and cgc population, the monthly price history and the sold listings behind it back as clean JSON.