Cardmarket API endpoint
Returns only the category and expansion values from the selected public product catalogue. Use this lightweight discovery route before filtering catalogues by category_id or expansion_id; it does not return product rows.
/cardmarket/catalog/categoriesQuery parameters:
kind: optional singles, nonsingles, or accessories; defaults to singles.game_id: required for singles and nonsingles; accepted values are 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, and 25. Omit it for global accessories.Returns only the complete current category and expansion ID sets from the selected public product catalogue. This is the discovery route for category_id and expansion_id filters on /api/v1/cardmarket/catalog; product rows are omitted. The endpoint uses the catalogue snapshot/cache, and labels are left blank when the source file does not provide them.
The response returned 788 items. Field counts and profiles examine the first 500 checked items.
| Field | Filled in, of 500 checked | Values in the sample |
|---|---|---|
| id | 500 | |
| product_count | 500 | 2 to 432, median 71 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| kind | string | No | singles | Catalogue file type; defaults to singles Allowed values: singles, nonsingles, accessories. | singles |
| game_id | integer | No | Required for singles/nonsingles; omit for global accessories Allowed values: 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25. | 6 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/cardmarket/catalog/categories?kind=singles&game_id=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"kind": "singles",
"game_id": 6,
"source_url": "https://downloads.s3.cardmarket.com/productCatalog/productList/products_singles_6.json",
"version": 1,
"fetched_at": "2026-10-28T00:00:00Z",
"stale": false,
"categories": [
{
"id": 51,
"name": "Pokémon Single",
"product_count": 75066
}
],
"expansions": [
{
"id": 1585,
"product_count": 100
}
],
"category_total": 1,
"expansion_total": 788
}
}Request schema
No body schema
Response schema
#/definitions/cardmarket.catalogCategoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | cardmarket.CatalogCategoriesResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].id | integer | No | ||||
| data.categories[].name | string | No | ||||
| data.categories[].product_count | integer | No | ||||
| data.category_total | integer | No | ||||
| data.created_at | string | No | ||||
| data.expansion_total | integer | No | ||||
| data.expansions | array | No | ||||
| data.expansions[].id | integer | No | ||||
| data.expansions[].name | string | No | ||||
| data.expansions[].product_count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.game_id | integer | No | ||||
| data.kind | string | No | ||||
| data.source_url | string | No | ||||
| data.stale | boolean | No | ||||
| data.version | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/cardmarket/catalog/categories?kind=singles&game_id=1" \
-H "x-api-key: $CRAWLORA_API_KEY"