TCGplayer API endpoint
Returns the five most recent completed sales of a TCGplayer product: condition, printing, language, quantity, sale price, shipping price and order time. Optionally restrict to one condition (near-mint, lightly-played, moderately-played, heavily-played, damaged or unopened), one printing (variant such as Normal, Foil or Reverse Holofoil), one language (such as English or Japanese) and whether the listing had photos. The printing and language values a product accepts come from tcgplayer-filters; an unlisted value returns invalid parameters. A variant or language filter makes one extra call to read the product line's filter values.
/tcgplayer/salesParameters:
id (required): the TCGplayer product id (see tcgplayer-search).condition (optional): near-mint, lightly-played, moderately-played, heavily-played, damaged or unopened (sealed product).variant (optional): the printing, as the label of the product's own product line, matched ignoring case (hyphens and underscores count as spaces). Examples are Normal, Foil, Holofoil, Reverse Holofoil, 1st Edition and Cold Foil; the full list for a line, with TCGplayer's ids, comes from tcgplayer-filters, and every label seen across all lines is listed on that endpoint's page. A label the product's line does not offer returns 400 with the labels it does.language (optional): English, Chinese (S), Chinese (T), French, German, Italian, Japanese, Korean, Portuguese, Russian or Spanish, limited to the languages of the product's line (most lines carry English only). A language the line does not offer returns 400 with the languages it does.listing_type (optional): all (default), with-photos or without-photos.Notable response behavior:
tcgplayer-price-history for a longer trend.sales list.variant or language filter makes one extra call to read the product line's filter values (cached for 15 minutes); the other filters do not. Printing ids belong to one product line, which is why the labels are resolved per product.order_date is an RFC 3339 timestamp.sales list.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"product_id": 42382,
"sales": [
{
"condition": "Damaged",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 220,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T17:53:24.483+00:00"
},
{
"condition": "Heavily Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 246.49,
"shipping_price": 0.99,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T13:37:33.393+00:00"
},
{
"condition": "Heavily Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 240,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T11:40:27.84+00:00"
},
{
"condition": "Moderately Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 399.97,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-23T14:24:34.207+00:00"
},
{
"condition": "Lightly Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 565,
"shipping_price": 0,
"listing_type": "ListingWithPhotos",
"order_date": "2026-10-23T04:25:53.693+00:00"
}
]
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | integer | Yes | TCGplayer product id from tcgplayer-search | 42382 | |
| condition | string | No | Condition filter Allowed values: near-mint, lightly-played, moderately-played, heavily-played, damaged, unopened. | near-mint | |
| variant | string | No | Printing label of the product's product line, such as Normal, Foil, Holofoil or Reverse Holofoil; see tcgplayer-filters | Reverse Holofoil | |
| language | string | No | Language label: English, Chinese (S), Chinese (T), French, German, Italian, Japanese, Korean, Portuguese, Russian or Spanish, limited to the languages of the product's line; see tcgplayer-filters | Japanese | |
| listing_type | string | No | Listing type filter; default all Allowed values: all, with-photos, without-photos. | all | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/tcgplayer/sales?id=42382&condition=near-mint&language=en&listing_type=all" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"product_id": 42382,
"sales": [
{
"condition": "Damaged",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 220,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T17:53:24.483+00:00"
},
{
"condition": "Heavily Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 246.49,
"shipping_price": 0.99,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T13:37:33.393+00:00"
},
{
"condition": "Heavily Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 240,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-24T11:40:27.84+00:00"
},
{
"condition": "Moderately Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 399.97,
"shipping_price": 0,
"listing_type": "ListingWithoutPhotos",
"order_date": "2026-10-23T14:24:34.207+00:00"
},
{
"condition": "Lightly Played",
"variant": "Holofoil",
"language": "English",
"quantity": 1,
"purchase_price": 565,
"shipping_price": 0,
"listing_type": "ListingWithPhotos",
"order_date": "2026-10-23T04:25:53.693+00:00"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/tcgplayer.salesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tcgplayer.SalesResponse | No | ||||
| data.product_id | integer | No | ||||
| data.sales | array | No | ||||
| data.sales[].condition | string | No | ||||
| data.sales[].language | string | No | ||||
| data.sales[].listing_type | string | No | ||||
| data.sales[].order_date | string | No | ||||
| data.sales[].purchase_price | number | No | ||||
| data.sales[].quantity | integer | No | ||||
| data.sales[].shipping_price | number | No | ||||
| data.sales[].variant | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tcgplayer/sales?id=42382&condition=near-mint&language=en&listing_type=all" \
-H "x-api-key: $CRAWLORA_API_KEY"