Discover/SportsCardsPro API
live

SportsCardsPro APIsportscardspro.com ↗

Search sports cards, retrieve graded prices (PSA, BGS, SGC, CGC), recent sales history, and monthly price trends via the SportsCardsPro API.

Endpoint health
verified 5h ago
get_card
search_cards
get_price_history
3/3 passing latest checkself-healing
Endpoints
3
Updated
13d ago

What is the SportsCardsPro API?

The SportsCardsPro API provides 3 endpoints for querying sports card market data, including graded and ungraded prices across PSA, BGS, SGC, and CGC registries. Use search_cards to find cards by player name, set, or card number with summary pricing returned immediately in results. get_card exposes full grade-by-grade pricing and monthly trend data, while get_price_history returns up to 30 recent completed sales with marketplace attribution.

This call costs1 credit / call— charged only on success
Try it
Filter by card set name (e.g. 'Topps Update'). Appended to the search query to narrow results.
Result page. The site exposes at most 100 matches with no continuation, so page 1 holds every reachable result and any page above 1 returns an empty results array.
Filter by card year (e.g. '2011'). Prepended to the search query to narrow results.
Search query - player name, card number, set name, or year plus set (e.g. 'Mike Trout', '2003 Topps Chrome', 'Topps Chrome #P-5').
Filter results by sport. Omitted returns all sports. When the site finds nothing for the filtered query and substitutes an expanded unfiltered search (search_revised=true), the filter is still enforced on the returned cards.
→ api.parse.bot/scraper/5e67e7a5-866b-4073-8d41-881feb8b574b/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/5e67e7a5-866b-4073-8d41-881feb8b574b/search_cards?query=Mike+Trout&sport=baseball-cards' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 3 totalmissing one? ·

Search for sports cards by player name, card number, set name, or a combination such as a year plus set (one shape: '2003 Topps Chrome'). One round trip. Returns card name, set, year, sport, card number, image URL, and summary prices (ungraded, grade 9, PSA 10) for each match. The site's search returns at most 100 matches and offers no way to continue past them: when more cards match, the site itself cuts the list at 100 and the response sets truncated=true; narrow the search with year, set, sport, or a card number to reach specific cards. has_more is always false because no continuation exists; page is accepted for compatibility, page 1 carries every reachable result and any higher page returns an empty results array (a valid empty result, not an error). Set-based searches return cards from that set and its insert/parallel sub-sets. The site applies loose word matching, so an obscure query can still return unrelated cards rather than an empty list. When the exact query plus filters match nothing, the site substitutes an expanded search with no filters and possible typo correction; the response then sets search_revised=true. In that case a requested sport is enforced on the substituted list, so results may legitimately be empty (e.g. a year/set combination that does not exist for that sport); without a sport filter the substituted cards are returned as the site shows them, flagged by search_revised. The response body is an envelope {status, data}: the card array is at data.results inside that envelope (body.data.results), not at the top level of the body, and results_count, truncated and search_revised sit beside it in data.

Input
ParamTypeDescription
setstringFilter by card set name (e.g. 'Topps Update'). Appended to the search query to narrow results.
pageintegerResult page. The site exposes at most 100 matches with no continuation, so page 1 holds every reachable result and any page above 1 returns an empty results array.
yearstringFilter by card year (e.g. '2011'). Prepended to the search query to narrow results.
queryrequiredstringSearch query - player name, card number, set name, or year plus set (e.g. 'Mike Trout', '2003 Topps Chrome', 'Topps Chrome #P-5').
sportstringFilter results by sport. Omitted returns all sports. When the site finds nothing for the filtered query and substitutes an expanded unfiltered search (search_revised=true), the filter is still enforced on the returned cards.
Response
{
  "type": "object",
  "fields": {
    "page": "Page number requested (only page 1 carries results)",
    "query": "The search query submitted",
    "results": "Array of card search results with card_id, card_name, card_number, set_name, year, sport, image_url, and prices object (ungraded, grade_9, psa_10 in USD, null when the site has no price)",
    "has_more": "Always false: the site offers no continuation past the 100-card cap",
    "truncated": "true when the site cut the match list at its 100-card cap, so cards beyond the first 100 are unreachable through search and the query should be narrowed",
    "results_count": "Number of results on this page (0 to 100)",
    "search_revised": "true when the site found no cards for the exact query plus filters and substituted an expanded, filter-free (typo-corrected) search; with a sport filter the substituted cards not in that sport are removed, which can leave results empty"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "2003 topps chrome",
      "results": [
        {
          "year": "2003",
          "sport": "Basketball",
          "prices": {
            "psa_10": 14972.25,
            "grade_9": 4725,
            "ungraded": 2475
          },
          "card_id": "basketball-cards-2003-topps-chrome/lebron-james-111",
          "set_name": "2003 Topps Chrome",
          "card_name": "LeBron James #111",
          "image_url": "https://storage.googleapis.com/images.pricecharting.com/jsjnkycbdyvvujfi/60.jpg",
          "card_number": "111"
        },
        {
          "year": "2003",
          "sport": "Basketball",
          "prices": {
            "psa_10": null,
            "grade_9": null,
            "ungraded": 15650.95
          },
          "card_id": "basketball-cards-2003-topps-chrome/hobby-box",
          "set_name": "2003 Topps Chrome",
          "card_name": "Hobby Box",
          "image_url": "https://storage.googleapis.com/images.pricecharting.com/corr5yujr7scre2mf24u/60.jpg",
          "card_number": ""
        }
      ],
      "has_more": false,
      "truncated": true,
      "results_count": 100,
      "search_revised": false
    },
    "status": "success"
  }
}

About the SportsCardsPro API

Search and Discovery

The search_cards endpoint accepts a required query parameter (player name, card number, or set name) and optional filters for sport, year, and set. Each result in the returned results array includes a card_id slug, card_name, card_number, set_name, year, sport, image_url, and a prices object with summary values for ungraded, grade 9, and PSA 10. Pagination is supported via the page parameter, with up to 100 results per page. The card_id returned here is the input required for both detail endpoints.

Full Card Pricing and Trends

The get_card endpoint takes a card_id and returns a prices object covering the full grading spectrum: Ungraded, Grades 1–9, Grade 9.5, TAG 10, ACE 10, SGC 10, CGC 10, PSA 10, BGS 10, BGS 10 Black, and CGC 10 Pristine. Any grade without available market data returns null. The price_trend field maps grade keys to arrays of monthly data points (date and price), giving a time-series view of price movement for key grades. Additional fields include set_name, card_number, image_url, and numeric product_id.

Sales History

The get_price_history endpoint returns up to 30 completed sales for a given card_id and grade. Each entry in the sales array includes the sale date, listing title, price, and marketplace. The sales_count field confirms how many records were returned. This endpoint is useful for validating whether a current market price reflects thin or active trading volume.

Reliability & maintenanceVerified

The SportsCardsPro API is a managed, monitored endpoint for sportscardspro.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sportscardspro.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 sportscardspro.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.

Last verified
5h ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Track PSA 10 price trends for rookie cards over time using price_trend data from get_card
  • Build a portfolio valuation tool using graded prices across BGS, SGC, and CGC registries
  • Monitor recent sale prices for a specific card and grade to time buying or selling decisions
  • Search by set name and year to catalog all cards in a given Topps or Panini release
  • Compare ungraded vs. graded price spreads to evaluate the cost-benefit of submitting cards for grading
  • Alert users when completed sales data shows a price shift for a tracked card_id and grade combination
  • Aggregate marketplace sales history across multiple cards to identify arbitrage opportunities
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does SportsCardsPro have an official developer API?+
SportsCardsPro does not publish an official developer API or documented public endpoints for third-party access.
What grading registries does `get_card` cover?+
The prices object in get_card includes entries for Ungraded, numeric Grades 1–9, Grade 9.5, PSA 10, BGS 10, BGS 10 Black, SGC 10, CGC 10, CGC 10 Pristine, TAG 10, and ACE 10. Any grade lacking market data returns null rather than being omitted.
How many completed sales does `get_price_history` return, and which marketplaces are included?+
The endpoint returns up to 30 recent completed sales. Each sale record includes the marketplace field identifying where the transaction occurred, alongside the sale date, listing title, and price. The specific marketplace values depend on what SportsCardsPro tracks for that card and grade.
Does the API cover graded population report data (pop reports)?+
Not currently. The API covers pricing, sales history, and monthly price trends but does not return grader population counts. You can fork this API on Parse and revise it to add an endpoint targeting population report data.
Is there a limit to how far back the price trend data goes?+
The price_trend field returns monthly data points for key grades, but the depth of historical coverage depends on what SportsCardsPro has indexed for that card. Cards with less trading history may return fewer monthly data points, and very recently added cards may have limited trend data available.
Page content last updated . Spec covers 3 endpoints from sportscardspro.com.
Related APIs in MarketplaceSee all →