TCGplayer product search

GET /v1/tcgplayer/search finds products by keyword, including catalog identity, market-price estimate and current asking-price snapshots.

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

Search TCGplayer's catalog by keyword. A result is a product, not a sold or active listing. Use its product_id in recent sales. market_price is TCGplayer's calculated estimate from completed transactions; lowest_ask, listed_median, and each offer's asking_price are active seller asks. These prices have different meanings and should not be combined into one unexplained valuation.

ParameterTypeDefaultDescription
qstringRequiredSearch keywords, 1–200 characters, as you'd type them into the marketplace's search box. Be specific: model, size, grade, edition.
pageinteger, 1–1001Source page to fetch. On Poshmark, Mercari and Depop, pages after 1 also need cursor.
countryususOnly us is supported.
marketplacetcgplayertcgplayerOptional; must match the path.
countinteger, 1–2424Products per source page.
curl -G https://api.soldgraph.com/v1/tcgplayer/search \  -H "Authorization: Bearer $SOLDGRAPH_KEY" \  --data-urlencode "q=lugia vstar" \  -d page=1 \  -d count=1

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

page and count select a source page with up to 24 products. next_page is null at the end; ranking can change and products may repeat between pages, so deduplicate by product_id. reported_total is the source's match count, not a promise of complete coverage. Search is for US checkout context; source catalog results can include multiple games and product types.

The offers array contains up to three seller ask snapshots. Shipping is reported separately. Product-level low and market prices may reflect different conditions or printings than an individual offer. Exact variant and condition matching belongs at the product/SKU level; this endpoint does not claim to perform it.

TCGplayer is the source of these product and price fields. 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.

#Example response

Illustrative result captured October 1, 2026. Prices and availability change.

Response
{  "request_id": "example-tcgplayer-search",  "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": "lugia vstar",    "page_size": 1,    "count": 1,    "reported_total": 13,    "next_page": 2,    "completeness": "provider_page_only",    "data": [      {        "product_id": 451396,        "name": "Lugia VSTAR",        "link": "https://www.tcgplayer.com/product/451396",        "product_line": "Pokemon",        "set_name": "SWSH12: Silver Tempest",        "set_code": "SWSH12",        "card_number": "139/195",        "rarity": "Ultra Rare",        "market_price": {          "amount": 6.96,          "currency": "USD"        },        "lowest_ask": {          "amount": 3.19,          "currency": "USD"        },        "lowest_ask_with_shipping": {          "amount": 3.19,          "currency": "USD"        },        "listed_median": null,        "active_listing_count": 215,        "offers": [          {            "listing_id": 354256735,            "seller": "CardNAll Gaming",            "condition": "Near Mint",            "variant": "Holofoil",            "language": "English",            "asking_price": {              "amount": 7,              "currency": "USD"            },            "shipping_price": {              "amount": 3.99,              "currency": "USD"            }          }        ]      }    ],    "field_notes": "Catalog prices and seller asks are distinct from actual sales."  }}
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.page_sizeintegerNumber of source rows in this response.
result.reported_totalintegerSource-reported result count for this response.
result.next_cursorstring | nullAlways null; use next_page for offset pagination.
result.data[].product_idintegerCanonical TCGplayer product ID.
result.data[].namestringProduct title.
result.data[].linkstringPublic product page.
result.data[].product_linestring | nullTCGplayer game or product line.
result.data[].set_namestring | nullSet name.
result.data[].set_codestring | nullSet code.
result.data[].card_numberstring | nullCard number when supplied.
result.data[].raritystring | nullSource rarity when supplied.
result.data[].market_priceobject | nullTCGplayer estimate calculated from completed sales, not an individual sale.
result.data[].lowest_askobject | nullLowest advertised seller ask, before shipping.
result.data[].lowest_ask_with_shippingobject | nullSource estimate of lowest ask including shipping.
result.data[].listed_medianobject | nullMedian advertised ask when available.
result.data[].active_listing_countintegerSource-reported number of active listings.
result.data[].offersobject[]Up to three current seller-offer snapshots with asking and shipping prices.
Try it
Request
curl -G https://api.soldgraph.com/v1/tcgplayer/search \  -H "Authorization: Bearer $SOLDGRAPH_KEY" \  --data-urlencode "q=lugia vstar" \  -d count=1
Sign in to runFree account, no card.