BinderDex API
Search cards
GET /v1/cards
GET/v1/cards
Search the BinderDex card catalog by name, set, number, rarity, price range, or game (Pokémon and One Piece are live today). Returns card summaries with the current display price. Use cards_get for the full price breakdown by variant and condition on one card.
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 | — | Card number as printed, e.g. 025. |
data[].price | object | — | — |
data[].price.currency | string | — | Always USD today. "USD" const: USD |
data[].price.market_price_cents | integer | null | — | Integer cents. Divide by 100 for a dollar amount. null when BinderDex has no current price. |
data[].rarity | string | null | — | — |
data[].set | object | null | — | — |
data[].set.id | string | — | — |
data[].set.name | string | — | — |
data[].url | string | null | — | Public binderdex.com card page. |
next_cursor | string | null | — | Pass back as ?cursor= to get the next page. null on the last page. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | — | Free-text name search. minLength: 1 · maxLength: 200 |
set | query | string | — | Set id or slug. minLength: 1 · maxLength: 200 |
game | query | string | — | Filter to one game by slug, e.g. pokemon or one-piece. minLength: 1 · maxLength: 64 |
number | query | string | — | Card number as printed, e.g. 025. minLength: 1 · maxLength: 32 |
rarity | query | string | — | minLength: 1 · maxLength: 64 |
min_price_cents | query | integer | — | minimum: 0 · maximum: 100000000 |
max_price_cents | query | integer | — | minimum: 0 · maximum: 100000000 |
sort | query | string | — | default: relevance · enum: ["relevance","price_desc","price_asc","newest"] |
limit | query | integer | — | Rows to return, 1-50. minimum: 1 · maximum: 50 · default: 20 |
cursor | query | string | — | Opaque cursor from a previous response's next_cursor. Expires 15 minutes after issue. maxLength: 512 |
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",
"price": {
"currency": "USD",
"market_price_cents": 1299,
"price_updated_at": "2026-09-18T04:00:00Z"
},
"rarity": "Double Rare",
"set": {
"id": "set_ssp",
"name": "Surging Sparks"
},
"url": "https://binderdex.com/cards/pikachu-ex-ssp-025"
}
],
"next_cursor": null
}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.