BinderDex API
Batch cards
POST /v1/cards/batch
POST/v1/cards/batch
Get full card detail (identical shape to cards_get, including current prices by variant and condition) for up to 200 cards in one call (plan-dependent), counted as a single request against your rate limit and quota. Use this instead of repeated cards_get calls when you need full detail, not just price, for a list of cards.
Auth: send Authorization: Bearer bdx_live_... (or X-API-Key) from a server-side integration. Sandbox keys get 403 sandbox_key.
Response shape
| Field | Type | Required | Description |
|---|---|---|---|
data | array<object> | — | — |
data[].game | string | null | — | Stable game slug, e.g. pokemon or one-piece. |
data[].game_name | string | null | — | Display name, e.g. Pokémon TCG. |
data[].id | string | — | Opaque, stable card id. |
data[].image_url | string | null | — | BinderDex-hosted image URL (assets.binderdex.com or binderdex.com). null when no hosted image exists. |
data[].name | string | — | — |
data[].number | string | null | — | — |
data[].prices | array<object> | — | — |
data[].prices[].change_30d_cents | integer | null | — | — |
data[].prices[].change_30d_percent | number | null | — | — |
data[].prices[].change_7d_cents | integer | null | — | — |
data[].prices[].change_7d_percent | number | null | — | — |
data[].prices[].condition | string | — | — |
data[].prices[].currency | string | — | Always USD today. "USD" const: USD |
data[].prices[].market_price_cents | integer | — | — |
data[].prices[].price_updated_at | string | — | format: date-time |
data[].prices[].variant | string | — | — |
data[].rarity | string | null | — | — |
data[].set | object | null | — | — |
data[].set.id | string | — | — |
data[].set.name | string | — | — |
data[].url | string | null | — | — |
not_found | array<string> | — | Requested ids that do not match any card. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
ids | array<string> | Yes | 1-200 card ids or slugs, subject to your plan's own batch limit. Counts as a single request against your rate limit and quota regardless of how many ids you send. minItems: 1 · maxItems: 200 |
{
"ids": [
"card_9f2c1b7a",
"pikachu-ex-ssp-025",
"card_unknown"
]
}Example
{
"data": [
{
"game": "pokemon",
"game_name": "Pokemon TCG",
"id": "card_9f2c1b7a",
"image_url": "https://assets.binderdex.com/cards/card_9f2c1b7a.png",
"name": "Pikachu ex",
"number": "025",
"prices": [
{
"change_30d_cents": -50,
"change_30d_percent": -3.71,
"change_7d_cents": 10,
"change_7d_percent": 0.78,
"condition": "Near Mint",
"currency": "USD",
"market_price_cents": 1299,
"price_updated_at": "2026-09-18T04:00:00Z",
"variant": "Holofoil"
}
],
"rarity": "Double Rare",
"set": {
"id": "set_ssp",
"name": "Surging Sparks"
},
"url": "https://binderdex.com/cards/pikachu-ex-ssp-025"
}
],
"not_found": [
"card_unknown"
]
}Possible errors
Every error below uses the Error envelope with a request ID. Retry only when the response’s documented semantics identify a temporary condition; see errors and versioning for the detailed guidance.