Skip to content

⚡️ TCGdex Python SDK for Pokémon TCG data | Zero config • Multi-language

Notifications You must be signed in to change notification settings

tcgdex/python-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TCGdex Main Image

Pypi Version Pypi Downloads Github stars Build Status Discord Link

TCGdex Python SDK

A fast, type-safe Python SDK for the TCGdex API. Query Pokémon Trading Card Game data easily. 🚀

from tcgdexsdk import TCGdex

# Fetch a card in one line
card = await TCGdex().card.get("swsh3-136")
card = TCGdex().card.getSync("swsh3-136")
print(f"Found: {card.name} ({card.localId}/{card.set.cardCount.total})")

⚡️ Quick Install

pip install tcgdex-sdk

🚀 Features

  • Type-Safe: Full typing support for better IDE integration
  • Async/Await: Built for modern Python applications and compatible with synchronous operations
  • Zero Config: Works out of the box
  • Multi-Language: Support for English, French, German, Japanese, Chinese, and more
  • Rich Data: Access cards, sets, series, rarities, and more
  • Lightweight: Minimal dependencies (only dacite)

🎯 Quick Examples

Find Cards by Various Criteria

sdk = TCGdex("en")

# Get the cards made by the illustrator
cards = await sdk.illustrator.get("5ban Graphics")
cards = sdk.illustrator.getSync("5ban Graphics")

# Get the data about the Sword & Shield serie by ID
series = await sdk.serie.get("swsh")
series = sdk.serie.getSync("swsh")

# Get all cards with 110 HP
hp_cards = await sdk.hp.get("110")
hp_cards = sdk.hp.getSync("110")

# List all available rarities
rarities = await sdk.rarity.list()
rarities = sdk.rarity.listSync()

# List all cards with the name being "Furret"
rarities = await sdk.card.list(Query().equal("name", "Furret"))
rarities = sdk.card.listSync(Query().equal("name", "Furret"))

Working with Sets and Series

# Get set details
darkness_ablaze = await sdk.set.get("Darkness Ablaze")
# darkness_ablaze = sdk.set.getSync("Darkness Ablaze")
print(f"Set: {darkness_ablaze.name} ({darkness_ablaze.cardCount.total} cards)")

# Get series info
swsh = await sdk.serie.get("swsh")
# swsh = sdk.serie.getSync("swsh")
print(f"Series: {swsh.name} ({len(swsh.sets)} sets)")

🛠 Available Endpoints

Card Data

sdk.card         # Core card data
sdk.rarity       # Card rarities
sdk.hp           # HP values
sdk.illustrator  # Card illustrators

Game Mechanics

sdk.type         # Pokémon types
sdk.energyType   # Energy types
sdk.retreat      # Retreat costs
sdk.stage        # Evolution stages

Card Details

sdk.variant        # Card variants
sdk.suffix         # Card suffixes
sdk.regulationMark # Regulation marks
sdk.dexId         # Pokédex IDs

Collections

sdk.set           # Card sets
sdk.serie         # Card series

🌐 Language Support

from tcgdexsdk import TCGdex, Language

# Using string
sdk = TCGdex("en")  # English
sdk = TCGdex("fr")  # French

# Using enum (type-safe)
sdk = TCGdex(Language.EN)
sdk = TCGdex(Language.FR)

# After creating the instance you can change at any time the language
sdk.setLanguage(Language.FR)
# or
sdk.setLanguage("fr")

full list of languages available here

__

🤝 Contributing

We love contributions! Here's how:

  1. 🍴 Fork it
  2. 🌿 Create your feature branch (git checkout -b feature/amazing)
  3. 🔧 Make your changes
  4. 🚀 Push to the branch (git push origin feature/amazing)
  5. 🎉 Open a PR

📘 Documentation

💬 Community & Support

📜 License

MIT © TCGdex