TCGplayer recent sales

GET /v1/tcgplayer/sales returns a limited sample of actual recent transactions for one exact product ID.

GEThttps://api.soldgraph.com/v1/tcgplayer/sales

Send a numeric TCGplayer product ID as q, for example q=451396. Find IDs with product search. This endpoint reports individual completed transactions, with condition, variant, language, quantity and time. It does not search sales by keyword.

ParameterTypeDefaultDescription
qstringRequiredExact numeric TCGplayer product ID, such as 451396.
countryususOnly us is supported.
marketplacetcgplayertcgplayerOptional; must match the path.
curl -G https://api.soldgraph.com/v1/tcgplayer/sales \  -H "Authorization: Bearer $SOLDGRAPH_KEY" \  -d q=451396

Anonymous source access has returned at most five rows in our observations, even when requesting a larger limit. Treat the response as a recent sample, not a complete history or a five-sales guarantee. No stable transaction ID was exposed, so repeated polls can include the same sales. next_page is always null because usable sales pagination has not been established. An empty response means no recent rows were returned, not that the product never sold.

purchase_price is the item price; shipping_price is separate; total_price is their sum. Tax and other checkout charges are not represented. Do not compare these raw-card transactions directly with graded eBay sales without matching condition, variant and grading basis.

TCGplayer is the source of these transactions. This product uses TCGplayer data but is not endorsed or certified by TCGplayer. TCGplayer's API terms restrict automated collection and commercial redistribution; technical access does not grant rights to republish the data.

A cache miss returns 202 with a job to poll. Completed requests cost one credit; failures are free. Results are cached for 15 minutes.

#Example response

Illustrative sample captured October 1, 2026. The source can change or withdraw these rows.

Response
{  "request_id": "example-tcgplayer-sales",  "status": "complete",  "credits": 1,  "cached": false,  "result": {    "provider": "tcgplayer",    "country": "us",    "page": 1,    "next_cursor": null,    "collected_at": "2026-10-01T12:00:00+00:00",    "schema_version": 2,    "query": "451396",    "page_size": 5,    "count": 5,    "reported_total": 5,    "next_page": null,    "completeness": "recent_sample_only",    "data": [      {        "product_id": 451396,        "title": "Lugia VSTAR",        "condition": "Near Mint",        "variant": "Holofoil",        "language": "English",        "quantity": 1,        "purchase_price": {          "amount": 6.98,          "currency": "USD"        },        "shipping_price": {          "amount": 1,          "currency": "USD"        },        "total_price": {          "amount": 7.98,          "currency": "USD"        },        "sold_at": "2026-10-01T08:37:16.863000+00:00"      },      {        "product_id": 451396,        "title": "Lugia VSTAR",        "condition": "Near Mint",        "variant": "Holofoil",        "language": "English",        "quantity": 1,        "purchase_price": {          "amount": 5.25,          "currency": "USD"        },        "shipping_price": {          "amount": 1,          "currency": "USD"        },        "total_price": {          "amount": 6.25,          "currency": "USD"        },        "sold_at": "2026-10-01T05:40:09.050000+00:00"      },      {        "product_id": 451396,        "title": "Lugia VSTAR",        "condition": "Damaged",        "variant": "Holofoil",        "language": "English",        "quantity": 1,        "purchase_price": {          "amount": 3.32,          "currency": "USD"        },        "shipping_price": {          "amount": 1.49,          "currency": "USD"        },        "total_price": {          "amount": 4.81,          "currency": "USD"        },        "sold_at": "2026-10-01T00:48:37.747000+00:00"      },      {        "product_id": 451396,        "title": "Lugia VSTAR",        "condition": "Near Mint",        "variant": "Holofoil",        "language": "English",        "quantity": 1,        "purchase_price": {          "amount": 6.98,          "currency": "USD"        },        "shipping_price": {          "amount": 0,          "currency": "USD"        },        "total_price": {          "amount": 6.98,          "currency": "USD"        },        "sold_at": "2026-09-30T22:50:56.593000+00:00"      },      {        "product_id": 451396,        "title": "Lugia VSTAR",        "condition": "Near Mint",        "variant": "Holofoil",        "language": "English",        "quantity": 1,        "purchase_price": {          "amount": 6.8,          "currency": "USD"        },        "shipping_price": {          "amount": 0,          "currency": "USD"        },        "total_price": {          "amount": 6.8,          "currency": "USD"        },        "sold_at": "2026-09-30T22:13:35.927000+00:00"      }    ],    "field_notes": "Recent sample only, not complete history; purchase price excludes separately reported shipping.",    "product_id": 451396  }}
FieldTypeDescription
request_idstringID of this request. Poll it at /v1/jobs/{request_id}.
statusstringpending, complete or failed. Always check it, even on HTTP 200.
creditsintegerRequests charged: 1 when complete, 0 while pending or when failed.
cachedbooleanTrue when the result came from the 15-minute cache.
poll_urlstringOnly while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
error.codestringOnly when failed. See failed job codes.
resultobjectOnly when complete. One source page from the marketplace.
result.providerstringMarketplace ID, like ebay or poshmark.
result.countrystringAlways us.
result.querystringThe q you sent, with extra spaces removed.
result.pageintegerThe page you asked for.
result.countintegerRows in result.data on this page.
result.reported_totalintegerTotal matches the marketplace reports for the search. It may be rounded or capped.
result.next_pageinteger | nullSend this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
result.collected_atstringWhen we collected the page, as an ISO 8601 timestamp.
result.schema_versionintegerVersion of this response shape. Currently 2.
result.completenessstringAlways provider_page_only: one page, not a full sales history.
result.field_notesstringPlain-text notes on how to read this page's fields.
result.product_idintegerExact TCGplayer product ID requested.
result.page_sizeintegerNumber of source rows in this response.
result.reported_totalintegerSource-reported result count for this response.
result.next_cursorstring | nullAlways null; sales pagination is not exposed.
result.data[].product_idintegerTCGplayer product ID.
result.data[].titlestringProduct title from the sale row.
result.data[].conditionstringCondition sold.
result.data[].variantstringPrinting or variant sold.
result.data[].languagestringLanguage sold.
result.data[].quantityintegerQuantity in transaction.
result.data[].purchase_priceobjectPaid item price excluding shipping.
result.data[].shipping_priceobjectShipping separately reported by source.
result.data[].total_priceobjectSum of purchase_price and shipping_price; excludes tax and other checkout charges.
result.data[].sold_atstringTransaction timestamp from source in UTC.
Try it
Request
curl -G https://api.soldgraph.com/v1/tcgplayer/sales \  -H "Authorization: Bearer $SOLDGRAPH_KEY" \  -d q=451396
Sign in to runFree account, no card.