{
  "id": "gamezilla",
  "displayName": "GameZilla (Canadian TCG & collector-toy store, CAD)",
  "sourceId": "gamezilla",
  "sourceName": "GameZilla",
  "sourceType": "dealer",
  "sourceUrl": "https://www.gamezilla.ca",
  "module": "api/gamezilla",
  "enginePriority": [
    "api"
  ],
  "categories": [
    "magic_the_gathering",
    "gundam",
    "action_figures",
    "disney_lorcana",
    "other_tcg"
  ],
  "regions": [
    "CA"
  ],
  "languages": [
    "en"
  ],
  "currency": [
    "CAD"
  ],
  "supportsListings": true,
  "supportsSold": false,
  "supportsAuctions": false,
  "supportsImages": true,
  "supportsCatalog": false,
  "supportsPopulation": false,
  "supportsLookup": true,
  "refreshFrequencyMinutes": 720,
  "priority": "medium",
  "trustScore": 0.75,
  "attributionRequired": true,
  "termsUrl": "https://www.gamezilla.ca/policies/terms-of-service",
  "accessNotes": "GameZilla (gamezilla.ca) 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 26 configured collections (mtg-commander-masters, mtg-commander-legends-battle-for-baldurs-gat, mtg-avatar-the-last-airbender, mtg-foundations, mtg-final-fantasy-commander, mtg-commander-legends, mtg-modern-horizons-3-commander, mtg-edge-of-eternities … (+18 more, see config.collections)) and /products/<handle>.json for URL lookups (~10k MTG singles over per-set collections, 1.4k Gunpla, 600 anime statues). 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. 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 — model-kit tools/markers/decals, D&D unpainted minis, sale collections, the many small per-set MTG collections not listed (added on demand). No personal data is collected; seller = the store itself.",
  "enabled": true,
  "schemaVersion": "1.0",
  "acquisitionMethod": "Shopify storefront products.json",
  "historicalDepth": "none",
  "requires": [],
  "config": {
    "currency": "CAD",
    "market": "CA",
    "seller": "GameZilla",
    "location": "Moncton / Bathurst / Saint John, NB, Canada",
    "collections": [
      {
        "handle": "mtg-commander-masters",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-commander-legends-battle-for-baldurs-gat",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-avatar-the-last-airbender",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-foundations",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-final-fantasy-commander",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-commander-legends",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-modern-horizons-3-commander",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-edge-of-eternities",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-aetherdrift",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-final-fantasy",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-dominaria-united",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-double-masters-2022",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-bloomburrow",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "mtg-duskmourn-house-of-horror",
        "categorySlug": "magic_the_gathering",
        "franchise": "Magic: The Gathering"
      },
      {
        "handle": "gundam",
        "categorySlug": "gundam",
        "brand": "Bandai",
        "franchise": "Gundam"
      },
      {
        "handle": "gundam-high-grade",
        "categorySlug": "gundam",
        "brand": "Bandai",
        "franchise": "Gundam",
        "series": "High Grade"
      },
      {
        "handle": "gundam-master-grade",
        "categorySlug": "gundam",
        "brand": "Bandai",
        "franchise": "Gundam",
        "series": "Master Grade"
      },
      {
        "handle": "gundam-real-grade",
        "categorySlug": "gundam",
        "brand": "Bandai",
        "franchise": "Gundam",
        "series": "Real Grade"
      },
      {
        "handle": "gundam-perfect-grade",
        "categorySlug": "gundam",
        "brand": "Bandai",
        "franchise": "Gundam",
        "series": "Perfect Grade"
      },
      {
        "handle": "anime-statue",
        "categorySlug": "action_figures"
      },
      {
        "handle": "one-piece-figures",
        "categorySlug": "action_figures",
        "franchise": "One Piece"
      },
      {
        "handle": "dragon-ball-figures",
        "categorySlug": "action_figures",
        "franchise": "Dragon Ball"
      },
      {
        "handle": "naruto-figures",
        "categorySlug": "action_figures",
        "franchise": "Naruto"
      },
      {
        "handle": "demon-slayer-figures",
        "categorySlug": "action_figures",
        "franchise": "Demon Slayer"
      },
      {
        "handle": "disney-lorcana",
        "categorySlug": "disney_lorcana",
        "franchise": "Disney Lorcana"
      },
      {
        "handle": "gundam-tcg",
        "categorySlug": "other_tcg",
        "franchise": "Gundam Card Game"
      }
    ],
    "rules": [],
    "defaultCategory": null,
    "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|\\bglue\\b|\\btools?\\b|\\bnippers?\\b|\\bmarkers?\\b|\\bdecals?\\b|action base|display base",
    "keepOutOfStock": true,
    "fetchBarcodes": false,
    "wholeShop": false,
    "pageSize": 250,
    "titlePattern": "^(?<name>.+?) \\[(?<set>[^\\]]+)\\]$"
  }
}
