cardmarket-priceguide
Cardmarket's public bulk files (no key, no storefront crawling):
productCatalog/priceGuide/price_guide_<idGame>.json— daily EUR guide per product:avg,low,trend,avg1,avg7,avg30and the*-foiltwins.createdAtof the file is the observation date.productCatalog/productList/products_singles_<idGame>.json/products_nonsingles_<idGame>.json—idProduct,name,idCategory/categoryName,idExpansion,idMetacard,dateAdded.
Game ids (probed live; 403 = absent): 1 Magic · 2 WoW · 3 Yu-Gi-Oh! · 5 Spoils · 6 Pokémon · 7 Force of Will · 8 Vanguard · 9 Final Fantasy · 10 Weiss Schwarz · 11 Dragoborne · 12 My Little Pony · 13 Dragon Ball Super · 15 SW Destiny · 16 Flesh and Blood · 17 Digimon · 18 One Piece · 19 Lorcana · 20 Battle Spirits Saga · 21 SW Unlimited · 22 Riftbound. config.games maps ids → taxonomy slug.
Output: one catalog_item per product (identifiers.cardmarket_id = idProduct, the key MTGJSON also emits), a second one with variant Foil (Reverse Holo for Pokémon) when foil prices exist, and price_observations per field (avg→mid, low→low, trend→trend, avg1→market, avg7→average_7d, avg30→average_30d). The files carry no expansion names, numbers or images.
Cursor { gameIdx, offset }; ≤ 3 requests per game per run. Fixtures: pnpm tsx connectors/api/cardmarket-priceguide/_capture.ts.