Skip to main content

Official Python SDK for the CardShowData TCG pricing API

Project description

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+

Project details


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.1.tar.gz (38.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cardshowdata-4.0.1-py3-none-any.whl (25.2 kB view details)

Uploaded Python 3

File details

Details for the file cardshowdata-4.0.1.tar.gz.

File metadata

  • Download URL: cardshowdata-4.0.1.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

Hashes for cardshowdata-4.0.1.tar.gz
Algorithm Hash digest
SHA256 ff5bf31b7d53c5cb0f60b2a7afc1fdfc37d99e9b7852c192e2494c1b0fcf73b8
MD5 a4ddb9d2c1c4ea411ecbd9531761fa95
BLAKE2b-256 70eb6a4d6042d42f6591886e89afd7cd0f1864c5a2c0383870e6802808424c05

See more details on using hashes here.

File details

Details for the file cardshowdata-4.0.1-py3-none-any.whl.

File metadata

  • Download URL: cardshowdata-4.0.1-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

Hashes for cardshowdata-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f14b4f5ff99d070a35c596390a01db940f9eae39e4ae34ace1d2329afda3e6d
MD5 3d3946eef5738de8fc292b82ed295a52
BLAKE2b-256 58bc5451b673c9a274f598764d8992f1954ae8557402e3d52b4a1ef439f94b60

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page