Cardmarket Repricer - Price Scraper for Card Sellers

Your Cardmarket prices were right the day you listed them, and the market has moved since. Feed in your stock export and get back only the cards whose...

Your Cardmarket prices were right the day you listed them, and the market has moved since. Feed in your stock export and get back only the cards whose price is now out of line: what you charge, what it is worth today, what to charge, and which rule decided. Reads the official and community exports.

$1.99 / 1,000 · 100.0% success over 27 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
stockCsv string Required, unless you use the link field below. Your stock, exported from Cardmarket. Paste it here: the API's JSON export, or a CSV from a stock exporter. It must carry the idProduct column, which is what each card is priced against. -
stockUrl string Required, unless you pasted the file above. A direct link to the same file, if you would rather not paste it. Must be reachable without a login. -
game string Which game your stock is in. The price guide for it is loaded once per run. pokemon
reference string Cardmarket's own figure your prices are set against. trend
undercutPct integer Sit this far below the reference price. 5
undercutCents integer A flat amount taken off as well, if you price that way. 0
floorPct integer A hard floor. A thin market or an odd guide entry cannot drag a card below this. 60
minPriceEur string Absolute minimum price for any card. 0.02
maxChangePct integer Caps how far a single run can move any price. 0 turns the cap off. 25
roundToCents integer 1 for exact cents, 5 to land on 0.05, 10 on 0.10. 1
conditionMultipliers object Cardmarket publishes one price per card, not one per condition, so the ladder is yours. Defaults: MT 1.05, NM 1, EX 0.9, GD 0.8, LP 0.7, PL 0.6, PO 0.5. -
onlyChanged boolean On by default, so you pay for decisions rather than for a copy of your stock. True
maxItems integer Stop after this many rows. 5000

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

A real result row from a recent run:

{
  "cardName": "Charizard ex",
  "condition": "NM",
  "currency": "EUR",
  "currentPriceEur": 2,
  "expansion": "Obsidian Flames",
  "idArticle": "900001",
  "idProduct": 265333,
  "isFoil": false,
  "isPlayset": false,
  "language": "1",
  "priceGuideDate": "2026-10-21",
  "productUrl": "https://www.cardmarket.com/en/Pokemon/Products?idProduct=265333",
  "quantity": 1,
  "reason": "no-price-guide-entry",
  "stockRow": 2
}
FieldTypeMeaning
idProduct ['integer', 'null'] Cardmarket product id from your stock file. This is what the row was priced against.
idArticle ['string', 'null'] Your own article id, carried straight through so you can match rows back to your stock.
cardName ['string', 'null'] Card name as your stock file spells it.
productUrl ['string', 'null'] The card's own page on Cardmarket. Null for games Cardmarket gives no public product path.
expansion ['string', 'null'] Expansion as your stock file spells it.
condition ['string', 'null'] Condition code from your file. Drives which multiplier was applied.
language ['string', 'null'] Language from your file, carried through untouched. It does not affect the suggestion.
isFoil boolean True when the row was priced off the foil columns rather than the regular ones.
isPlayset boolean True when the row is a playset, in which case the suggestion is four cards' worth.
quantity integer Copies on that stock row. Carried through; it does not affect the price.
currentPriceEur ['number', 'null'] What you charge today, read from your file.
referencePriceEur ['number', 'null'] Cardmarket's figure the suggestion is built from, before your condition ladder and undercut.
suggestedPriceEur ['number', 'null'] What to charge. Absent when the card could not be priced - see reason.
changeEur ['number', 'null'] Suggested minus current. Negative means a cut.
changePct ['number', 'null'] The same move in percent. Filter on this to review the big ones first.
reason string Why this price: repriced, held-at-floor, capped-by-max-change, already-at-target, signed-card-left-alone, no-price-published, no-foil-price-published, no-price-guide-entry.
currency string Always EUR: Cardmarket is a euro marketplace.
priceGuideDate string Date of the price guide the suggestion came from. One file per day.
stockRow integer Line number in your stock file, so a surprising row is easy to find.

Health

100.0% success over 27 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.