cards.json
Card identities, game rules, and individual printings with set and finish details.
JSON dataset
Card and printing data, plus market pricing, served as simple JSON files for deck builders, collection tools, and community projects.
Open access · No key required · Browser requests supported
Stable, direct file URLs at the site root.
Card identities, game rules, and individual printings with set and finish details.
Prices attached to specific printings, including market and low values in their stated currency.
const [cardsResponse, pricesResponse] = await Promise.all([
fetch("https://data.sorcery.no/cards.json"),
fetch("https://data.sorcery.no/prices.json")
]);
if (!cardsResponse.ok || !pricesResponse.ok) throw new Error("Data unavailable");
const [cards, prices] = await Promise.all([
cardsResponse.json(), pricesResponse.json()
]);
// Match a specific printing by its ID.
const pricesByPrintingId = new Map(
prices.flatMap(card => card.printings.map(printing => [printing.id, printing.price]))
);
const firstPrinting = cards[0].printings[0];
console.log(firstPrinting, pricesByPrintingId.get(firstPrinting.id));Both files contain arrays of card records. A card is the shared identity; each entry in printings identifies a particular published version. The files can be joined using a printing's id.
https://data.sorcery.no/cards.json
Each card has id, name, slug, engine, and printings. Game properties live in engine; published versions live in printings.
| Path | Contents |
|---|---|
id · name · slug | Card identity and display name. |
engine | Type, category, rarity, slot, rules, cost, attack, defense, life, elemental thresholds, elements, subtypes, keywords, umbrellas, and back. Some values can be null. |
printings[].id · slug · printedAt | Printing identity and print date. |
printings[].set | Set name, code, and release date. |
printings[].meta | Finish, product, typeline, flavor, artist, and back; some values can be null. |
https://data.sorcery.no/prices.json
Pricing records use the same card and printing IDs. Coverage can differ from cards.json; treat absent records and null price fields as unavailable rather than zero.
| Path | Contents |
|---|---|
id · name · slug | Card identity and display name. |
printings[].id · slug | Specific printing to match with card data. |
printings[].set · meta.finish | Set name/code and printing finish. |
printings[].price | market, low, and currency (currently USD). |
Responses are JSON with public CORS access. Dataset sizes and counts above are read from the published files when this page loads. The underlying data can change, so handle missing or added fields gracefully. Refresh your local copy as needed; avoid downloading both datasets for every card view.
Price figures are informational snapshots, not guaranteed sale prices. Source and update schedule are not specified in the files.