The Buy these button on your wishlist runs a cart optimiser across the retailers we track. It checks current prices and stock, then groups your wishlist items into the fewest, cheapest carts, factoring in each retailer's delivery costs.
We look at your filtered wishlist items and find the best combination of retailer carts that minimises the total cost including shipping. The algorithm explores up to 10,000 potential moves to find a near-optimal result, so it completes in under a second even for large lists.
We currently check Gameology, Good Games, Mint Collectables, Pokebox, and Fluke & Box. We aim to expand coverage as more retailers join our pricing network.
Items that can't be sourced are grouped by reason: not in our index, currently out of stock, condition requirements not met, finishing preference not available, or a specific printing that isn't stocked. Each group shows you what to adjust on your wishlist item to improve your chances next time.
Yes. When you click "Open cart at a retailer", the link includes a ref=gradely.io and utm_source=gradely.io tag so retailers can see that customers are coming from Gradely. We also record the click internally so we can track which retailers are most useful to our community. We do not earn affiliate commission from these referrals.
No. Cart optimisation is free for all logged-in Gradely users.
Where the wishlist Buy these optimiser sources a whole list at once, Buy this card is the quick path for a single card. The cart icon on any card (in the catalogue or your wishlist) and the Where to buy section on a card's detail page show the retailers that currently stock it, cheapest first, each with a link straight to a prefilled cart at that retailer. We always include an eBay (AU) search as well, so there's a fallback even when none of the shops we track have it in stock.
For each retailer we show the cheapest near-mint (or better) listing we last verified, with the condition labelled. We also show how recently we checked it (for example "checked 3h ago") so you know how fresh the figure is. We read retailer prices on a schedule rather than in real time, so always treat the retailer's own checkout as the source of truth.
Three numbers can all be correct at the same time, because they measure different things:
For fast-moving cards the live price can change between our last check and your click, which is exactly why we show the "checked X ago" hint. If our figure looks off, the retailer's checkout is always the final word.
The eBay (AU) option runs a search (not a single fixed listing) built from the card's game, name, set, number, treatment and finishing, so it lands on the right card rather than unrelated merch. It is an affiliate link: Gradely may earn a small commission if you buy through it, at no extra cost to you. The deep links to other retailers are tagged so shops can see the traffic came from Gradely, but we earn no commission on those.
Type any word to search card names and text. Multiple words are all required (AND). Use quotes for exact phrases, e.g. "Cloud Strife".
Narrow results with filter prefixes:
| Filter | Example | Meaning |
|---|---|---|
| Set | s:m21 | Cards from set M21 |
| Rarity | r:mythic | Mythic rarity cards |
| Type | t:creature | Creature type cards |
| Identity | i:blue | Blue identity/colour cards |
| Artist | a:nielsen | Cards by artist Nielsen |
| Card Number | cn:42 | Card number 42 |
| TCG | tcg:mtg | Magic: The Gathering cards |
A plain word searches everywhere: name, type line and rules text. To be specific, usename:bolt for the card name andx:flying for rules text (text: is the long form). Quote a phrase to require every word: x:"draw a card".
Attributes are the numbers and words printed on the card itself. Usecost:2 for an exact value, orcost>=2 for a range. Comparisons support >=, >, <= and <, and the key, operator and number must stay together with no spaces.
Word attributes work the same way: keyword:flying, or keyword:"double strike" when it is more than one word.
A comparison on its own covers a lot of ground, so pair it with a game or another word:tcg:mtg cost>=6 ordragon cost>=6. On your collection and in the deck builder the game is already chosen for you, so you can just type cost>=6.
The per-game attribute list could not be loaded just now.
Repeat the same filter to require all values:
i:blue i:black - cards that are BOTH blue AND blackt:ninja t:action - cards that are both ninja AND action typeUse commas for alternatives:
i:blue,black - cards that are blue OR blackt:ninja,mystic - cards that are ninja OR mystic typePrefix with a dash to exclude:
-i:red - exclude red cards-t:draconic - exclude draconic type cardsi:blue i:black -i:red - all cards that are blue AND black but NOT redt:ninja,mystic t:action - all actions that are ninja OR mysticluffy i:red s:op01 - Luffy cards with red identity from set OP01sword r:rare,mythic - all swords that are rare or mythicThe search box on your Collection accepts everything above, and limits the results to cards you own. It also understands filters that describe your copy rather than the card itself, so you can tell your near-mint foil apart from your played one.
| Filter | Example | Meaning |
|---|---|---|
| Condition | c:nm | Your near-mint copies (also lp, mp, hp, damaged) |
| Finish | f:foil | Your foil copies |
| Treatment | tr:borderless | Your borderless copies |
| Graded | gr:yes | Graded copies only (gr:no for raw, or name the company, e.g. gr:psa) |
| Tag | tag:trade | Copies you tagged "trade" |
For example:
t:dragon r:mythic c:nm tag:trade - your near-mint mythic dragons marked for trade-s:cmm f:foil - your foils from every set except CMMThe Sealed tab works the same way, with t: matching the product type (e.g. t:booster_box), plusc: and tag:.
We combine data from several external retailers with, where available, sales intermediated on Gradely. We do not display individual retailer names.
When a product's data includes a Gradely-intermediated sale, it carries the highest confidence because it reflects an actual transaction on our platform. All other data points carry lower weight.
At least 3 external AU sources agree within 20%, and the newest reading is under 48 hours old. When a Gradely-intermediated sale exists recently, it carries extra weight.
2 or more external AU sources within the last week, or 1 recent source plus older-but-consistent data.
Only one source is available, the available data is older than a week, or sources disagree by more than 40%.
We do not yet have reliable AU pricing for this product. Coming soon as coverage expands.
Both use the same method: the middle price of what retailers are currently asking. The difference is when each was worked out.
A card page recalculates the price the moment you open it, so it always reflects what shops are asking right now. Your collection, portfolio value and wishlist use a figure we lock in once a night, because a collection is a running record over time rather than a live quote, and pricing thousands of cards on every page load would be slow and wasteful.
So the two can drift apart a little during the day as retailers change their prices, and they line up again after the nightly update. If a difference looks larger than that, it usually means the card is not currently listed by any retailer we track, in which case we fall back to a longer-run average and label it accordingly.
The headline price is the middle of what retailers are asking. The range beside it is the cheapest and dearest asking price we can currently see, so you can tell a card everyone agrees on from one where shops are hundreds of dollars apart. A wide range is a signal in itself, usually thin supply or a card in the middle of a move.
The country breakdown splits those asking prices by market, so you can see what a card is going for in each place rather than only the blended figure. Amounts are converted so they are comparable, and where a shop quoted a different currency we show what they actually charge alongside the converted amount, never a figure we worked backwards.
Some entries are marked as a market reference rather than a retailer ask. Those come from market data for a region where we do not yet track a storefront directly: useful for comparison, but not something you can click through and buy, so they never move the headline price.
Every figure here is an asking price, what sellers want, not a confirmed sale. Once trading goes live on Gradely, completed sales will become part of this and will be labelled as such.
Trends is the market at a glance. Everything on it is worked out once and shown to everyone, so it is the same view for every visitor: it is not about your collection, and you do not need one (or an account) to read it.
The index answers one question: is this game getting more or less expensive overall? It follows the whole game rather than any single card.
Because it is a comparison, not a price. Expressing it as a level rather than an amount means it reads the same wherever you are and whatever currency you think in, and it lets you put two games side by side even when their cards cost wildly different amounts. For actual prices, use a card's own page.
The caption under the chart tells you which markets the underlying prices come from. It is a blend rather than any single country, because we read prices from more than one market and convert them to a common currency before comparing them. Prices differ between countries, but the direction and size of a move tends to travel between markets far better than the absolute prices do, which is what makes an index useful wherever you shop.
The index records one reading per game per day, so it needs a few days before there is anything to draw a line between. A newly added game, or one we have only just started pricing, will say so rather than show a chart built from one or two readings. Days where we simply did not have enough priced cards to be confident are left out altogether, which is why a line can have gaps.
Signed out or on a free account you get a genuine slice: one game and a shorter window of history. A paid plan widens that to every game and the full history we hold. Where something is trimmed the page says so explicitly rather than quietly showing you less. See how to upgrade.
Preconstructed (precon) decks are official deck lists automatically imported from manufacturer product data and maintained by Gradely. You can identify them by the blue verified badge that appears next to the deck name on the detail page.
If you notice any errors in a precon deck list (wrong cards, incorrect quantities, missing entries), please let us know through our support portal.
To help us fix issues quickly, please include:
Some precon decks carry an unverified badge (an amber warning triangle next to the deck name). This means the deck was imported from the manufacturer's public deck list because the full card data for that specific product has not yet been published through their official API.
The card names and quantities are sourced from the manufacturer's own decklist page, so they are almost certainly correct. The cards themselves are real cards that exist in our catalogue, matched by name and by image where possible, and they are functionally identical to what you'd find in the physical product.
What we can't guarantee yet is the exact printing of each card. The canonical card IDs in an unverified deck may point to reprints or earlier editions rather than the specific set the physical product uses. Once the manufacturer publishes that data, the deck gets re-imported automatically and the unverified badge goes away.
If you spot a card in an unverified deck that looks wrong (a different name, a token mislabelled as a real card, anything odd), please flag it through our support portal. The sooner we know, the sooner we can promote the deck to verified.
A deck assignment links a specific physical copy you own to a deck, so you can see where your cards actually live. Each physical copy can be assigned to at most one deck at a time, a copy that's in one deck isn't available to another until you release it. You can only assign a copy to a deck whose list already contains that exact card (printing); assigning never silently adds cards to a deck.
With this setting on (the default), adding a card to a deck automatically reserves a free owned copy for it, so you don't have to assign cards one by one. Turn it off in Profile → Decks if you'd rather assign manually. Removing a card from a deck always releases any copies that were assigned to it.
The Deck assignment mode (in Profile → Decks) controls how assignments affect the ownership badges shown on cards inside a deck:
Either way the underlying data is identical, so you can switch modes any time without losing assignments.
Gradely is still in Beta and upgrades aren't possible at the moment. Please get in touch via contact or support us with a message. We'll capture interest and notify everyone when we're ready to go.
Yes. You can call the Gradely API directly to read card search, sets, pricing, and your own collection and wishlist, handy for scripts, spreadsheets, and your own tools.
Yes. Programmatic API access is available on the Pro plan. You can create and revoke API keys, and track your monthly usage, from Settings → API Keys.
The full endpoint reference and authentication guide live at developers.gradely.io.
The Gradely Exchange Format is a simple, human-readable text format for describing lists of cards and sealed products (booster boxes, bundles, precons and the like). It works across all supported TCGs (MTG, Pokemon, One Piece, Flesh and Blood, Sorcery, Riftbound) and is used for importing decks, preconstructed products, and bulk-adding cards and sealed products, including their full acquisition and disposal history, to your collection.
A GXF file has four kinds of lines:
| Line | Prefix | Description |
|---|---|---|
| Comment | # | Ignored entirely |
| Directive | @ | Sets defaults and metadata |
| Zone header | ## | Names a zone for subsequent cards |
| Card line | number | A card entry with quantity (or, inside a @kind sealed block, a sealed product entry) |
Directives set metadata and defaults. File-level directives appear once and describe the file:
| Directive | Description | Example |
|---|---|---|
@name | Human-readable name | @name "Eldrazi Unbound" |
@type | List type | @type precon |
@format | Game format | @format commander |
@released | Release date | @released 2023-08-04 |
Block-level directives can be redeclared anywhere. Each declaration changes the default (or, for @kind, the kind of line) for all subsequent lines:
| Directive | Description | Example |
|---|---|---|
@kind | Switches subsequent lines between cards and sealed products (default card) | @kind sealed |
@tcg | Default TCG | @tcg mtg |
@set | Default set code | @set cmm |
@tags | Tags for subsequent cards | @tags precon, eldrazi |
@condition | Default condition, cards only. A sealed value like damaged_packaging is rejected here, use @sealed_condition instead | @condition near_mint |
@sealed_condition | Default condition, sealed only. Only sealed or damaged_packaging are accepted, a card value like near_mint is rejected here | @sealed_condition damaged_packaging |
@finishing | Default finishing | @finishing foil |
@treatment | Default treatment | @treatment cold_foil |
Row-level tags on a card line merge with the active @tags directive; duplicates are removed case-insensitively.
Each card line starts with a quantity, followed by an identifier and optional pipe-delimited fields:
<quantity> <identifier> [| set_code] [| card_number] [| finishing] [| condition] [| treatment] [| tags] [| price] [| date] [| key=value ...]
When the identifier is a gid: or cid:, it already pins the exact printing, so the set_code and card_number fields are dropped and the printing comes first: gid:abc | finishing | condition | treatment | tags | price | date.
Identifier forms:
| Form | Syntax | Meaning |
|---|---|---|
| Card name | Sol Ring | Resolve by name (uses @tcg + @set defaults) |
| TCG-prefixed | mtg:Sol Ring | Resolve by name with explicit TCG (overrides @tcg) |
| Gradely ID | gid:abc123 | Exact card by Gradely ID |
| Canonical ID | cid:abc123 | Any printing of this card (newest selected) |
| Sealed product ID | sid:8f3a2c14-... | Exact sealed product by Gradely product ID (@kind sealed lines only) |
| Sealed product name | sealed:Bloomburrow Collector Booster Box | Resolve a sealed product by name (@kind sealed lines only); splits on the first colon only, so a name that itself contains a colon still works. Inside a @kind sealed block a bare name needs no prefix at all |
Fields can be skipped by leaving them empty between pipes:
# Just foil, no set or number 1 Sol Ring | | | foil # Set and number, skip finishing, set condition 1 Sol Ring | cmm | 5 | | lightly_played # All five fields 1 Enlightened Strike | evr | 027 | foil | near_mint | cold_foil # Row-level tags applied to this card (merged with any active @tags directive) 1 Sol Ring | cmm | 5 | foil | near_mint | showcase | binder, trade # Acquisition price and date (collection imports only) 1 Sol Ring | cmm | 5 | foil | near_mint | normal | | AUD:4.20 | 2026-06-27
The last two fields capture what you paid for a card and when, and only apply when importing into your collection (decks ignore them). The price accepts an optional currency and dollar sign, so AUD:4.20, AUD:$4.20, $4.20 and 4.20 are all valid. When you leave the currency off, we use your preferred currency. The date is YYYY-MM-DD. Both are optional, so older files without them keep working unchanged.
Beyond those, a card line can carry named fields, key=value pairs such as notes= or sold_as=, for the full acquisition and disposal history of a copy. See the named fields reference below for the complete list and its rules.
Use ## to group cards into zones. If no zone header appears, all cards go to the main zone.
## Main Deck 1 Sol Ring 1 Arcane Signet ## Sideboard 1 Rest in Peace ## Commander 1 Zhulodok, Void Gorger
@tcg mtg @name "Eldrazi Unbound" @type precon @format commander @set cmm ## Commander 1 Zhulodok, Void Gorger | cmm | 5 ## Main Deck 1 Sol Ring 1 Arcane Signet 1 Ulamog, the Ceaseless Hunger | bfz | 15 1 Thought-Knot Seer | ogw | 9 | foil ## Sideboard 1 Rest in Peace | akh | 18
mtgpokemononepieceriftboundfabsorcerylorcanagundammintnear_mintlightly_playedmoderately_playedheavily_playeddamagednormalfoiletchedreverse_holoSwitch a block from cards to sealed products with the @kind directive, then list your sealed products the same way you list cards, quantity first. Switch back to cards with @kind card (the default). Set a default condition for the whole block with @sealed_condition (sealed or damaged_packaging). This is separate from @condition, which is cards only, the two vocabularies share no values, so each line kind gets its own directive.
<quantity> <identifier> [| condition] [| price] [| date] [| key=value ...]
Identify a sealed product one of three ways: sid:<product-id> pins an exact catalogue product, sealed:<name> names one inline, or inside a @kind sealed block, a bare name needs no prefix at all. See the identifier table above for the exact syntax.
Worked example:
@tcg mtg @kind sealed 2 Bloomburrow Collector Booster Box | sealed | AUD:280.00 | 2026-08-01 | intent=investment | fees=AUD:12.50 1 sid:8f3a2c14-9b7e-4d51-a0c6-2e5f8b1d3a97 | damaged_packaging | AUD:95.00 | 2026-07-14 1 Bloomburrow Play Booster Box | sealed | AUD:190.00 | 2026-09-30 | notes="pre-order, not shipped yet"
The named fields below (price, date, sold, sold_as and the rest) work exactly the same on sealed lines as they do on card lines: see the named fields reference below.
sealeddamaged_packagingA single file can set both defaults at once, @condition and @sealed_condition are order-independent, so declare them up top and switch kinds with @kind as you go. Either can still be overridden per line.
@tcg mtg @condition near_mint @sealed_condition damaged_packaging 2 Lightning Bolt | lea | 161 | | | | | AUD:5.00 | 2026-01-02 @kind sealed 1 sealed:Bloomburrow Collector Booster Box
The card line gets near_mint, the sealed line gets damaged_packaging.
The game picked on the import page governs cards. A sealed line can declare a different game for itself with the game named field, so one file can carry sealed products from several TCGs even though every card in it stays one game. The game picked on the import page applies only to lines without game=.
@kind sealed 2 Bloomburrow Collector Booster Box | sealed | AUD:280.00 | 2026-08-01 | game=mtg 1 Base Set Booster Box | sealed | AUD:450.00 | 2026-08-01 | game=pokemon
Building this from a spreadsheet? A formula can generate the game= line for you from separate columns (Qty, Name, Condition, Currency, Price, Date, Game), for Google Sheets or Excel:
=A2&" sealed:"&B2&" | "&C2&" | "&D2&":"&TEXT(E2,"0.00")&" | "&TEXT(F2,"yyyy-mm-dd")&" | game="&G2
Paste the result into the GXF importer. A game can be written either as the code above (mtg, pokemon, and so on) or by its full name, so "Magic: The Gathering" works just as well as mtg.
Named fields are key=value pipe segments that follow the positional fields on a card or sealed line. Positionals must come first, a positional field after a named field is an error. Quote a value that contains a comma or spaces: notes="pre-order, not shipped yet".
| Key | What it sets | Line kinds | Example value |
|---|---|---|---|
condition | condition, from the line's own kind of vocabulary (a card line never accepts a sealed value, or vice versa) | card and sealed | card: near_mint; sealed: sealed or damaged_packaging |
price | what you paid | card and sealed | AUD:280.00, $280.00, 280.00 |
date | when you paid for it. Never a future date, on either kind: a pre-order is recognised from the product's release date, not from this | card and sealed | 2026-08-01 |
tags | your tags | card and sealed | investment,boxes |
notes | free note | card and sealed | "bought at the prerelease" |
intent | why you bought it | card and sealed | personal, investment or resale |
fees | delivery and other costs on the purchase | card and sealed | AUD:12.50 |
group | groups units bought together | card and sealed | august-order |
sold | what you sold it for | card and sealed | AUD:340.00 |
sold_date | when you sold it | card and sealed | 2026-09-14 |
sold_as | how it left your collection | card and sealed | manual, trade, gift, loss or opened |
sold_fees | costs on the sale | card and sealed | AUD:9.95 |
from | what or who it came from: a shop, a marketplace, the player you traded with, the event you won it at | card and sealed | "your local game shop" |
got_as | how it came into your collection. Leave it out and it counts as bought | card and sealed | purchase, trade, gift, pull or prize |
set | set code | card only | blb |
number | collector number | card only | 142 |
finishing | finish | card only | foil |
game | sealed lines only; overrides the game picked on the import page | sealed only | mtg, pokemon, onepiece, riftbound, fab, sorcery, lorcana, gundam |
treatment | treatment | card only | borderless |
sold_as=marketplace is not accepted. A completed Gradely marketplace sale is real, immutable history, and an import must never be able to forge one. Sales made on Gradely already appear in your collection automatically.sold_as=manual and sold_as=trade require a sold price. A sale without a price is not a sale.sold_as=gift, loss and opened must not carry a sold price, they are zero-proceeds by definition.sold_as=opened is sealed only. Opening a booster box is a sealed disposal.sold price requires a sold_date.sold_date cannot be in the future, and cannot be before the purchase date.condition=opened is rejected. It is not a condition you buy something in, use sold_as=opened to record that you opened it.got_as=purchase, or leaving got_as out, counts towards the total spend Gradely shows you, because nothing else put cash in. Cost basis is a separate number and Gradely does not change it: whatever price you record against a card stays its cost, whichever way it came in.graded, grade, cert and deck are reserved keys and are rejected with a "not supported on import" message.Gradely records what you tell it and does the arithmetic on it. It is not an accountant and does not give financial advice. What any of these numbers mean for your own circumstances is between you and your adviser.
A pre-order needs no special syntax, and no special date. Use the date you actually paid, which is what date always means: a future date is rejected on cards and sealed products alike. What makes a unit a pre-order is that the product has not been released yet, so the badge appears on its own and disappears on release day without you touching anything. The unit counts towards your holdings and cost basis from the day you paid, which is the day the money actually left.
There are three ways to bring your cards into Gradely:
Create a Google Sheet or Excel workbook with these columns in order:
count | name | set | number | finishing | condition | treatment | tags | price | date
In Google Sheets: File > Download > Tab-separated values (.tsv). Then change the delimiter to | before exporting, or use File > Download > Comma-separated values and let Gradely detect commas automatically.
In Excel: Save As > CSV UTF-8. Gradely accepts comma or tab delimiters.
A spreadsheet with pipe-separated columns is already valid GXF.
Paste or upload a Gradely Exchange Format file directly. GXF gives you the most control over set codes, finishings, conditions, and tags.
Copy-paste any comma- or tab-separated export with a header row. Gradely maps these column headers automatically (case-insensitive):
| Column header | Mapped to |
|---|---|
game, tcg, game name | game (must match the game you picked; either the code such as mtg or the full name) |
count, quantity, qty, tradelist count | quantity |
name, card, card name | name |
set, edition, set code, expansion | setCode |
number, card number, collector number, cn | cardNumber |
foil, finish, finishing | finishing |
condition, cond | condition |
treatment, frame, variant | treatment |
tags | tags (semicolon-split), merged with any @tags directive |
purchase price, price, paid, acquired price | what you paid (a value of 0 is treated as unset) |
purchase price currency, currency | currency for the price; if absent, your preferred currency is used |
acquired date, purchase date, date acquired | date acquired (YYYY-MM-DD) |
Exports from Moxfield and ManaBox carry their purchase price across automatically. Price and date only apply when importing into your collection.
TCG requirement: every import must target one TCG. Files containing cards from multiple TCGs will get an error at parse time.
Yes. Sealed products (booster boxes, bundles, precons and the like) go in the same file as your singles: start a @kind sealed block, then list them quantity first, the same way you list cards. This is also how you bring in their full acquisition and disposal history, purchase price, condition, sales, gifts, trades and more. See the sealed products reference for the full syntax.
No. A spreadsheet is one game. A Game column that disagrees with the game you picked is rejected rather than silently mismatched, so nothing lands in your collection under the wrong game. Import one game at a time, or use the formula above to paste GXF instead.
We never pick for you. Every card shows a gallery of every printing that matches your entry. You choose the exact one you own, including foil, showcase, extended art, borderless, and any other treatment.
Bulk helpers let you resolve many cards at once:
If a card has 200+ reprints, the gallery supports infinite scroll and filtering so you can always find the exact one.
Looking up your card lines against our database is the expensive part of an import (we cross-reference set, name, collector number, treatment, etc. across millions of printings). To keep the platform fast for everyone, each plan gets a rolling 24-hour lookup budget:
| Plan | Lookups per 24h |
|---|---|
| Free | 500 |
| Premium | 5,000 |
| Pro | 25,000 |
We count lines, not card quantities. A line like 4 Lightning Bolt counts as 1 lookup, regardless of how many copies the line includes. Four separate 1 Lightning Bolt lines would count as 4. A sealed product line counts exactly the same way, one lookup, the same as a card.
Lookups are spent at resolve time, not import time. Once we've looked a line up, it's paid for, even if you later choose to skip it or fail to commit. Importing the resolved cards into your collection is free.
On the Free plan and hitting the cap? Upgrade your account for a higher limit.
The card scanner lets you add cards to your collection just by pointing your phone or webcam at them. Gradely recognises each card as you go and drops it into a batch tray, so you can scan a whole stack in one sitting and review everything before it lands in your collection.
Yes, completely. Card recognition runs entirely on your own device, inside your browser. The live camera feed and the frames it captures are processed locally and are never uploaded, stored, or sent to Gradely or any third party. No photos or video ever leave your phone or computer. The only thing saved is the final card you confirm, recorded as a normal collection entry, exactly as if you had added it by hand.
Hold a card within the on-screen guide and Gradely matches what it sees against our catalogue, adding the best match to the tray automatically. Cards with look-alike printings are flagged so you can pick the exact one, and you can adjust quantity, finishing, condition, and price for each card before adding the whole batch in one go.
Scanning works across the games in our catalogue: Magic: The Gathering, Pokemon, One Piece TCG, Flesh and Blood, Sorcery, Riftbound and Lorcana. We'll keep working to improve overall quality as our catalogue grows.
Gradely currently supports Magic: The Gathering, Pokemon, One Piece TCG, Flesh and Blood, Sorcery, Riftbound and Lorcana. We're currently focused on the Australian and New Zealand market, with pricing in AUD and NZD.
The /news feed pulls from a curated list of trusted TCG sources across RSS feeds and YouTube channels. Every source is hand-selected by the Gradely team for relevance and quality.
Each article and video is processed once by an AI model to generate a concise summary, tag it with the relevant games and formats, and score its relevance. The original source is always attributed clearly on every item, with a direct link to read or watch the full content at its origin.
Gradely does not rewrite, rehost, or republish the original content. Every item links directly to the source so you can support the creator.
If you're a content creator and would like to make it to our /news feed, please get in touch via contact.