Catalog feed
The catalog feed lists every product in a game — cards and sealed products — without prices. Prices live in the prices feed, which refreshes on a different schedule.
Get the download link from GET /v1/feeds/{gameId}/catalog, then read it as described in the feeds overview. One product per line.
Records use the same field names as the Products endpoints — id, productType, nameSlug, externalIds mean the same thing here and on GET /v1/products/{productId}.
Record shape
{
"id": 50212,
"productType": "card",
"name": "Black Lotus",
"nameSlug": "black-lotus",
"slug": "alpha-black-lotus",
"expansionId": 42,
"expansionSlug": "alpha",
"printNumber": "232",
"variant": null,
"rarity": "Rare",
"finishes": ["Standard"],
"languages": ["en"],
"imageUrl": "https://ik.imagekit.io/cardnexus/prod/alpha/black-lotus.jpg",
"imageBackUrl": null,
"productCategory": null,
"externalIds": {
"cardmarket": [{ "finish": "Standard", "id": 5748 }],
"tcgplayer": [{ "finish": "Standard", "id": 1148 }],
"scryfallId": "ff1b8fc5-604a-4449-a73d-861e53642a70",
"scryfallOracleId": "b7ad39b3-5d10-45a4-99ae-30972ea6ac42"
},
"translations": {
"fr": { "name": "Lotus Noir" }
},
"attributes": {
"color": [],
"colorIdentity": [],
"types": ["Artifact"],
"description": "{T}, Sacrifice Black Lotus: Add three mana of any one color."
}
}
| Field | Type | Description |
|---|---|---|
id |
number | The product's stable identifier — the same id the Products and Pricing endpoints use. The prices feed references it as productId. |
productType |
string | card or sealed. |
name |
string | The product's name. |
nameSlug |
string | URL-safe slug of the product's name. Every printing of the same card, across expansions and variants, shares one nameSlug. Accepted as the nameSlug filter on POST /v1/products/search. |
slug |
string | URL-safe identifier of this exact printing, unique within the game. Two printings of the same card share a nameSlug but never a slug. The changelog identifies products by this slug. |
expansionId |
number | null | The expansion this product belongs to. Matches id in the expansions feed. |
expansionSlug |
string | null | The expansion's slug. |
printNumber |
string | null | Collector / print number within the expansion. |
variant |
string | null | Variant label, when the product is a variant of another printing. |
rarity |
string | null | The card's rarity. Values are game-specific. null for sealed products and for cards without a rarity. |
finishes |
string[] | The finishes this product exists in (e.g. Standard, Foil). |
languages |
string[] | Language codes the product is printed in. |
imageUrl |
string | null | Absolute image URL, or null when there's no image. |
imageBackUrl |
string | null | Absolute URL of the card's back image — double-faced cards and similar — or null. |
productCategory |
string | null | What kind of sealed product this is (e.g. booster_box, booster_pack, bundle). null for cards. |
externalIds |
object | null | The product's ids on Cardmarket and TCGplayer (one entry per finish) and in the game's card database (e.g. scryfallId and scryfallOracleId for Magic: The Gathering, konamiId for Yu-Gi-Oh!) — the same shape as externalIds on the Products endpoints. null when the product has no external mapping at all. |
translations |
object | null | Per-locale overrides, keyed by language code. |
attributes |
object | Game-specific fields (see below). |
slug vs nameSlug
They are different fields and only sometimes carry the same value. nameSlug (black-lotus) groups every printing of a name; slug (alpha-black-lotus) pins one exact printing. When searching by name on POST /v1/products/search, use nameSlug. When matching changelog entries, use slug.
Game-specific attributes
attributes holds the gameplay fields that are specific to a game — they differ from one game to the next. A Magic: The Gathering card carries color, colorIdentity, types, and description; a Pokémon card carries different keys. Treat attributes as an open object and read the keys you need; don't assume a fixed set across games. The keys and values are the same ones the Products endpoints return in attributes.
The common fields above (name, nameSlug, finishes, languages, …) are consistent across every game, and external card-database ids live in externalIds, not here.
Related
- Prices feed — current prices, joined on the product id
- Expansions feed — joined by
expansionId - Feeds overview — file format and how to download