TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1{2 "id": "kanzen-games",3 "displayName": "KanZen Games (Canadian TCG & sports-card store, CAD)",4 "sourceId": "kanzen-games",5 "sourceName": "KanZen Games",6 "sourceType": "dealer",7 "sourceUrl": "https://www.kanzengames.com",8 "module": "api/kanzen-games",9 "enginePriority": [10 "api"11 ],12 "categories": [13 "pokemon",14 "magic_the_gathering",15 "disney_lorcana",16 "other_tcg",17 "digimon_tcg",18 "one_piece_card_game",19 "dragon_ball_tcg",20 "football_cards",21 "basketball_cards",22 "yugioh",23 "weiss_schwarz"24 ],25 "regions": [26 "CA"27 ],28 "languages": [29 "en"30 ],31 "currency": [32 "CAD"33 ],34 "supportsListings": true,35 "supportsSold": false,36 "supportsAuctions": false,37 "supportsImages": true,38 "supportsCatalog": false,39 "supportsPopulation": false,40 "supportsLookup": true,41 "refreshFrequencyMinutes": 720,42 "priority": "medium",43 "trustScore": 0.75,44 "attributionRequired": true,45 "termsUrl": "https://www.kanzengames.com/policies/terms-of-service",46 "accessNotes": "KanZen Games (kanzengames.com) runs on Shopify. The connector reads ONLY the public, unauthenticated storefront JSON that every Shopify shop serves to any visitor: /collections/<handle>/products.json?limit=250&page=N for the 15 configured collections (slabs, graded-card-in-stock, ebay-pokemon-singles, pokemon-tcg-mega-evolution, japanese-sealed, magic-the-gathering, disney-lorcana-singles-1, gundam-singles-all … (+7 more, see config.collections)) and /products/<handle>.json for URL lookups (~63k products; 53k TCG singles, 750 PSA slabs). robots.txt (verified 2026-09-08, User-agent *): standard Shopify rules — Disallow /admin, /cart, /checkout(s), /orders, /account, /services, /sf_*, /cart.js, /recommendations/products, /cdn/wpm/*.js and the filter/sort crawl traps (/collections/*sort_by*, /collections/*+*, /collections/*filter*&*filter*); no Crawl-delay for *. The /collections/<handle>/products.json and /products/<handle>.json paths we read carry none of those patterns and are allowed. Sitemap declared at /sitemap.xml (not needed). Access behaviour: plain HTTP 200 JSON with the honest RareIndexBot UA, no anti-bot challenge, no login, no key. Market pinning: Shopify Markets localises products.json prices by the requester IP as soon as an Accept-Language header is present (observed on Markets-enabled shops: a Canadian crawler receives CAD-converted prices with content-language en-CA while the JSON carries no currency field). Every request therefore sends the public localization=CA cookie — the shop's own home market, exactly what a CA visitor gets — so prices are always the declared CAD (verified 2026-09-08: 30.00 vs 43.00 on a Markets shop). Politeness: 1 request per 1.5 s, concurrency 1 per host (connectors/domains.d/g3-shops-na.json), crawlDepth pages per collection per incremental run, backfill bounded by backfillMaxPages. Data: asking prices in CAD (the shop's declared currency) — these are LISTINGS, never sales (§111); one listing per variant (condition/size/edition), variant SKU kept as identifier, out-of-stock variants kept as 'ended' listings, 0.00-priced placeholders dropped. Dates: published_at only; no fetch time is ever used as a sale date. Third-party grades in titles (PSA/BGS/CGC/ICCS/PMG…) are parsed by parseGradeFromTitle; cert numbers are not extracted. Deliberately NOT fetched: cart/checkout/account/customer endpoints, per-product .js barcode enrichment (fetchBarcodes=false: one extra request per product is not worth it for listings), the whole-shop /products.json, and unmapped collections — deck-box/sleeve/binder collections, \"all products\" umbrella collections, tournament entries. No personal data is collected; seller = the store itself.",47 "enabled": true,48 "schemaVersion": "1.0",49 "acquisitionMethod": "Shopify storefront products.json",50 "historicalDepth": "none",51 "requires": [],52 "config": {53 "currency": "CAD",54 "market": "CA",55 "seller": "KanZen Games",56 "location": "Toronto, ON, Canada",57 "collections": [58 {59 "handle": "slabs",60 "categorySlug": "pokemon",61 "franchise": "Pokémon"62 },63 {64 "handle": "graded-card-in-stock",65 "categorySlug": "pokemon",66 "franchise": "Pokémon"67 },68 {69 "handle": "ebay-pokemon-singles",70 "categorySlug": "pokemon",71 "franchise": "Pokémon"72 },73 {74 "handle": "pokemon-tcg-mega-evolution",75 "categorySlug": "pokemon",76 "franchise": "Pokémon"77 },78 {79 "handle": "japanese-sealed",80 "categorySlug": "pokemon",81 "franchise": "Pokémon"82 },83 {84 "handle": "magic-the-gathering",85 "categorySlug": "magic_the_gathering",86 "franchise": "Magic: The Gathering"87 },88 {89 "handle": "disney-lorcana-singles-1",90 "categorySlug": "disney_lorcana",91 "franchise": "Disney Lorcana"92 },93 {94 "handle": "gundam-singles-all",95 "categorySlug": "other_tcg",96 "franchise": "Gundam Card Game"97 },98 {99 "handle": "digimon-single",100 "categorySlug": "digimon_tcg",101 "franchise": "Digimon"102 },103 {104 "handle": "digimon-sealed",105 "categorySlug": "digimon_tcg",106 "franchise": "Digimon"107 },108 {109 "handle": "one-piece-tcg-singles-all",110 "categorySlug": "one_piece_card_game",111 "franchise": "One Piece"112 },113 {114 "handle": "dragon-ball-tcg",115 "categorySlug": "dragon_ball_tcg",116 "franchise": "Dragon Ball Super"117 },118 {119 "handle": "hololive-tcg-sealed",120 "categorySlug": "other_tcg",121 "franchise": "hololive"122 },123 {124 "handle": "football-sealed",125 "categorySlug": "football_cards"126 },127 {128 "handle": "basketball-sealed-all",129 "categorySlug": "basketball_cards"130 }131 ],132 "rules": [133 {134 "match": "\\bone piece\\b|\\bOP\\d{2}\\b",135 "categorySlug": "one_piece_card_game",136 "franchise": "One Piece"137 },138 {139 "match": "\\bmagic\\b|\\bmtg\\b",140 "categorySlug": "magic_the_gathering",141 "franchise": "Magic: The Gathering"142 },143 {144 "match": "yu-?gi-?oh",145 "categorySlug": "yugioh",146 "franchise": "Yu-Gi-Oh!"147 },148 {149 "match": "\\blorcana\\b",150 "categorySlug": "disney_lorcana",151 "franchise": "Disney Lorcana"152 },153 {154 "match": "\\bdigimon\\b",155 "categorySlug": "digimon_tcg",156 "franchise": "Digimon"157 },158 {159 "match": "\\bdragon ball\\b",160 "categorySlug": "dragon_ball_tcg",161 "franchise": "Dragon Ball Super"162 },163 {164 "match": "\\bweiss\\b",165 "categorySlug": "weiss_schwarz",166 "franchise": "Weiß Schwarz"167 }168 ],169 "defaultCategory": null,170 "exclude": "gift card|sleeves?|deck box|binder|playmat|toploader|top loader|storage box|dice|tokens? only|bundle of|mystery|buylist|submission|event ticket|\\bentry\\b|tournament|store credit|pre-?release event|supplies|card savers?|\\brepack|bulk lot|\\blot of\\b|\\bpaints?\\b|primer|brushes|online (pack|code)|digital code|code card|unused digital|ptcgo|ptcg live",171 "keepOutOfStock": true,172 "fetchBarcodes": false,173 "wholeShop": false,174 "pageSize": 250,175 "titlePattern": "^(?:PSA|BGS|CGC|TAG|ACE|SGC)\\s*[\\d.]+\\s*-\\s*(?<name>.+?)\\s*-\\s*(?<set>.+?)\\s*-\\s*#(?<number>\\S+)"176 }177}178