Cardmarket Listings Scraper avatar

Cardmarket Listings Scraper

Pricing

from $2.50 / 1,000 card listings

Go to Apify Store
Cardmarket Listings Scraper

Cardmarket Listings Scraper

Scrape all seller listings from any Cardmarket card page — condition, language, quantity, price in EUR/USD. Optional Fair Value Analysis for Scarlet & Violet and Mega Evolution sets adds AI pricing, PSA data, gem rate, and deal score.

Pricing

from $2.50 / 1,000 card listings

Rating

5.0

(1)

Developer

Phantom Coder

Phantom Coder

Maintained by Community

Actor stats

2

Bookmarked

3

Total users

1

Monthly active users

0.54 hours

Issues response

19 hours ago

Last modified

Share

Scrape every individual seller listing from any Cardmarket product page - one row per offer, with seller name, condition, language, quantity, and price in EUR and USD.

Optionally enrich each listing with Fair Value Analysis: an AI-powered valuation from a specialized pricing data model that estimates what a card is worth, how it compares to PSA-graded copies, and whether a listing is trading above or below fair value.


Who is this for

  • TCG investors hunting undervalued copies before flipping or grading - sort by discountVsFairValuePct descending and surface listings trading 20%+ below model value in seconds
  • Graders checking whether the raw market price justifies the cost of a PSA submission - compare price against psa10PriceUsd and gemRatePct to estimate expected return
  • Resellers monitoring specific cards daily for arbitrage opportunities without manually refreshing Cardmarket
  • Collectors setting price alerts via Make or Zapier when a card drops below a target price in EUR

No Cardmarket account required. Works on any public product page.


Why it's different

The six other Cardmarket Actors on Apify Store all scrape the weekly price trend page - one aggregated number per card, suitable for broad market research. This Actor scrapes the individual seller listing table - one row per offer, with the seller name, condition grade, language, quantity, and asking price.

That distinction matters when you are making purchasing decisions. A card with a trend price of €150 might have a NM English copy listed at €118 from a Power Seller in Germany. The trend page will never show you that. This Actor will.

With Fair Value Analysis enabled, each listing also gets a deal score: how far the asking price sits below the model's estimate of fundamental value. A discountVsFairValuePct of +24 means the seller is asking 24% below what comparable graded sales suggest the card is worth in raw form - that is the signal no trend scraper can give you.


What you get

Every listing row includes:

  • Card name, seller username, condition (MT/NM/EX/GD/LP/MP/HP/PO), language, and quantity
  • Price in EUR (as listed on Cardmarket), converted to USD at the live exchange rate
  • Seller comment when the seller added a note to the listing (condition details, grading info, shipping notes)
  • Direct link to the product page

With Fair Value Analysis enabled (Scarlet & Violet and Mega Evolution sets):

  • fairValueEur / fairValueUsd - pricing data model's estimate of what the card is worth
  • discountVsFairValuePct - how far the listing is below (or above) model value; positive = below = potential deal
  • rawPriceEur / rawPriceUsd - blended current market price from recent comparable sales
  • discountVsRawPct - how the listing compares to spot market price
  • psa9PriceUsd / psa10PriceUsd - estimated PSA 9 and PSA 10 grade prices
  • gemRatePct - percentage of submitted copies that graded PSA 10
  • psa10Pop / totalPop - PSA 10 population and total graded supply
  • price1dChangePct - 1-day price momentum
  • price7dVs30dChangePct - 7-day price trend vs the 30-day average

How to use

  1. Open the Cardmarket product page for the card you want to track (e.g. cardmarket.com/en/Pokemon/Products/Singles/151/Blastoise-ex-V3-MEW200).
  2. Copy the URL and paste it into the Cardmarket product URL field.
  3. Set your minimum condition, language, and price filters as needed.
  4. Run the Actor. All listing pages are crawled automatically up to your Max results limit.
  5. In the Output tab, sort by Deal vs FV (%) descending to surface the listings trading furthest below fair value.

⚠️ Getting 0 results is completely normal. It means no listings matched your filters (condition, language, price range) at the time of the run - not that the Actor failed. Try relaxing the condition filter or removing the language filter to confirm there are listings available.


Input configuration

FieldTypeDefaultDescription
productUrlStringrequiredProduct page URL for the specific card.
minConditionSelectNMOnly return listings at or above this quality: MT, NM, EX, GD, LP, MP, HP, or PO.
languageSelectAny languageFilter by card language (English, French, German, Spanish, Italian, Simplified Chinese, Japanese, Portuguese, Russian, Korean).
minPriceNumberOnly return listings at or above this price in EUR.
maxPriceNumberOnly return listings at or below this price in EUR.
sellerCountrySelectAny countryOnly return listings from sellers in this country. Covers all major Cardmarket seller countries across Europe.
maxResultsInteger10Maximum listings to return. Range: 1 to 500.
enableFairValueBooleanfalseEnable the Fair Value Analysis add-on. Charged once per run when data is available. Covers Scarlet & Violet and Mega Evolution sets only.
isSignedBooleanfalseAdvanced filter: signed cards only.
isAlteredBooleanfalseAdvanced filter: altered art only.
isFirstEdBooleanfalseAdvanced filter: first edition only.
isPlaysetBooleanfalseAdvanced filter: playset listings only (4 copies).
sellerTypeSelectAny sellerAdvanced filter: private sellers only, or commercial sellers only.

Example input:

{
"productUrl": "https://www.cardmarket.com/en/Pokemon/Products/Singles/151/Blastoise-ex-V3-MEW200",
"minCondition": "NM",
"language": "English",
"minPrice": 100,
"maxPrice": 300,
"sellerCountry": "DE",
"maxResults": 50,
"enableFairValue": true
}

Output

Base listing (all sets):

{
"cardName": "Blastoise ex MEW #200",
"sellerName": "seller_username",
"condition": "NM",
"language": "English",
"quantity": 1,
"price": 145.00,
"currency": "EUR",
"priceUsd": 159.50,
"sellerComment": "Off center. NM-EX. Fast shipping.",
"eurUsdRate": 1.10,
"productUrl": "https://www.cardmarket.com/en/Pokemon/Products/Singles/151/Blastoise-ex-V3-MEW200"
}

Listing with Fair Value Analysis (Scarlet & Violet and Mega Evolution sets):

{
"cardName": "Blastoise ex MEW #200",
"sellerName": "seller_username",
"condition": "NM",
"language": "English",
"quantity": 1,
"price": 145.00,
"currency": "EUR",
"priceUsd": 159.50,
"fairValueEur": 200.00,
"fairValueUsd": 220.00,
"discountVsFairValuePct": 27.5,
"rawPriceEur": 159.09,
"rawPriceUsd": 175.00,
"discountVsRawPct": 8.9,
"price1dChangePct": -0.5,
"price7dVs30dChangePct": 2.1,
"gemRatePct": 68.5,
"psa10Pop": 1240,
"totalPop": 2840,
"psa9PriceUsd": 280.00,
"psa10PriceUsd": 650.00,
"eurUsdRate": 1.10,
"gemRateDate": "2026-05-01",
"sellerComment": "Off center. NM-EX. Fast shipping.",
"productUrl": "https://www.cardmarket.com/en/Pokemon/Products/Singles/151/Blastoise-ex-V3-MEW200"
}

Understanding the data

Fair value and deal score

fairValueEur and fairValueUsd are the pricing data model's estimate of what the raw card is worth, derived from graded card sales (PSA 9 and PSA 10), historical price trends, and grading population supply. It is a fundamental value estimate updated on a rolling basis, not a live bid/ask price.

discountVsFairValuePct measures how far the listing price is from that estimate:

  • Positive = listing is below model value - a potential deal. +27.5 means you are paying 27.5% less than the model says the card is worth.
  • Negative = listing is above model value - seller is asking a premium.

rawPriceEur and rawPriceUsd are the blended current market price from recent comparable raw sales - the spot price where the card is actually trading today.

discountVsRawPct measures how the listing compares to that spot price:

  • Positive = listing is below current market - a relative bargain among active sellers.
  • Negative = listing is above current market - seller is asking more than recent trades.

Reading both together:

discountVsFairValuePctdiscountVsRawPctWhat it means
PositivePositiveBelow model value and below market - strongest buy signal
PositiveNegativeBelow model value but above market - market itself is cheap vs the model; opportunity if you trust the model
NegativePositiveAbove model value but below market - market is expensive vs the model; consider waiting
NegativeNegativeAbove both - overpriced listing

Grading data

gemRatePct is the percentage of submitted copies that have achieved PSA 10. A low gem rate (e.g. below 30%) means the card is difficult to grade to a perfect 10, which increases the scarcity and value of existing PSA 10 copies. A high gem rate means PSA 10s are more abundant and easier to produce.

psa10Pop is the total number of PSA 10 copies on record. Combined with gemRatePct, this gives a picture of supply: a low pop with a low gem rate signals a genuinely scarce graded card.

Price momentum

price1dChangePct shows whether the raw market price moved up or down in the last day.

price7dVs30dChangePct compares the 7-day average price to the 30-day average. A positive value means recent prices are running above the monthly average - the card is gaining momentum. A negative value means it is softening.

Condition codes

CodeCondition
MTMint
NMNear Mint
EXExcellent
GDGood
LPLight Played
MPModerately Played
HPHeavily Played
POPoor

Common use cases

Find undervalued Special Illustration Rares

Run the Actor on a SIR product page with enableFairValue: true and minCondition: NM. Sort the output by discountVsFairValuePct descending. Listings with a discount above 15 are trading meaningfully below the model's estimate of fair value - a concrete starting point for a buy decision.

Grading return calculator

Set enableFairValue: true and look at psa10PriceUsd, gemRatePct, and the listing price. If psa10PriceUsd is $650, gemRatePct is 68, and a NM English copy is listed at $145, the expected value of a submission is roughly $650 × 0.68 - grading cost. Listings where that math works at current prices appear in seconds.

Daily price monitoring

Schedule the Actor to run once per day with maxResults: 10. This gives you the cheapest NM listings at the current moment for a quick price check. At $0.05 per run on the free plan, monitoring 10 cards daily costs around $0.50/month.

Build a watchlist with Make or Zapier

Set up a scenario that loops through a list of Cardmarket URLs, triggers one Actor run per card, and appends results to a Google Sheet or Airtable base. Filter rows where discountVsFairValuePct > 15 to surface only the listings worth acting on.

Spot momentum before the market moves

Filter for cards where price7dVs30dChangePct is positive and discountVsFairValuePct is also positive - cards gaining price momentum that have not yet priced in the move at the individual seller level.


FAQ

Do I need a Cardmarket account or API key? No. The Actor works entirely on public Cardmarket data - no login, no credentials required.

Which sets support Fair Value Analysis? All Scarlet & Violet sets (from the base set through current releases) and all Mega Evolution sets. Cards from older sets (XY, Sun & Moon, etc.) return the full listing data without the Fair Value enrichment fields.

Why am I getting 0 results? The most common cause is filters that are stricter than the available listings - for example, filtering for English NM on a card that only has Italian listings. Try removing the language filter or relaxing the condition to EX to confirm there are listings available. 0 results is a clean exit, not a failure.

What is the difference between Fair Value and Raw Price? fairValueEur is the model's estimate of the card's fundamental worth based on graded card sales and supply data - it is forward-looking and changes slowly. rawPriceEur is the blended current market price from recent raw sales - it reflects where the card is actually trading today. The two diverge when the market is moving: if rawPriceEur is significantly below fairValueEur, the market is temporarily cheap relative to fundamentals.

Can I scrape multiple cards in one run? No. The Actor scrapes one product page per run. To monitor a list of cards, use Apify scheduling with one task per card, or trigger runs in a loop from Make or Zapier.


Limitations

  1. Fair Value Analysis is not available for all sets. It covers Scarlet & Violet (base set through current releases) and Mega Evolution sets. Cards from older sets return full listing data without enrichment fields.
  2. One card per run. The Actor scrapes a single product page per run. To monitor a list of cards, use Apify's scheduling feature with one task per card, or loop through URLs using Make or Zapier.
  3. Prices change continuously. Each run reflects the live state of Cardmarket at that moment. A listing shown as a deal may sell before you act on it.
  4. Seller listings only. The Actor returns individual seller offers, not Cardmarket's aggregated trend data. It does not scrape pack prices, sealed product, or categories - only Singles product pages.

Pricing

This Actor uses Pay-Per-Event (PPE) pricing - you pay only for what you actually receive.

EventFreeStarterScaleBusiness
Actor start$0.00005$0.00005$0.00005$0.00005
Card listing$0.005$0.004$0.003$0.0025
Fair Value Analysis$0.070$0.060$0.050$0.040

Typical run costs:

Run typeFree planStarterScale
50 listings, no Fair Value$0.25$0.20$0.15
50 listings + Fair Value$0.32$0.26$0.20
10 listings + Fair Value (daily monitor)$0.12$0.10$0.08

Typical monthly cost (Starter plan, $0.004/listing):

  • Monitor 10 cards daily (300 runs/month, 10 listings each): $12.00/month
  • Scan a watchlist of 50 cards once weekly: $0.80/month
  • One-off bulk scan of 500 listings across 10 cards: $2.00

vs. other Cardmarket Actors: The six other Cardmarket Actors on Apify Store all scrape aggregated weekly trend pages - a single price per card, not individual seller rows - at $0.001 per result. This Actor returns actionable purchasing data (seller, condition, language, quantity, and price per offer) at $0.005 per listing on the free plan, with optional Fair Value enrichment that no competing Actor provides.

You can cap spending per run using the ACTOR_MAX_TOTAL_CHARGE_USD limit in your Apify integration settings.


Output field reference

Listing fields (all sets)

FieldWhat it contains
cardNameCard name parsed from the Cardmarket URL slug, including set code and card number (e.g. Blastoise ex MEW #200)
sellerNameCardmarket username of the seller
conditionCondition grade: MT, NM, EX, GD, LP, MP, HP, or PO
languageCard language as listed on Cardmarket (English, French, German, Italian, etc.)
quantityNumber of copies available in this listing
priceAsking price in EUR as shown on Cardmarket
currencyAlways EUR
priceUsdprice × live EUR/USD rate
eurUsdRateEUR/USD exchange rate used for conversion, fetched at run time
sellerCommentSeller's note on the listing (condition details, grading info, shipping terms). null when no comment set.
productUrlFull URL to the Cardmarket product page

Fair Value Analysis fields (Scarlet & Violet and Mega Evolution sets only)

FieldWhat it measures
fairValueEurModel's estimate of the card's fundamental raw value in EUR, derived from graded card sales and supply data
fairValueUsdSame estimate in USD
discountVsFairValuePct(fairValue - price) / fairValue × 100 — positive means the listing is below model value (buy signal); negative means above
rawPriceEurBlended current market price from recent comparable raw sales in EUR - the spot price where the card is actively trading
rawPriceUsdSame spot price in USD
discountVsRawPct(rawPrice - price) / rawPrice × 100 — how the listing compares to the current market spot price
psa9PriceUsdEstimated PSA 9 grade price in USD based on recent graded sales
psa10PriceUsdEstimated PSA 10 grade price in USD based on recent graded sales
gemRatePctPercentage of submitted copies that achieved PSA 10 — lower values signal a harder-to-grade card
psa10PopTotal PSA 10 copies on record
totalPopTotal graded copies (all grades) on record
price1dChangePct1-day percentage change in the raw market price
price7dVs30dChangePct(7-day avg price / 30-day avg price - 1) × 100 — positive means the card is gaining momentum
gemRateDateDate the grading population data was last updated

Support

Questions or issues? Open a ticket in the Issues tab on the Actor page.