TCGplayer API endpoint
Returns TCGplayer's price guide for one set, one row per card, condition and printing: card id, name, collector number, rarity, condition, printing, language, low price, market price and units sold. Page through a whole set (up to 500 rows per call) instead of fetching each card; the set_id comes from tcgplayer-sets.
/tcgplayer/price-guideParameters:
set_id (required): the numeric set id, the id field of tcgplayer-sets. An unknown set, or a set with no priced cards, returns 404.limit (optional): page size, 1 to 500; defaults to 100.offset (optional): rows to skip. Use the previous response's next_offset.Notable response behavior:
next_offset walks the whole set without repeats. total is the number of rows in the set, not the number of cards: a card appears once per condition and printing (a card with one printing has five rows, one per condition).condition is one of Near Mint, Lightly Played, Moderately Played, Heavily Played or Damaged. TCGplayer folds the printing and sometimes a language into that text (for example Near Mint Holofoil or Near Mint Foil - Japanese); the response splits them into condition, printing and language. language is omitted when TCGplayer does not mark one.low_price and market_price are US dollars; sales is the units sold TCGplayer counts for that row.product_id with tcgplayer-product for a card's detail.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"set_id": 604,
"set_name": "Base Set",
"set_abbreviation": "BS",
"game": "Pokemon",
"total": 505,
"limit": 4,
"offset": 0,
"next_offset": 4,
"rows": [
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Damaged",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.25,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Heavily Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.31,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Lightly Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.59,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Moderately Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.41,
"sales": 0
}
]
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| set_id | integer | Yes | Numeric set id from tcgplayer-sets (the id field) | 604 | |
| limit | integer | No | 100 | Page size, 1 to 500; defaults to 100 | 100 |
| offset | integer | No | Rows to skip; use the previous response's next_offset | 0 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/tcgplayer/price-guide?set_id=604&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"set_id": 604,
"set_name": "Base Set",
"set_abbreviation": "BS",
"game": "Pokemon",
"total": 505,
"limit": 4,
"offset": 0,
"next_offset": 4,
"rows": [
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Damaged",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.25,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Heavily Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.31,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Lightly Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.59,
"sales": 0
},
{
"product_id": 42386,
"name": "Abra",
"number": "043/102",
"rarity": "Common",
"condition": "Moderately Played",
"printing": "Normal",
"low_price": 0.09,
"market_price": 0.41,
"sales": 0
}
]
}
}Request schema
No body schema
Response schema
#/definitions/tcgplayer.priceGuideResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tcgplayer.PriceGuideResponse | No | ||||
| data.game | string | No | ||||
| data.limit | integer | No | ||||
| data.next_offset | integer | No | ||||
| data.offset | integer | No | ||||
| data.rows | array | No | ||||
| data.rows[].condition | string | No | ||||
| data.rows[].language | string | No | ||||
| data.rows[].low_price | number | No | ||||
| data.rows[].market_price | number | No | ||||
| data.rows[].name | string | No | ||||
| data.rows[].number | string | No | ||||
| data.rows[].printing | string | No | ||||
| data.rows[].product_id | integer | No | ||||
| data.rows[].rarity | string | No | ||||
| data.rows[].sales | integer | No | ||||
| data.set_abbreviation | string | No | ||||
| data.set_id | integer | No | ||||
| data.set_name | string | No | ||||
| data.total | integer | 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/price-guide?set_id=604&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"