# Sealed products

3,000+ sealed products (booster packs and boxes, Elite Trainer Boxes, bundles, blisters, tins, collections, cases…), each with what's inside.

```graphql
{
  sealedProducts(setCode: "me02", kind: "etb") {
    nodes {
      name kind releaseDate msrp msrpCurrency msrpSource contentsStatus
      contents {
        lineType quantity text accessoryKind
        set { code name }
        card { code name }
        printing { stamps }
        product { name }
      }
      price { trend currency }
      expectedValue { total currency }
      marketplaceLinks { marketplace url }
    }
  }
}
```

## Kinds

`booster_pack`, `sleeved_pack`, `booster_box`, `half_box`, `booster_bundle`, `etb`, `pc_etb` (Pokémon Center ETB), `blister_1`, `blister_3`, `blister`, `checklane_blister`, `mini_tin`, `tin`, `display`, `build_battle`, `prerelease_kit`, `collection`, `premium_collection`, `ultra_premium_collection`, `deck`, `promo_pack`, `art_bundle`, `case`.

## Contents

Each line has a `lineType`:

| lineType | Meaning |
|---|---|
| `PACK` | Booster packs; `set` says which set. |
| `CARD` | A specific card, usually a promo. `card`, and `printing` when known (e.g. a Pokémon Center stamp), identify it. |
| `SEALED` | Another product inside, e.g. the bundles in a case; see `product`. |
| `ACCESSORY` | Sleeves, Energy, dice, coins, code cards, dividers…; see `accessoryKind`. |
| `VARIABLE` | Contents that vary ("packs vary", "1 of 4 promos"); read `text`. |

`contentsStatus` tells you how much to trust it:

| contentsStatus | Meaning |
|---|---|
| `VERIFIED` | Checked by hand against the official listing; MSRP carries `msrpSource`. |
| `PARSED` | Read automatically from the retailer's description. Quantities are reliable; promo identity usually isn't known. |
| `UNPARSED` | We know the product but not what's in it. |

Standard Elite Trainer Boxes have no official MSRP; for those `msrpSource` names the major retailer's list price we used.

## Product photos

`SealedProduct.image` links to the product's photo on TCGplayer (`url` about 1000 px, `thumbnailUrl` about 200 px) and its TCGplayer page (`pageUrl`). We don't host or license these photos; TCGplayer does. If you show one, show its `credit` and link to `pageUrl`, or leave it out. `image` is null when we don't know the product's TCGplayer id.

```graphql
{ sealedProducts(setCode: "sv03.5", kind: "etb") { nodes { name image { url thumbnailUrl pageUrl credit } } } }
```
