CardShowData Python SDK
Official Python client for the CardShowData TCG pricing API.
Install
pip install cardshowdata
Quick Start
from cardshowdata import CardShowData
client = CardShowData(api_key="csd_live_...")
# Get a card by pretty ID
card = client.cards.get("pk_bs_004_holofoil")
print(card.name) # "Charizard"
print(card.image) # "https://images.cardshowdata.com/..."
# Search cards
page = client.cards.search(tcg="pk", q="name:charizard")
for card in page.data:
print(f"{card.name} — {card.expansion.name}")
# v4 pricing — variants[].raw[] keyed by (condition, currency)
price = client.pricing.get("aaaa-bbbb-cccc-dddd")
for variant in price.variants:
for row in variant.raw: # row = RawPriceRow
print(row.condition, row.currency, # "NM" "USD"
row.reference_prices.market_cents) # 12500
# Per-vertical recommended sell prices
if row.recommended_sell.online:
print("online:", row.recommended_sell.online.price_cents)
if row.recommended_sell.show:
print("show:", row.recommended_sell.show.price_cents)
if row.recommended_sell.lcs:
print("lcs:", row.recommended_sell.lcs.price_cents)
# Per-grader graded data (population, listings, recent sales)
for grader_slug, block in price.variants[0].graded.items():
if block.population:
print(grader_slug, "total pop:", block.population.total)
# Bulk pricing
prices = client.pricing.bulk(["uuid1", "uuid2", "uuid3"])
# Browse the catalog
tcgs = client.catalog.list_tcgs()
sets = client.catalog.list_sets("pk")
Async
from cardshowdata import AsyncCardShowData
async with AsyncCardShowData(api_key="csd_live_...") as client:
card = await client.cards.get("pk_bs_004_holofoil")
async for product in client.catalog.list_products_all("pk"):
print(product.product_name)
Auto-Pagination
Endpoints with pagination have _all() methods that automatically fetch every page:
# Offset-paginated (cards)
for card in client.cards.search_all(tcg="pk", q="name:pikachu"):
print(card.name)
# Cursor-paginated (catalog products, pricing changes)
for product in client.catalog.list_products_all("pk"):
print(product.pretty_id)
for change in client.pricing.changes_all(since="2026-04-01T00:00:00Z"):
print(f"{change.pretty_id}: {change.pct_change}%")
Resources
| Resource | Methods |
|---|---|
client.cards |
get(), search(), search_all(), list_by_expansion(), get_ebay_sales() |
client.pricing |
get(), bulk(), history(), changes(), changes_all() |
client.catalog |
list_tcgs(), list_sets(), get_taxonomy(), list_products(), list_products_all(), export_csv(), resolve(), search() |
client.grading |
get(), history(), changes(), changes_all() |
client.lifecycle |
get() |
client.usage |
get() |
client.sales |
submit(), submit_batch(), submit_csv() |
client.feedback |
submit() |
client.onboarding |
quickstart() |
Error Handling
from cardshowdata import NotFoundError, RateLimitError
try:
card = client.cards.get("nonexistent")
except NotFoundError:
print("Card not found")
except RateLimitError as e:
print(f"Rate limited — retry after {e.retry_after}s")
Errors: AuthenticationError (401), PermissionError (403), NotFoundError (404), RateLimitError (429), ApiError (5xx).
Configuration
client = CardShowData(
api_key="csd_live_...", # or set CSD_API_KEY env var
base_url="https://api.cardshowdata.com", # default
timeout=30, # seconds
max_retries=3, # auto-retry on 429/5xx
)
Rate limit info is available after any request:
print(client.rate_limit.remaining) # requests left this minute
Requirements
- Python 3.10+
- httpx 0.27+
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cardshowdata-4.0.2.tar.gz
(38.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cardshowdata-4.0.2.tar.gz.
File metadata
- Download URL: cardshowdata-4.0.2.tar.gz
- Upload date:
- Size: 38.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd042a81e90ad725d40dcc8a4f00a737dfb3cde89283222d51aa207082792038
|
|
| MD5 |
52721a7db4773361e8a112475adbf52f
|
|
| BLAKE2b-256 |
920898f6e73dd76bac5b777dc8c8416248d1d6726d243969466642e0a997846c
|
File details
Details for the file cardshowdata-4.0.2-py3-none-any.whl.
File metadata
- Download URL: cardshowdata-4.0.2-py3-none-any.whl
- Upload date:
- Size: 25.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e48d686ec8a967b084a21d7c1065a42da7499236e37e7897c53b938bd2996ba6
|
|
| MD5 |
dd0a60f47e40d8352f2e9084f9723f3e
|
|
| BLAKE2b-256 |
e95c969fe77743c73de3ff597f84c0620ac98f4e20399618731a0fae103ca584
|