# Cardmarket Scraper \[Only $0.9/1K💰] | TCG Price Tracking (`ahmed_jasarevic/cardmarket-scraper`) Actor

Scrape Cardmarket TCG card prices — trends, 1/7/30-day averages, cheapest and foil prices for Magic, Pokemon, Yu-Gi-Oh, One Piece, Lorcana. Browserless, no proxy, $0.0009/card.

- **URL**: https://apify.com/ahmed_jasarevic/cardmarket-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.88 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Cardmarket Scraper

Scrape **Cardmarket TCG card prices** — Europe's largest trading-card marketplace — with price trends, 1/7/30-day averages, cheapest offers and foil prices for Magic: The Gathering, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana and Flesh and Blood. Built for TCG reseller arbitrage, price-tracking apps and collector price indexes.

**Fully browserless**: reads Cardmarket's public S3 CDN (`downloads.s3.cardmarket.com`) with no Cloudflare challenge, no login, no proxy and no headless browser — runs finish in under a minute and cost a fraction of a compute unit.

### Main Use Cases

- **TCG price tracking** — monitor price trends and 30-day averages to spot under- and over-priced cards instantly
- **Trading card market research** — pull structured, official pricing data across whole Cardmarket catalogues
- **TCG reseller arbitrage** — compare trend vs. cheapest offer to find buying and selling windows
- **Collector card price indexes** — a cheap, always-on price index for every card in a set or game
- **Price-tracking apps** — daily refreshes of the cheapest offer and trend for any card you watch

### How It Works

![Cardmarket Scraper workflow: from card URLs and game catalogues to TCG records with from prices, trends, averages and foil prices](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-cardmarket-scraper.webp)

Looking for a **Cardmarket scraper** or a practical **TCG price data alternative**? Paste card URLs or pull a full game catalogue. Each row includes card name, set, game, category, from price, price trend, 1, 7 and 30-day averages, foil prices, currency and price-guide date.

Use the dataset for price tracking, catalogue building, reseller research and arbitrage analysis across Magic, Pokemon, Yu-Gi-Oh!, One Piece, Lorcana and Flesh-and-Blood. Export as JSON, CSV or Excel, or pull results through the Apify API. Pay from $0.90 per 1,000 cards.

### Build TCG Price Databases Without Official API Access

Cardmarket's partner API is approval-gated and paid. This actor gives you the same official daily price guide as a clean JSON dataset: card name, set, **price trend, 1/7/30-day average prices, cheapest price and foil prices** — through the Apify platform with API access, scheduling, webhooks and monitoring included.

Works for **Magic: The Gathering**, **Pokémon**, **Yu-Gi-Oh!**, **One Piece**, **Lorcana** and **Flesh and Blood** — every game Cardmarket publishes a catalogue for.

### Track Card Price Trends Across Six TCG Games

Set the `game`, and the actor downloads the complete catalogue plus that game's daily price guide. One run refreshes every card's trend, averages and cheapest prices. Two modes:

- **Per-URL mode** — paste one or more Cardmarket product URLs; each is resolved to the exact product id from the slug + expansion and joined with today's prices
- **Full-catalogue mode** — leave `productUrls` empty, pick a game, and the whole catalogue is downloaded with the price guide

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `productUrls` | array of strings | No | – | Cardmarket product page URLs to resolve + price. Empty = full-catalogue mode |
| `game` | string | No | – | Game for catalogue mode: `Magic`, `Yu-Gi-Oh`, `Pokemon`, `One-Piece`, `Lorcana`, `Flesh-and-Blood` |
| `gameId` | integer | No | – | Numeric game id for the S3 files (Magic=1, Yu-Gi-Oh=3, Pokemon=6, One-Piece=18, Lorcana=19, Flesh-and-Blood=22). Overrides game/URL detection |
| `idExpansion` | integer | No | – | In catalogue mode, restrict output to one expansion |
| `maxItems` | integer | No | `0` | Max records. With `productUrls`: exact matches first, then extra cards of the same game (1 URL + 500 → 500 rows). Catalogue mode: caps page size (`0` = whole game) |
| `skipItems` | integer | No | `0` | Skip the first N products — combine with `maxItems` to page a whole game |

### Extract European TCG Marketplace Data — Output Fields

One dataset item per product:

| Field | Description |
|---|---|
| `name` | Card name (from the S3 catalogue) |
| `game` | Game (Magic, Pokemon, YuGiOh, ...) |
| `setName` / `expansionName` | Expansion / set name |
| `category` | Category (e.g. Magic Single) |
| `fromPrice` | Cheapest price (normalized number) |
| `priceTrend` | Price trend (normalized number) |
| `avg30d` / `avg7d` / `avg1d` | 30/7/1-day average prices |
| `priceTrendFoil` + other `*Foil` variants | Same price fields for foil/first-edition variants |
| `currency` | `€` |
| `idProduct` | Cardmarket product id (string) |
| `idExpansion` / `idMetacard` | Expansion and card meta ids |
| `candidates[]` | Other possible products for the same URL when a name was reprinted |
| `source` | `catalog` (S3 price guide) |
| `priceGuideDate` | Date of the daily price-guide snapshot (~02:45 CET) |
| `url` | Cardmarket product page URL |

### Collect TCG Card Prices At $0.0009 Per Card — Example Input

Per-URL lookup:

```json
{
    "productUrls": [
        "https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1",
        "https://www.cardmarket.com/en/Pokemon/Products/Singles/151/Articuno-MEW144"
    ]
}
```

Full Magic catalogue:

```json
{
    "productUrls": [],
    "game": "Magic",
    "maxItems": 0
}
```

### Example Output

```json
{
    "url": "https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1",
    "name": "Bloodstained Mire",
    "setName": "Modern Horizons 3: Extras",
    "category": "Magic Single",
    "game": "Magic",
    "currency": "€",
    "fromPrice": 24.99,
    "priceTrend": 30.42,
    "avg30d": 31.1,
    "avg7d": 31.82,
    "avg1d": 30.83,
    "priceTrendFoil": 63.42,
    "idProduct": "759801",
    "idExpansion": 5653,
    "source": "catalog",
    "priceGuideDate": "2026-09-24"
}
```

### Integrations & Automation

- **API** — call the actor from your own app via the Apify REST API (or the Apify MCP server in AI agents)
- **Scheduling** — schedule a daily run of the full catalogue to keep every card's trend/averages/from-price fresh
- **Webhooks** — trigger downstream pipelines when a run finishes
- **Export** — download the dataset as JSON, HTML, CSV or Excel

**Recommended schedule**: daily for price-tracking apps and price indexes (the price guide is refreshed each day at ~02:45 CET); weekly for reseller scanning.

### Related Actors

- [Cardmarket Scraper - TCG Card Prices & Trends](https://apify.com/lulzasaur/cardmarket-scraper) — `lulzasaur/cardmarket-scraper` — keyword search across Cardmarket; $0.05/result
- [Cardmarket Scraper - Pokemon Card & Booster Box Prices](https://apify.com/lowlanddata/cardmarket-price-guide) — `lowlanddata/cardmarket-price-guide` — daily prices incl. sealed products; $0.00095/result
- [Cardmarket Listings Scraper](https://apify.com/phantom_coder/cardmarket-listings-scraper) — `phantom_coder/cardmarket-listings-scraper` — individual seller listings with condition, language, quantity
- [Cardmarket Magic: The Gathering Trend Scraper](https://apify.com/scrap_them_all/cardmarket-magic-trend-scraper) — `scrap_them_all/cardmarket-magic-trend-scraper` — weekly top cards and best bargains

### FAQ

#### Why use this actor instead of the official Cardmarket API?

The official Cardmarket partner API requires an application approval and paid plans. This actor reads the same official daily price guide from the public S3 CDN — no approval, no API key, no auth, and it is cheaper per card than any Store competitor at $0.0009/result.

#### Is there a Cardmarket API for TCG price data?

There is a partner API (approval-gated and paid) and several unofficial scraped APIs — many priced at 5–50x this actor. This actor is a browserless alternative that reads Cardmarket's own public price-guide files, so the data is official and the price is the lowest on the Store.

#### How do I scrape Cardmarket without being blocked?

There is nothing to be blocked from: the actor never touches the Cloudflare-challenged site. It reads the public `downloads.s3.cardmarket.com` S3 catalogue and daily price guide, so there is no proxy, no browser and no challenge to bypass.

#### Cardmarket vs TCGplayer — which has better data for Europe?

Cardmarket is the dominant European TCG marketplace, so its price guide reflects EU market pricing (EUR). This actor covers Cardmarket only; for US-centric data, TCGplayer scrapers are the complement.

#### What are the known limitations?

The daily price guide publishes price **aggregates**, not individual seller listings (condition/language quantities are not included). Rarity and collector number are not part of the S3 catalogue files. Set names come from Cardmarket's expansion enrichment when reachable, otherwise from the URL path. Pre-release-only or unpublished products are not covered.

#### How much does it cost to scrape Cardmarket?

$0.0009 per result plus Apify's compute for the run — the S3 price guide is a single ~26 MB JSON file fetched once per run and cached for 24 hours, so runs typically finish in under a minute with well below 0.01 compute units. Free accounts get a 10-product preview.

### For AI Agents & LLM Apps

- **Purpose**: given Cardmarket product URL(s) or a game name, returns one JSON row per card with name, set, cheapest price, price trend, 1/7/30-day averages and foil prices.
- **Minimal working input**:

```json
{ "productUrls": ["https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1"] }
```

- **Variant inputs**: full catalogue of a game — `{ "productUrls": [], "game": "Magic", "maxItems": 0 }`; single expansion — add `"idExpansion": 5653`; paginate a whole game — `skipItems` + `maxItems` pairs.
- **Output fields**: `url, name, setName, category, game, currency, fromPrice, priceTrend, avg30d, avg7d, avg1d, priceTrendFoil, idProduct, idExpansion, idMetacard, candidates[], source, priceGuideDate`.
- **Behaviors an agent should know**: with `productUrls` set, exact URL matches are emitted first and the remaining `maxItems` budget is filled with other cards of the same game (`0` = pure per-URL lookups). In catalogue mode, `maxItems: 0` means no limit — the whole game is pushed, which can be a very large dataset; prefer paginating with `skipItems`. URL `V1`/`V2` suffixes resolve to the exact printing inside its set; without a suffix, every matching printing is emitted. Price values are numbers; raw formatted strings are kept in `*Raw` variants.
- **Billing**: pay-per-result — $0.0009 per dataset row (plus Apify's per-start and compute charges on paid plans).

### Legal & Compliance Disclaimer

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Cardmarket (cardmarket.com) or any of its parent companies. It accesses only publicly available catalogue and price-guide files published by Cardmarket; it does not bypass login walls, Cloudflare challenges, or access private or seller-specific data. You are responsible for complying with Cardmarket's Terms of Service and applicable law when using the data.

### SEO Keywords

cardmarket scraper, cardmarket api alternative, tcg card price tracking, pokemon card price data, magic the gathering price tracker, yu-gi-oh card prices, one piece card game price, lorcana card prices, flesh and blood card prices, cardmarket price guide, trading card market research, tcg reseller arbitrage, card price trend data, european tcg marketplace data, card prices 1-7-30 day average, collector card price index, cardmarket s3 catalogue, cardmarket seller data, cardmarket vs tcgplayer data, scrape cardmarket without cloudflare

# Actor input Schema

## `productUrls` (type: `array`):

List of Cardmarket product page URLs. The actor resolves each URL to the exact product id(s) from the slug + expansion and joins it with today's price guide (from / price trend / 1-7-30 day averages / foil prices). Example: https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1. Leave empty to scrape the full game catalogue (see "Game" below).

## `game` (type: `string`):

Game whose entire catalogue + price guide to download when productUrls is empty. E.g. Magic, Yu-Gi-Oh, Pokemon, One-Piece, Lorcana, Flesh-and-Blood.

## `gameId` (type: `integer`):

Numeric game ID used for the S3 catalogue files (Magic=1, Yu-Gi-Oh=3, Pokemon=6, One-Piece=18, Lorcana=19, Flesh-and-Blood=22). Overrides the game/URL detection. Find other games by inspecting Cardmarket's path.

## `idExpansion` (type: `integer`):

In catalogue mode (empty productUrls), restrict the output to products of this single expansion (idExpansion). Requires knowing the numeric expansion ID (visible in the actor's catalogue output as idExpansion).

## `maxItems` (type: `integer`):

Maximum number of records to output. In catalogue mode (empty productUrls) it caps how many products a run pushes (0 = no limit, the whole game). When productUrls ARE given, exact matches for each URL come first and the rest of the budget (up to maxItems) is filled with other cards of the same game — so one URL + maxItems 500 returns 500 rows.

## `skipItems` (type: `integer`):

Skip the first N products of the catalogue. Use together with maxItems to pull a whole game in pages: page 1 = skipItems 0 + maxItems N, page 2 = skipItems N + maxItems N, etc. until a page returns no rows.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1"
  ],
  "maxItems": 0,
  "skipItems": 0
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productUrls": [
        "https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1"
    ],
    "maxItems": 0,
    "skipItems": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/cardmarket-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "productUrls": ["https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1"],
    "maxItems": 0,
    "skipItems": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/cardmarket-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://www.cardmarket.com/en/Magic/Products/Singles/Modern-Horizons-3-Extras/Bloodstained-Mire-V1"
  ],
  "maxItems": 0,
  "skipItems": 0
}' |
apify call ahmed_jasarevic/cardmarket-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/cardmarket-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BQVZxOTuFOqyWIyno/builds/MThl8GQptRUb5PJCh/openapi.json
