# Cardmarket — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and browse trading cards across Europe's largest marketplace, accessing detailed card information, listings, seller profiles, and finding the best bargains all in one place. Explore games and expansions to discover available singles and compare prices from multiple sellers.

**Category:** Marketplaces | **Website:** [cardmarket.com/](https://cardmarket.com/) | **Docs:** [parse.bot/marketplace/d6eff58a-dd95-45bc-886b-f1cd346d961c/cardmarket-com-api](https://parse.bot/marketplace/d6eff58a-dd95-45bc-886b-f1cd346d961c/cardmarket-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_best_bargains

Retrieve the best bargain cards for a given game. Returns cards currently identified as best value deals on Cardmarket based on price trends and market data.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `game` | string | Yes | Game slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_best_bargains \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"game":"<string>"}'
```

### get_booster_box_listings

Get seller offer listings for a specific sealed Booster Box product. Returns paginated seller listings with condition, price, quantity, and attributes including language. Each page returns up to 50 listings. Supports filtering by language and seller country.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `booster_box` | string | Yes | Booster box product slug from the URL path (e.g. The-Time-of-Battle-Booster-Box, Abyss-Eye-Booster-Box) |
| `game` | string | Yes | Game slug as returned by get_games |
| `language` | string | No | Optional language filter (e.g. English, French, German, Spanish, Italian, Japanese, Korean, Portuguese, Russian) |
| `page` | integer | No | Page number for pagination (50 listings per page) |
| `seller_country` | integer | No | Country number to filter sellers by location (e.g. 7 for Germany, 1 for Austria, 2 for Belgium) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_booster_box_listings \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"booster_box":"<string>","game":"<string>","language":"<string>","page":"<integer>","seller_country":"<integer>"}'
```

### get_card_details

Retrieve full details for a specific single card including price guide information and first page of seller listings. The card is identified by game, expansion slug, and card slug from the URL path.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `card` | string | Yes | Card slug from the card URL path (e.g. Charizard-V1-BS4, Charizard-PGO010) |
| `expansion` | string | Yes | Expansion slug from the card URL path (e.g. Base-Set, Pokemon-GO, Brilliant-Stars) |
| `game` | string | Yes | Game slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_card_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"card":"<string>","expansion":"<string>","game":"<string>"}'
```

### get_card_listings

Get seller offer listings for a specific card via AJAX pagination. Returns paginated seller listings with native listing IDs, condition, price, and quantity. Each page returns up to 50 listings. The site enforces a retrievable limit of 300 articles; use has_next to determine if more pages are available.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `card` | string | Yes | Card slug (e.g. Charizard-V1-BS4) |
| `expansion` | string | Yes | Expansion slug (e.g. Base-Set) |
| `game` | string | Yes | Game slug |
| `page` | integer | No | Page number for pagination (50 listings per page) |
| `seller_country` | integer | No | Country number to filter sellers by location (e.g. 7 for Germany, 1 for Austria, 2 for Belgium) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_card_listings \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"card":"<string>","expansion":"<string>","game":"<string>","page":"<integer>","seller_country":"<integer>"}'
```

### get_card_versions

Returns all printings/versions of a named card across every expansion. Each version includes the expansion name, card number (extracted from the URL slug), available count, lowest price, and a URL to that version's Singles page. Filters for seller country, expansion ID, language, and minimum condition are forwarded to Cardmarket.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `card_name` | string | Yes | Card name slug from the URL path (e.g. Black-Lotus, Charizard, Pikachu) |
| `game` | string | Yes | Game slug as returned by get_games |
| `id_expansion` | integer | No | Expansion ID to filter versions by a specific expansion |
| `language` | string | No | Card language filter (e.g. English, French, German, Spanish, Italian, Japanese, Korean, Portuguese, Russian) |
| `min_condition` | string | No | Minimum card condition code (MT, NM, EX, GD, LP, PL, PO) |
| `seller_country` | integer | No | Country number to filter sellers by location (e.g. 7 for Germany, 1 for Austria, 2 for Belgium) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_card_versions \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"card_name":"<string>","game":"<string>","id_expansion":"<integer>","language":"<string>","min_condition":"<string>","seller_country":"<integer>"}'
```

### get_expansion_singles

Browse all single cards within a specific expansion. Returns paginated list of cards with rarity, availability, and pricing. When language or min_condition filters are applied, the lowest_price and available_count reflect only listings matching those criteria. Supports sorting by price, name, collector's number, rarity, release date, or popularity.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `expansion` | string | Yes | Expansion slug (e.g. Base-Set) |
| `game` | string | Yes | Game slug |
| `language` | string | No | Card language filter (e.g. English, French, German, Spanish, Italian, Japanese, Korean, Portuguese, Russian) |
| `min_condition` | string | No | Minimum card condition code (MT, NM, EX, GD, LP, PL, PO) |
| `page` | integer | No | Page number for pagination |
| `sort` | string | No | Sort order for results. When omitted, defaults to the site's default ordering (most popular). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_expansion_singles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"expansion":"<string>","game":"<string>","language":"<string>","min_condition":"<string>","page":"<integer>","sort":"<string>"}'
```

### get_expansions

List all expansions/sets available for a given game. Returns expansion names, slugs, card counts, and release dates. Results are ordered by release date descending (newest first).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `game` | string | Yes | Game slug |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_expansions \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"game":"<string>"}'
```

### get_games

Returns the list of all supported trading card games on Cardmarket. Each game has a name and a slug used as identifier in other endpoints.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_games \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_price_history

Retrieve historical price chart data for a specific card, including daily average sell prices over 30-day and recent periods, plus current price guide summary (price trend, 30/7/1-day averages). The card is identified by game, expansion slug, and card slug. Returns one request's worth of data with no pagination. The price_history array contains one entry per chart period found on the page; each entry has a label, period descriptor, and array of date/price data points. Supports optional language and minimum condition filters to scope price data.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `card` | string | Yes | Card slug from the card URL path (e.g. Charizard-V1-BS4, Charizard-PGO010) |
| `expansion` | string | Yes | Expansion slug from the card URL path (e.g. Base-Set, Pokemon-GO, Brilliant-Stars) |
| `game` | string | Yes | Game slug as returned by get_games |
| `language` | string | No | Card language filter (e.g. English, French, German, Spanish, Italian, Japanese, Korean, Portuguese, Russian) |
| `min_condition` | string | No | Minimum card condition code (MT, NM, EX, GD, LP, PL, PO) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_price_history \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"card":"<string>","expansion":"<string>","game":"<string>","language":"<string>","min_condition":"<string>"}'
```

### get_sealed_product_languages

Returns all languages a sealed product (e.g. booster box) is available in on Cardmarket, with per-language listing count and lowest price. Accepts the numeric product ID (found in Cardmarket's idProduct field on any product page). Loads the product page then fetches each language-filtered view to determine per-language availability. If the site rate-limits during per-language requests, partial data is returned with null values for languages that could not be fetched. The available_count per language reflects articles visible on the first filtered page (up to 50); has_more indicates whether additional listings exist beyond that page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `game` | string | Yes | Game slug as returned by get_games |
| `product_id` | string | Yes | Cardmarket's numeric product ID (from the idProduct hidden field on the product page, e.g. 883955 for a Pokemon booster box) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_sealed_product_languages \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"game":"<string>","product_id":"<string>"}'
```

### get_seller_profile

Retrieve public profile information for a seller. Returns the username and profile URL. Additional profile fields are included when available on the page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `game` | string | Yes | Game slug |
| `username` | string | Yes | Seller username as shown in card listings |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/get_seller_profile \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"game":"<string>","username":"<string>"}'
```

### search_singles

Search for single card listings within a given game. Returns paginated results with card name, expansion, availability, and lowest price. Pagination via the page parameter.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `game` | string | Yes | Game slug as returned by get_games |
| `page` | integer | No | Page number for pagination |
| `query` | string | Yes | Search keyword (card name or partial name) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-cardmarket-com-api-d6eff58a/search_singles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"game":"<string>","page":"<integer>","query":"<string>"}'
```
