Get Newest Clean Sales by Text Search and Grade (Commercial Agreement Required)
Changed onReturn the newest N clean sales for a text-described card and grade.
Commercial access is required. The authenticated API accepts Enterprise tier keys; paid calls use the Agent API adapter for this same handler.
Sports queries require a release year (including seasons such as 2023-24) before retrieval. Non-sports queries do not require a year. Category and clear sports product/category words establish whether this rule applies; ambiguous uncategorized text is not assumed to be sports. TCG queries require a card number, such as #4, 4/102, or OP01-001. A year, grade, set code or explicitly labeled serial is not a card number. sales-by-search is not a general free-text search. Use card identifiers to specify one card: player/character, set/product, card number and variant where applicable. Put the grade in the grade field. A catalog card_id is not required.
The public contract deliberately has no date range. last_n is filled after filtering: the service keeps scanning newest-first index pages until N sales survive, the index is exhausted, or the configured safety limit is reached.
Text retrieval runs concurrently with optional, budgeted card-match enrichment. A match must validate against the original query before its header or exact card-ID stream is used. Timeouts and rejected matches fall back to an inferred header. Inspect results.coverage_complete and partial_reasons for deadline, unresolved-listing, and identity ambiguity.
Request
- Base URLhttps://api.cardhedger.com
- AuthAPI key in header X-API-Key
Request body
Example request
{
"query": "2018 Panini Prizm Luka Doncic #280 Silver",
"grade": "PSA 10"
}Response
Curated card header when card-match succeeds, plus the newest sales that survive grade and sibling-variant filtering
Example response
{
"exclusions": {
"duplicate": 0,
"sibling_variant": 2,
"uncertain": 0,
"wrong_card": 0,
"wrong_grade": 3,
"wrong_item": 0
},
"grade": "PSA 10",
"header": {
"card": {
"card_id": "1587446850514x224832321163624450",
"category": "Basketball",
"confidence": 0.95,
"description": "Luka Doncic 2018 Panini Prizm Basketball Silver",
"image": "https://images.example.com/luka-280.jpg",
"number": "280",
"player": "Luka Doncic",
"prices": [
{
"grade": "PSA 10",
"price": "1200"
}
],
"reasoning": "Exact player, set, number, and variant match.",
"set": "2018 Panini Prizm Basketball",
"subset": "Base Set",
"variant": "Silver"
},
"card_match_status": "matched",
"source": "curated_card"
},
"query": "2018 Panini Prizm Luka Doncic #280 Silver",
"results": {
"candidates_scanned": 7,
"classifier_mode": "enforce",
"complete": true,
"index_exhausted": false,
"requested": 2,
"returned": 2,
"scan_limit_reached": false
},
"sales": [
{
"card_id": "1587446850514x224832321163624450",
"grade": "PSA 10",
"grader": "PSA",
"id": "sale-1",
"image": "https://i.ebayimg.com/example.jpg",
"match_method": "curated_id",
"price": 1150,
"price_source": "ebay",
"sale_date": "2026-08-29T19:30:00.000Z",
"sale_type": "Auction",
"sale_url": "https://www.ebay.com/itm/example",
"title": "2018 Prizm Luka Doncic #280 Silver PSA 10"
}
],
"search_query_used": "2018 Panini Prizm Luka Doncic #280 Silver"
}Changes
- info
added the non-success response with the status
- info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status
- info