# Cardmarket Price Guide - TCG Card Prices (`lowlanddata/cardmarket-price-guide`) Actor

Daily EU market prices for 19 trading card games - Pokémon, Magic, Yu-Gi-Oh!, Lorcana, One Piece and more. Trend price, lowest listing, 1/7/30-day averages, foil variants and momentum per card, from Cardmarket's official daily price guide. No scraping, no seller data. Runs in seconds.

- **URL**: https://apify.com/lowlanddata/cardmarket-price-guide.md
- **Developed by:** [Lowland Data](https://apify.com/lowlanddata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Cardmarket Price Guide - TCG Card Prices

Daily European market prices for **every trading card game on Cardmarket** - Pokémon, Magic: The Gathering, Yu-Gi-Oh!, Disney Lorcana, One Piece and 14 more - as clean JSON. One row per card with the trend price, lowest listing, 1/7/30-day sale averages, foil variants and a momentum signal, straight from Cardmarket's official daily price guide.

### Quick start

1. Pick a **game** (Pokémon is the default).
2. Optionally type a **card name filter** ("charizard", "black lotus") - or leave it empty to export the whole game.
3. Run. Seconds later you have rows like:

```json
{
  "productId": 274406,
  "name": "Charizard ex [151]",
  "game": "Pokémon",
  "expansionId": 5320,
  "priceLowEur": 3.9,
  "priceAvgEur": 28.56,
  "priceTrendEur": 23.99,
  "avg1DayEur": 17,
  "avg7DayEur": 15.43,
  "avg30DayEur": 27.11,
  "foilTrendEur": 14.01,
  "foilAvg30DayEur": 11.47,
  "trendVsAvg30Pct": -11.5,
  "currency": "EUR",
  "priceGuideDate": "2026-08-28",
  "searchUrl": "https://www.cardmarket.com/en/Pokemon/Products/Search?searchString=Charizard%20ex"
}
```

### What you can do with it

- **Price your collection or shop inventory** against today's EU market, in bulk - the whole Pokémon guide is ~65,000 priced cards, one run.
- **Spot movers**: sort by *momentum* to see cards whose trend price runs ahead of (or behind) their own 30-day average.
- **Feed repricers, spreadsheets and bots**: stable JSON columns, EUR everywhere, an id per product.
- **Compare markets**: EU prices differ structurally from US price guides - this is the EU side, from the marketplace where Europe actually buys.

### Which games are covered?

Pokémon, Magic: The Gathering, Yu-Gi-Oh!, Disney Lorcana, One Piece, Digimon, Flesh and Blood, Star Wars Unlimited, Dragon Ball Super, Final Fantasy TCG, Weiss Schwarz, Cardfight!! Vanguard, Battle Spirits Saga, Riftbound, Force of Will, Star Wars: Destiny, My Little Pony, World of Warcraft and The Spoils - every game Cardmarket publishes a price guide for.

### Input

| Field                         | What it does                                                     |
| ----------------------------- | ---------------------------------------------------------------- |
| `game`                        | Which TCG to price (default `pokemon`).                          |
| `searchQuery`                 | Case-insensitive name filter. Empty = the whole game.            |
| `expansionIds`                | Keep only these Cardmarket expansion ids (visible in every row). |
| `priceMinEur` / `priceMaxEur` | Price band on the trend price.                                   |
| `onlyPriced`                  | Skip cards with no regular-variant price data (default on).      |
| `sortBy`                      | `trend_desc` (default), `trend_asc`, `momentum`, or `name`.      |
| `maxItems`                    | Cap on delivered rows.                                           |

### FAQ

**Where do the prices come from?**
From Cardmarket's official daily price guide - the same figures shown on cardmarket.com product pages. Cardmarket publishes this data openly; this actor turns it into filterable, sortable, analysis-ready rows.

**How fresh is the data?**
The price guide is refreshed once a day by Cardmarket. Every row carries its `priceGuideDate`. Schedule a daily run and your dataset follows the market.

**What is the trend price?**
Cardmarket's own smoothed market price - the number the marketplace shows as "the" price of a card. `avg1/avg7/avg30` are averages of actual sales over 1, 7 and 30 days, and `priceLowEur` is the cheapest current listing.

**What does `trendVsAvg30Pct` mean?**
How far today's trend price sits from the card's own 30-day sale average, in percent. +25 means the card is trading a quarter above its recent norm - heating up. Sort by `momentum` to rank the whole game by this signal.

**What are the foil columns?**
The same price statistics for the foil/holo version of the card, where one exists. `null` means Cardmarket has no data for that variant.

**Can I export a full set?**
Yes - filter by `expansionIds`. Run once with a name filter to find your set's id in the rows, then run with just that id and a high `maxItems`.

**Why do some cards have no prices at all?**
Very illiquid products may have no recent sales. They are skipped by default; set `onlyPriced` to false to include them.

**Does this include graded cards (PSA/BGS)?**
No - Cardmarket trades raw cards, and this guide prices raw singles. Graded-card prices are a different market.

**Do you scrape sellers or personal data?**
No. The price guide is aggregate market data - there is no seller identity, no listing text, no personal data of any kind in the source or the output.

**Is scraping involved at all?**
No browsing, no proxies, no anti-bot games - the actor reads Cardmarket's openly published daily data files. That is why runs finish in seconds and never break on site redesigns.

**How much does it cost?**
You pay per delivered row, plus a small run-start fee. Filtering happens before delivery, so a tight query costs cents.

**Can I run it on a schedule?**
Yes - a daily schedule right after the guide refreshes (early morning CET) gives you a continuous price history if you keep the datasets.

**The whole game is more rows than I need. What's the cheapest way to watch 50 cards?**
Put the card names in `searchQuery` runs (one per name via a task), or filter one expansion and a price band. `maxItems` hard-caps spend.

### Something broken or missing?

Open an issue on the Issues tab - it is read daily. Expansion-name resolution and price-history deltas are on the roadmap; tell us what you need next.

# Actor input Schema

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

Which trading card game to price.

## `searchQuery` (type: `string`):

Case-insensitive name filter, e.g. "charizard" or "black lotus". Leave empty for the whole game.

## `expansionIds` (type: `array`):

Cardmarket expansion ids to keep (find them in any result row's expansionId). Empty = all expansions.

## `priceMinEur` (type: `integer`):

Keep cards whose trend price is at least this.

## `priceMaxEur` (type: `integer`):

Keep cards whose trend price is at most this.

## `onlyPriced` (type: `boolean`):

Skip cards without any regular-variant price data.

## `sortBy` (type: `string`):

Order of the delivered rows.

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

Upper bound on delivered rows.

## Actor input object example

```json
{
  "game": "pokemon",
  "searchQuery": "charizard",
  "onlyPriced": true,
  "sortBy": "trend_desc",
  "maxItems": 1000
}
```

# Actor output Schema

## `rows` (type: `string`):

One row per card with daily EU market prices and trends.

# 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 = {
    "game": "pokemon",
    "searchQuery": "charizard"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lowlanddata/cardmarket-price-guide").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 = {
    "game": "pokemon",
    "searchQuery": "charizard",
}

# Run the Actor and wait for it to finish
run = client.actor("lowlanddata/cardmarket-price-guide").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 '{
  "game": "pokemon",
  "searchQuery": "charizard"
}' |
apify call lowlanddata/cardmarket-price-guide --silent --output-dataset

```

## MCP server setup

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

```

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/lEJHCdFWPAaj7ql7k/builds/lNuqxufGgiquEG5Db/openapi.json
