Sorcery Data
Community data / Public JSON

Build with the world of Sorcery.

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

Available datasets

Two files. A lot to build with.

Stable, direct file URLs at the site root.

01 / Card catalog

cards.json

Card identities, game rules, and individual printings with set and finish details.

- cards · - printings
JSON dataset
02 / Market pricing

prices.json

Prices attached to specific printings, including market and low values in their stated currency.

- cards · - priced printings
JSON dataset
Quick start

Fetch, then use.

JavaScript
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));
Reference

Understand the data

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.

cards.json

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.

PathContents
id · name · slugCard identity and display name.
engineType, category, rarity, slot, rules, cost, attack, defense, life, elemental thresholds, elements, subtypes, keywords, umbrellas, and back. Some values can be null.
printings[].id · slug · printedAtPrinting identity and print date.
printings[].setSet name, code, and release date.
printings[].metaFinish, product, typeline, flavor, artist, and back; some values can be null.

prices.json

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.

PathContents
id · name · slugCard identity and display name.
printings[].id · slugSpecific printing to match with card data.
printings[].set · meta.finishSet name/code and printing finish.
printings[].pricemarket, low, and currency (currently USD).

Usage notes

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.