# Pokémon TCG API
> The Pokémon Trading Card Game as an API, powered by TCGdex — clean JSON, no key. Search and look up cards with high-resolution images, HP, types, stage and evolution, abilities and attacks (cost, damage, effect), weaknesses, resistances and retreat cost, rarity, illustrator, legality and live market pricing. Browse every set and series, and open a set for its full card list with release date, card count and logo. Covers thousands of cards from Base Set to the latest expansions. Live data straight from TCGdex. Distinct from the Pokémon video-game Pokédex: this is the collectible card game — ideal for deck builders, collection trackers, price tools, card scanners and TCG apps. 6 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/pokemontcg-api/..."
```

## Pricing
- **Free** (Free) — 3,700 calls/Mo, 5 req/s
- **Starter** ($7/Mo) — 57,000 calls/Mo, 15 req/s
- **Pro** ($29/Mo) — 305,000 calls/Mo, 30 req/s
- **Mega** ($91/Mo) — 1,280,000 calls/Mo, 80 req/s

## Endpoints

### Cards

#### `GET /v1/card` — Card detail

**Parameters:**
- `id` (query, required, string) — Card id (e.g. base1-4) Example: `base1-4`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/card?id=base1-4"
```

**Response:**
```json
{
    "data": {
        "card": {
            "hp": 120,
            "id": "base1-4",
            "set": {
                "id": "base1",
                "name": "Base Set"
            },
            "name": "Charizard",
            "image": "https://assets.tcgdex.net/en/base/base1/4/high.webp",
            "legal": {
                "expanded": false,
                "standard": false
            },
            "stage": "Stage2",
            "types": [
                "Fire"
            ],
            "rarity": "Rare",
            "attacks": [
                {
                    "cost": [
                        "Fire",
                        "Fire",
                        "Fire",
                        "Fire"
                    ],
                    "name": "Fire Spin",
                    "damage": 100,
                    "effect": "Discard 2 Energy cards attached to Charizard in order to use this attack."
                }
            ],
            "dex_ids": [
                6
            ],
            "pricing": {
                "tcgplayer": {
                    "unit": "USD",
                    "updated": "2026-06-06T22:58:36.984Z",
                    "holofoil": {
                        "lowPrice": 499,
                        "midPrice": 699.97,
                        "highPrice": 1500,
                        "productId": 42382,
                        "marketPrice": 572.03,
                        "directLowPrice": 1499.09
                    }
   
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/cards` — Search & list cards

**Parameters:**
- `name` (query, optional, string) — Filter by card name Example: `charizard`
- `rarity` (query, optional, string) — Filter by rarity
- `page` (query, optional, string) — Page (1-based) Example: `1`
- `per_page` (query, optional, string) — Per page (1–100) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/cards?name=charizard&page=1&per_page=30"
```

**Response:**
```json
{
    "data": {
        "page": 1,
        "cards": [
            {
                "id": "pl4-1",
                "name": "Charizard",
                "image": "https://assets.tcgdex.net/en/pl/pl4/1/high.webp",
                "local_id": "1"
            },
            {
                "id": "2024sv-1",
                "name": "Charizard",
                "image": null,
                "local_id": "1"
            },
            {
                "id": "gym2-2",
                "name": "Blaine's Charizard",
                "image": "https://assets.tcgdex.net/en/gym/gym2/2/high.webp",
                "local_id": "2"
            },
            {
                "id": "lc-3",
                "name": "Charizard",
                "image": "https://assets.tcgdex.net/en/lc/lc/3/high.webp",
                "local_id": "3"
            },
            {
                "id": "sm7.5-3",
                "name": "Charizard",
                "image": null,
                "local_id": "3"
            },
            {
                "id": "dp3-3",
                "name": "Charizard",
                "image": "https://assets.tcgdex.net/en/dp/dp3/3/high.webp",
                "local_id": "3"
            },
            {
                "id": "base5-4",
                "name": "Dark Charizard",
                "image": "https://assets.tcgdex.net/en/base/base5/4/high.webp",
                "local_id": "4"
            },
            {
                "id": "base1-4",
                "name": "Cha
…(truncated, see openapi.json for full schema)
```

### Sets

#### `GET /v1/set` — Set detail with cards

**Parameters:**
- `id` (query, required, string) — Set id (e.g. base1) Example: `base1`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/set?id=base1"
```

**Response:**
```json
{
    "data": {
        "set": {
            "id": "base1",
            "logo": "https://assets.tcgdex.net/en/base/base1/logo.webp",
            "name": "Base Set",
            "cards": [
                {
                    "id": "base1-1",
                    "name": "Alakazam",
                    "image": "https://assets.tcgdex.net/en/base/base1/1/high.webp",
                    "local_id": "1"
                },
                {
                    "id": "base1-2",
                    "name": "Blastoise",
                    "image": "https://assets.tcgdex.net/en/base/base1/2/high.webp",
                    "local_id": "2"
                },
                {
                    "id": "base1-3",
                    "name": "Chansey",
                    "image": "https://assets.tcgdex.net/en/base/base1/3/high.webp",
                    "local_id": "3"
                },
                {
                    "id": "base1-4",
                    "name": "Charizard",
                    "image": "https://assets.tcgdex.net/en/base/base1/4/high.webp",
                    "local_id": "4"
                },
                {
                    "id": "base1-5",
                    "name": "Clefairy",
                    "image": "https://assets.tcgdex.net/en/base/base1/5/high.webp",
                    "local_id": "5"
                },
                {
                    "id": "base1-6",
                    "name": "Gyarados",
                    "image": "https://assets.t
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/sets` — All sets

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/sets"
```

**Response:**
```json
{
    "data": {
        "sets": [
            {
                "id": "base1",
                "logo": "https://assets.tcgdex.net/en/base/base1/logo.webp",
                "name": "Base Set",
                "symbol": null,
                "card_count": 102
            },
            {
                "id": "base2",
                "logo": "https://assets.tcgdex.net/en/base/base2/logo.webp",
                "name": "Jungle",
                "symbol": "https://assets.tcgdex.net/univ/base/base2/symbol.webp",
                "card_count": 64
            },
            {
                "id": "basep",
                "logo": "https://assets.tcgdex.net/en/base/basep/logo.webp",
                "name": "Wizards Black Star Promos",
                "symbol": "https://assets.tcgdex.net/univ/base/basep/symbol.webp",
                "card_count": 53
            },
            {
                "id": "wp",
                "logo": null,
                "name": "W Promotional",
                "symbol": null,
                "card_count": 7
            },
            {
                "id": "base3",
                "logo": "https://assets.tcgdex.net/en/base/base3/logo.webp",
                "name": "Fossil",
                "symbol": "https://assets.tcgdex.net/univ/base/base3/symbol.webp",
                "card_count": 62
            },
            {
                "id": "jumbo",
                "logo": null,
                "name": "Jumbo cards",
                "symbol": null,
         
…(truncated, see openapi.json for full schema)
```

### Series

#### `GET /v1/serie` — Series detail with sets

**Parameters:**
- `id` (query, required, string) — Series id (e.g. base) Example: `base`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/serie?id=base"
```

**Response:**
```json
{
    "data": {
        "serie": {
            "id": "base",
            "logo": "https://assets.tcgdex.net/en/base/base1/logo.webp",
            "name": "Base",
            "sets": [
                {
                    "id": "base1",
                    "logo": "https://assets.tcgdex.net/en/base/base1/logo.webp",
                    "name": "Base Set",
                    "symbol": null,
                    "card_count": 102
                },
                {
                    "id": "base2",
                    "logo": "https://assets.tcgdex.net/en/base/base2/logo.webp",
                    "name": "Jungle",
                    "symbol": "https://assets.tcgdex.net/univ/base/base2/symbol.webp",
                    "card_count": 64
                },
                {
                    "id": "basep",
                    "logo": "https://assets.tcgdex.net/en/base/basep/logo.webp",
                    "name": "Wizards Black Star Promos",
                    "symbol": "https://assets.tcgdex.net/univ/base/basep/symbol.webp",
                    "card_count": 53
                },
                {
                    "id": "wp",
                    "logo": null,
                    "name": "W Promotional",
                    "symbol": null,
                    "card_count": 7
                },
                {
                    "id": "base3",
                    "logo": "https://assets.tcgdex.net/en/base/base3/logo.webp",
                    "name": "Fossil",
        
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/series` — All series

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/series"
```

**Response:**
```json
{
    "data": {
        "count": 21,
        "series": [
            {
                "id": "base",
                "logo": "https://assets.tcgdex.net/en/base/base1/logo.webp",
                "name": "Base"
            },
            {
                "id": "misc",
                "logo": null,
                "name": "Miscellaneous"
            },
            {
                "id": "gym",
                "logo": "https://assets.tcgdex.net/en/gym/gym1/logo.webp",
                "name": "Gym"
            },
            {
                "id": "neo",
                "logo": "https://assets.tcgdex.net/en/neo/neo1/logo.webp",
                "name": "Neo"
            },
            {
                "id": "lc",
                "logo": "https://assets.tcgdex.net/en/lc/lc/logo.webp",
                "name": "Legendary Collection"
            },
            {
                "id": "ecard",
                "logo": "https://assets.tcgdex.net/en/ecard/ecard1/logo.webp",
                "name": "E-Card"
            },
            {
                "id": "ex",
                "logo": "https://assets.tcgdex.net/en/ex/ex1/logo.webp",
                "name": "EX"
            },
            {
                "id": "pop",
                "logo": "https://assets.tcgdex.net/en/pop/pop1/logo.webp",
                "name": "POP"
            },
            {
                "id": "tk",
                "logo": null,
                "name": "Trainer kits"
            },
            {
           
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pokemontcg-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "service": "pokemontcg-api",
        "endpoints": {
            "GET /v1/set": "Set detail with its cards by id (e.g. base1).",
            "GET /v1/card": "Card detail by id (e.g. base1-4).",
            "GET /v1/meta": "This document.",
            "GET /v1/sets": "All sets.",
            "GET /v1/cards": "Search/list cards (name=, rarity=, page=, per_page=).",
            "GET /v1/serie": "Series detail with its sets by id (e.g. base).",
            "GET /v1/series": "All series."
        },
        "description": "Pokémon Trading Card Game data via TCGdex: search & look up cards (images, stats, attacks, rarity, illustrator, market pricing), browse sets and series, and open a set for its full card list. Real live data, no key."
    },
    "meta": {
        "timestamp": "2026-06-07T16:46:19.724Z",
        "request_id": "45b241a8-cffe-4f4e-b9a5-8752026266a0"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/pokemontcg-api
OpenAPI spec: https://www.oanor.com/api/pokemontcg-api/openapi.json
