TCGplayer API endpoint
Returns the values the tcgplayer-sales filters accept for one TCGplayer product line: the printings (variants such as Normal, Foil, Holofoil or 1st Edition), the six conditions, the languages and the listing types, each with TCGplayer's id. Printings belong to one product line (Pokemon has Reverse Holofoil, Magic has Foil), while languages are shared. Give product_line (a url_name from tcgplayer-product-lines) or id (a TCGplayer product id, which uses that product's line). An unknown product line returns invalid parameters and an unknown product returns not found.
/tcgplayer/filtersGive exactly one of:
product_line: a url_name from tcgplayer-product-lines (for example pokemon, magic, flesh-and-blood-tcg).id: a TCGplayer product id. The response is the filter set of that product's line, and product_id is echoed instead of product_line.Notable response behavior:
variants are the line's printings in TCGplayer's display order. Printings belong to one product line and their ids are not shared: Pokemon Normal is 10 and Magic Normal is 1. The labels seen across all 71 lines on 2026-10-26 are 1st Edition, 1st Edition - Ultimate, 1st Edition Cold Foil, 1st Edition Foil, 1st Edition Holofoil, 1st Edition Normal, 1st Edition Rainbow Foil, 1st Wave Foil, Card Only, Card and Die, Cold Foil, Die Only, Foil, Holo, Holofoil, Holohex, Limited, Metal, Normal, Parallel Foil, Plastic, Promo, Rainbow Foil, Reverse Holo, Reverse Holofoil, Unlimited, Unlimited - Ultimate, Unlimited Edition Foil, Unlimited Edition Normal, Unlimited Edition Rainbow Foil, Unlimited Holofoil and Unopened; each line offers only some of them.conditions are Near Mint, Lightly Played, Moderately Played, Heavily Played, Damaged and Unopened (sealed product). Some lines offer only some of them (14 lines offer only Unopened).languages are English, Chinese (S), Chinese (T), French, German, Italian, Japanese, Korean, Portuguese, Russian and Spanish. Their ids (1 to 11) are the same on every line. Most lines carry English only; Magic carries all eleven, Flesh and Blood English, Japanese and Korean, Lorcana English, Chinese (S) and Japanese, Grand Archive English and Chinese (T), and Pokemon Japan Japanese only.listing_types are all, with-photos and without-photos.product_line returns 400; an unknown product id returns 404. The catalog is cached for 15 minutes.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"product_line": "pokemon",
"product_line_id": 3,
"variants": [
{
"id": 10,
"name": "Normal"
},
{
"id": 11,
"name": "Holofoil"
},
{
"id": 77,
"name": "Reverse Holofoil"
}
],
"conditions": [
{
"id": 1,
"name": "Near Mint",
"abbreviation": "NM"
},
{
"id": 2,
"name": "Lightly Played",
"abbreviation": "LP"
},
{
"id": 3,
"name": "Moderately Played",
"abbreviation": "MP"
}
],
"languages": [
{
"id": 1,
"name": "English",
"abbreviation": "EN"
}
],
"listing_types": [
"all",
"with-photos",
"without-photos"
]
}
}
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| id | 7 | |
| name | 7 | “Normal” and 6 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| product_line | string | No | Product line url_name from tcgplayer-product-lines; give this or id | pokemon | |
| id | integer | No | TCGplayer product id from tcgplayer-search; give this or product_line | 684332 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/tcgplayer/filters" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"product_line": "pokemon",
"product_line_id": 3,
"variants": [
{
"id": 10,
"name": "Normal"
},
{
"id": 11,
"name": "Holofoil"
},
{
"id": 77,
"name": "Reverse Holofoil"
}
],
"conditions": [
{
"id": 1,
"name": "Near Mint",
"abbreviation": "NM"
},
{
"id": 2,
"name": "Lightly Played",
"abbreviation": "LP"
},
{
"id": 3,
"name": "Moderately Played",
"abbreviation": "MP"
}
],
"languages": [
{
"id": 1,
"name": "English",
"abbreviation": "EN"
}
],
"listing_types": [
"all",
"with-photos",
"without-photos"
]
}
}Request schema
No body schema
Response schema
#/definitions/tcgplayer.filtersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tcgplayer.FiltersResponse | No | ||||
| data.conditions | array | No | ||||
| data.conditions[].abbreviation | string | No | ||||
| data.conditions[].id | integer | No | ||||
| data.conditions[].name | string | No | ||||
| data.languages | array | No | ||||
| data.languages[].abbreviation | string | No | ||||
| data.languages[].id | integer | No | ||||
| data.languages[].name | string | No | ||||
| data.listing_types | array | No | ||||
| data.product_id | integer | No | ||||
| data.product_line | string | No | ||||
| data.product_line_id | integer | No | ||||
| data.variants | array | No | ||||
| data.variants[].abbreviation | string | No | ||||
| data.variants[].id | integer | No | ||||
| data.variants[].name | 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/filters" \
-H "x-api-key: $CRAWLORA_API_KEY"