ebaysoldlistingsDOCS

TCGplayer sales and listings

GET /tcgplayer/sold returns TCGplayer completed sales with optional market price history, and GET /tcgplayer/listings returns current listings, for Pokemon, Magic, Yu-Gi-Oh, One Piece and other trading cards.

Two endpoints for trading cards and sealed products on TCGplayer. Both use your normal API key, monthly quota and rate limit, each call counts as one request, and failed calls are never charged.

Sales

GET/tcgplayer/soldcost 1 request
curl "https://api.ebaysoldlistingsapi.com/tcgplayer/sold?keyword=charizard+ex+obsidian+flames+223&count=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Send a keyword (card or product name, set and card number) or an exact TCGplayer productId. With a keyword, the best matching product is used and other close matches are listed in otherMatches, so you can repeat the call with the right productId. The productId is the number in a TCGplayer product link, for example https://www.tcgplayer.com/product/123456/... has productId=123456.

Search by the product's TCGplayer name, not an eBay listing title. Words like "sealed", "mint" or lot sizes usually match no product.

ParameterValuesDefault
keywordCard or product name, up to 300 charactersRequired unless productId is sent
productIdTCGplayer product IDNone
count1 to 250 sales100
conditionFor example Near Mint, Lightly PlayedAll conditions
variantFor example Normal, Holofoil, Reverse HolofoilAll variants
languageFor example English, JapaneseAll languages
historynone, month, quarter, annual (market price history buckets)none
soldAfterYYYY-MM-DD: only sales on or after this date (UTC)None
soldBeforeYYYY-MM-DD: only sales on or before this date (UTC)None
freshtrue fetches the newest sales live instead of a recent saved copyfalse
productobject
The matched product: productId, name, productLine, setName, number, rarity, marketPrice, lowestPrice, totalListings and url.
otherMatchesarray
Other close products for an ambiguous keyword, with their productId.
itemsarray
Sales, newest first: title, condition, variant, language, quantity, price, shipping, totalPrice, soldAt (ISO date and time) and listingType.
priceHistoryarray
Market price buckets per variant and condition, when history is set.
summaryobject
Median, mean, minimum, maximum and quartiles of the returned sale prices.

soldAfter and soldBefore trim the returned sales to a date window, so a daily job can ask only for what it has not stored yet. They filter the newest sales available for the product (up to 250) and do not reach further back, so send count=250 with a date window.

Listings

GET/tcgplayer/listingscost 1 request
curl "https://api.ebaysoldlistingsapi.com/tcgplayer/listings?keyword=charizard+ex+obsidian+flames+223&count=25" \
  -H "Authorization: Bearer YOUR_API_KEY"
ParameterValuesDefault
keywordCard or product name, up to 300 charactersRequired unless productId is sent
productIdTCGplayer product IDNone
count1 to 50 listings per page25
page1 to 501
conditionFor example Near MintAll conditions
variantFor example HolofoilAll variants
languageFor example EnglishAll languages

Each listing has its price, shipping, totalPrice, condition, variant, language, quantity and seller details (sellerName, sellerRating, sellerSales, sellerLocation, and the goldSeller, verifiedSeller and directSeller flags). Follow the next page while hasNextPage is true.

Pacing

Keep TCGplayer calls to about one per second and spread them evenly rather than sending large parallel bursts. Calls above that pace wait briefly and may return 503 server_busy; retry after a few seconds. These calls are not charged.

StatuscodeMeaning
400invalid_paramsA parameter is missing or invalid; the message says which
502upstream_blockedTCGplayer did not complete this call; retry after a short pause
503server_busyTCGplayer is busy right now; retry after a few seconds

On this page