CardBeastCARDBEAST

Everything you need.
One page.

How scanning works, where prices come from, how to list on eBay and CardMarket, answers to every question. No fluff.

01 — QUICKSTART

From zero to your first listing in 90 seconds

Three steps. Nothing to configure, nothing to download to start.

STEP 1

Scan

Open /scan, frame the card front. The system identifies name, set, number, language and condition in about 3 seconds.

STEP 2

Check the price

See the eBay sold median for the last 90 days, split by condition (NM / LP / HP). Suggested price computed for your exact condition.

STEP 3

Publish

eBay tab → direct listing via OAuth. CardMarket tab → add to CSV and import with our browser extension.

02 — SCAN

How we recognise your card

Visual matching across 39,058 catalog cards embedded with DINOv2 + KNN. We recognise the artwork, not the text.

1

Frame the front

Open /scan, align the card in frame, snap. We show guidelines and an animated scan-line while we process. Nothing mandatory: a gallery photo works too.
2

Add the back (optional)

Only when you suspect authenticity. For 95% of scans the front is enough. Limit: 2 photos per scan, downscaled to 1024px quality 88 for speed.
3

Auto-identification

We embed the photo with DINOv2-Large, KNN against the catalog. If confidence ≥ 0.9 you get the card directly. Below that, the Wrong item?picker surfaces the top-5 candidates for you to choose.
4

Verify the metadata

Set, number, language, condition, edition (1st / Unlimited), type (raw / graded). Everything is editable via Edit condition. Conditions are MT, NM, EX, GD, LP, PL, PO.

Supported languages

Both for identifying the print, and for finding sold listings on the right marketplace.

  • ENEnglish (worldwide pool)
  • ITItalian (ebay.it)
  • DEGerman (ebay.de)
  • FRFrench (ebay.fr)
  • ESSpanish (ebay.es)
  • JPJapanese (worldwide)
  • KRKorean (worldwide)
  • ZHChinese simplified + traditional (worldwide)

Identity is determined by artwork (visual matching, language-invariant). Language is a separate signal, read by Gemini from the photo itself, and selects which eBay domain we query for sold listings.

03 — PRICING

Where the suggested price comes from

No magic. Median of eBay sold listings, last 90 days, split by condition. The condition you scanned decides which bucket we use.

The sources

  • Live eBay sold — Decodo HTML scrape with headless browser, up to 240 listings per query (one call covers virtually every card). 1-day cache, written only when the sample is high-confidence.
  • PriceCharting — eBay.com US median converted to EUR. Shown as reference only. Removed from the suggested-price calculation in May 2026 after we verified 3× deviation on graded slabs.
  • CardMarket— active listings "from" price. Shown for comparison, never used in the suggested-price calculation (active asks anchor low by design).

The condition split

Every eBay listing is tagged by seller-declared condition. The chart shows the buckets separately:

NMNear Mint
MTMint
EXExcellent
LPLightly Played
PLPlayed
HP/POHeavy / Poor

When your condition bucket has ≥ 5 sales, the suggested price is the median of that bucket. Below 5 sales we fall back to a recency-weighted target on the full raw pool, upper band ×4.90 / ×9.90.

Graded (PSA / CGC / BGS / ACE / SGC / TAG / GRAAD)

Auto-detection from the listing title. Bucketed by company + grade. When you scan a graded card we fire a grade-specific query PSA Charizard 4 10 in parallel with the raw query — keyword order (grade at the end, never at the start) is critical to catch listings that eBay tokenises poorly.

04 — MARKETPLACE

Which eBay we search

The card's language determines the domain. No eBay.it for English cards, no eBay.com for Italian ones. This avoids title auto-translation and keeps the pool clean.

EN · JP · KR · ZH · UK
ebay.com

Worldwide pool, prices converted to EUR per listing

IT
ebay.it

Italian prints, local sellers

DE
ebay.de

German prints

FR
ebay.fr

French prints

ES
ebay.es

Spanish prints

05 — LISTING

Your listing in 10 seconds

Price, eBay SEO title, marketplace. Pre-filled, editable, no required steps.

Suggested price

Upper band of your condition's median, rounded to x4.90 or x9.90 (buyers read €34.90 better than €33.27). Editable by hand if you prefer.

SEO title

Format tested as top-ranked on eBay Cassini search:

Pokemon {Card Name} {Number} {Set} {Variant} {Lang} {Condition}

Max 80 characters. Brand + name + number + set + variant (holo/reverse/etc) + language + condition.

Marketplace tabs

  • e
    eBay — direct listing via OAuth (see Connect section). Uses your Template 1 for shipping, return policy, payment.
  • cm
    CardMarket— adds the card to the CSV. Our browser extension imports it into the "List Mixed Products" page.
06 — CSV

The CardMarket export

Add to CSV, open CardMarket, import with the extension. Never type name + condition + price by hand again.

CSV columns

  • idProductThe CardMarket cm_id. When missing (unmatched card), the row is skipped by the extension.
  • englishNameStandard CardMarket English name.
  • localNameLocalised name when available.
  • expansionSet / expansion.
  • priceYour suggested price (editable).
  • conditionMT / NM / EX / GD / LP / PL / PO.
  • language1=EN, 2=FR, 3=DE, 4=ES, 5=IT, 7=JP, 8=ZH, 9=KR.
  • isFoiltrue / false.
  • isSignedtrue / false.
  • isFirstEdtrue / false.

Workflow

  1. 1.Scan the card, click Add to export. The counter TEST (n/50) increments.
  2. 2.When done, Add to CSV produces a downloadable file.
  3. 3.Open CardMarket → List Mixed Products → install our extension → click Import CSV.
  4. 4.The extension matches by idProduct, fills the rows and shows a report (created / skipped / errored).
07 — EXTENSION

The CardBeast browser extension

The piece that imports your CSV into CardMarket without you touching a single field.

1. Install

Chrome Web Store → search 'CardBeast'. Permissions only on cardmarket.com.

2. Sign in

Open CardMarket in your account. The extension reads the session, no credentials to enter.

3. Import

Navigate to List Mixed Products → click 'Import CardBeast CSV' → select the file. Done.

Tip.If the extension skips a row as "not found", the card has no cm_id: most likely its set is not yet mapped to CardMarket, or it's a vintage promo. You can always complete that row by hand on the List Mixed Products page.
08 — SCANS

All your saved scans

The /scans page keeps the history of every scan. Edit, reuse, re-export.

History

Every scan stays with its photo, identification and historical price. Search by name or filter by set.

Edit + re-export

Change condition or language after the scan; the price recomputes from the new bucket median.

Re-link to the market

Click to reopen the eBay sold panel; or add / re-add to the CSV.

Bulk operations

Select multiple scans for a single CSV export, or apply the same eBay template to all of them.

09 — CONNECT

Link your marketplace accounts

Once, then listing is a single click. No on-the-fly logins, no passwords stored on our side.

eBayeBay OAuth
  • Authorise via OAuth 2.0 — no username / password on our side
  • Post a new listing straight from the eBay tab
  • Shipping / return / payment templates configurable in Settings
  • Revoke access whenever you want from your eBay account
CardMarketCardMarket Extension
  • No public CardMarket API: the extension automates the CSV import
  • Works with YOUR browser session, never with ours
  • Matches by idProduct, falls back to name when missing
  • Open source, source visible
10 — SETTINGS

Account preferences

The things you want to configure once and forget.

Currency display

EUR / USD / GBP. Live conversion, but prices are always stored in EUR internally.

eBay templates

Template 1, 2, 3 with shipping, return, listing duration, best offer min, payment policy.

Default condition

Which condition is pre-selected on a fresh scan (default NM).

Default language

Your preferred listing language (default EN).

Listing blueprint

Customisable eBay title template, variables available: name, set, number, language, condition, variant.

Privacy

Delete account, export your data. Encrypted storage, Supabase EU region.

11 — FAQ

The questions we get all the time

Click to expand. If something is missing, reach out from the Support button in the mobile menu.

Today: Pokemon (full coverage — 39,058 embedded cards, all modern EN sets + popular Japanese sets + historical Black Star Promos).

Roadmap: One Piece (Q2 2026), Magic: The Gathering (Q3-Q4 2026), Yu-Gi-Oh, Disney Lorcana. The architecture is game-agnostic — DINOv2 works on any TCG artwork.

On our validation harness (perturbation matching): top-1 strict 76%, top-1 variant-aware 97.5%, top-5 100% across 500 random cards.

In real-world scans (phone camera, varied lighting, sleeves, partial fingers) accuracy is lower than the benchmark, compensated by Gemini OCR as tie-breaker + a manual "Wrong item?" picker whenever confidence is below 0.9.

Known edge case: vintage promos without a catalog embedding → graceful fallback to OCR-only, no wrong cards but fewer listings in the pool.

EN/EU vintage: yes, ~70% coverage (incl. WotC base, Jungle, Fossil, Team Rocket, Neo, e-Reader, EX block, DP era).

Black Star Promos: yes, every set (DP, BW, XY, SM, SWSH, SV, HGSS) is embedded. Dialga LV.X DP17, Mew DP24, Charizard DP43 etc. are identified by artwork, not by OCR text (which often fails on stylised collector numbers).

Japanese / Korean / Chinese: visual identification works; image coverage is still partial (JP ~13%, KR ~30%, ZH ~0%). We're working on the set-equivalence mapper for the borrow-from-EN pipeline.

No, the suggested price is the net sold price of the eBay listing, no shipping. The mix includes EU and US sellers, so it's already de facto neutralised against local shipping costs.

14-day Redis cache per card + condition + language. After 14 days we refetch live and the price may change if new sold listings have appeared (very common on popular cards).

If you want to force a refresh, change the condition or language and switch back: bypasses the cache.

Auto-detection from the eBay listing title (regex on PSA 9, CGC 8.5, BGS 10 Black Label, plus every other company — ACE, GRAAD, SGC, TAG, AGS, etc., company-agnostic).

Separate buckets per company + grade. The graded suggested price uses the exact bucket median (PSA 9 ≠ PSA 10 ≠ CGC 9), never mixed with raw or with other grades.

Yes. The CSV → extension → CardMarket import flow works independently of the eBay OAuth. Connect eBay only if you also want to publish directly there.

Depends on the plan. See the pricing page. Free trial includes 50 CSV listings + 50 eBay scans.

No, never. Our extension reads your browser session on cardmarket.com. Nothing passes through our servers. Open source, you can audit the code.

Stripe checkout: credit card, Apple Pay, Google Pay. SEPA Direct Debit for annual plans. No PayPal at the moment (high fees on micro-transactions).

Settings → Privacy → Delete account. Hard deletion within 7 days, no soft-delete. You can export your data (full CSV of scans + listings) before deletion at any time.

eBay sold listings = what people HAVE paid. CardMarket "from" price = the lowest ACTIVE ask.

They're different numbers by design. The suggested price we give you is based on sold (eBay), which is what matters for understanding what you actually sell for. We show CardMarket "from" as a reference of the active market floor.

No, but the site is fully responsive and PWA-installable. iOS Safari → Add to Home Screen; Android Chrome → Install app. The scan flow works perfectly from phone (native camera, high-quality photo).

Technically yes (you can upload a manual CSV), but the scan is the tool's core value — recognise, price, list in 90 seconds. Without scanning you're back on the manual CardMarket-only workflow.

Not public at the moment. If you need one, reach out via Support: for power-sellers with > 1,000 listings / month we can discuss API access.

Ready to list your first?

90 seconds from photo to live listing. Free trial, no credit card required.

Kora · online

Hi! How can I help?