SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
831.9 KB · 21,042 lines json
Raw Blame History
1{2  "version": "1.1",3  "connectors": [4    {5      "id": "1stdibs",6      "displayName": "1stDibs (vintage design, antiques, jewelry, watches, fashion & art listings)",7      "sourceId": "1stdibs",8      "sourceName": "1stDibs",9      "sourceType": "marketplace",10      "sourceUrl": "https://www.1stdibs.com",11      "module": "api/1stdibs",12      "enginePriority": [13        "api"14      ],15      "categories": [16        "design_furniture",17        "antiques",18        "porcelain",19        "glass_crystal",20        "silver",21        "clocks",22        "jewelry",23        "gemstones",24        "rolex",25        "patek_philippe",26        "audemars_piguet",27        "omega",28        "other_watches",29        "luxury_handbags",30        "art",31        "contemporary_art",32        "photography"33      ],34      "regions": [35        "US",36        "GB",37        "FR",38        "IT",39        "DE"40      ],41      "languages": [42        "en"43      ],44      "currency": [45        "USD"46      ],47      "supportsListings": true,48      "supportsSold": false,49      "supportsAuctions": false,50      "supportsImages": true,51      "supportsCatalog": false,52      "supportsPopulation": false,53      "supportsLookup": false,54      "refreshFrequencyMinutes": 1440,55      "priority": "medium",56      "trustScore": 0.8,57      "attributionRequired": true,58      "termsUrl": "https://www.1stdibs.com/about/user-agreement/",59      "accessNotes": "1stDibs browse pages (/furniture/seating/, /furniture/lighting/, /furniture/decorative-objects/, /jewelry/, /jewelry/watches/wrist-watches/, /fashion/handbags-purses-bags/, /art/prints-works-on-paper/ … with ?page=N, 60 items per page, at most 50 pages per browse path as capped by the site) are served to the honest RareIndexBot UA as ~3 MB server-rendered documents whose <script id=\"serverVars_data\"> JSON contains the Relay store used to hydrate the grid. We read the `Item` records from that store: title, serviceId (f_########), the retail display price converted by 1stDibs into USD/EUR/GBP/CAD/AUD/CHF/MXN/NOK/SEK/DKK (USD kept as the listing price, the others in metadata), seller company + dealer id, designer/creator names, dealer city/country, period-style attribute line, materials, measurements, photos, sold/on-hold flags. We never call 1stDibs' GraphQL (/soa/graphql — reserved to the site, robots.txt allows only that exact path) nor the /search/ paths robots.txt disallows; product detail pages are not fetched. The page carries an F5/Shape client-detection script, but no challenge was served to plain HTTPS requests; if 1stDibs starts blocking, the connector fails loudly (schema_drift/page_fetch_failed) — no evasion engine is configured. User Agreement (checked 2026-09-08) has no clause on automated access to public pages. Dealer asking prices only → listings (never sales); 5 s between requests, 1 in flight, 3 browse paths × 1 page per daily run with seed rotation (≈180 listings/run, ~9 MB), backfill capped at the site's 50-page window. Category mapping: seed vertical + category code + attribute line/title → design_furniture (default), antiques (period evidence), porcelain/glass/silver/clocks (decorative objects), jewelry/gemstones, watch brand slugs, luxury_handbags, art/photography/contemporary_art; rugs & textiles skipped.",60      "enabled": true,61      "schemaVersion": "1.0",62      "config": {63        "pagesPerSeed": 1,64        "seedsPerRun": 3,65        "maxPagesPerSeed": 50,66        "seeds": [67          {68            "path": "/furniture/seating/",69            "vertical": "furniture"70          },71          {72            "path": "/furniture/tables/",73            "vertical": "furniture"74          },75          {76            "path": "/furniture/storage-case-pieces/",77            "vertical": "furniture"78          },79          {80            "path": "/furniture/lighting/",81            "vertical": "lighting"82          },83          {84            "path": "/furniture/decorative-objects/",85            "vertical": "decor"86          },87          {88            "path": "/jewelry/",89            "vertical": "jewelry"90          },91          {92            "path": "/jewelry/watches/wrist-watches/",93            "vertical": "watches"94          },95          {96            "path": "/fashion/handbags-purses-bags/",97            "slug": "luxury_handbags",98            "vertical": "fashion"99          },100          {101            "path": "/art/prints-works-on-paper/",102            "vertical": "art"103          }104        ]105      },106      "capabilities": [107        "live_listings",108        "images"109      ],110      "refreshClass": "normal",111      "domain": "1stdibs.com",112      "country": "US",113      "requires": [],114      "acquisitionMethod": "public HTML — server-rendered Relay store (serverVars_data JSON) on browse pages",115      "historicalDepth": "none"116    },117    {118      "id": "401-games",119      "displayName": "401 Games (Canadian TCG & sports-card & board-game store, CAD)",120      "sourceId": "401-games",121      "sourceName": "401 Games",122      "sourceType": "dealer",123      "sourceUrl": "https://store.401games.ca",124      "module": "api/401-games",125      "enginePriority": [126        "api"127      ],128      "categories": [129        "magic_the_gathering",130        "pokemon",131        "yugioh",132        "one_piece_card_game",133        "disney_lorcana",134        "weiss_schwarz",135        "digimon_tcg",136        "dragon_ball_tcg",137        "star_wars_tcg",138        "other_tcg",139        "sports_cards",140        "non_sport_cards",141        "board_games",142        "hockey_cards",143        "baseball_cards",144        "basketball_cards",145        "football_cards",146        "soccer_cards",147        "f1_cards"148      ],149      "regions": [150        "CA"151      ],152      "languages": [153        "en"154      ],155      "currency": [156        "CAD"157      ],158      "supportsListings": true,159      "supportsSold": false,160      "supportsAuctions": false,161      "supportsImages": true,162      "supportsCatalog": false,163      "supportsPopulation": false,164      "supportsLookup": true,165      "refreshFrequencyMinutes": 720,166      "priority": "medium",167      "trustScore": 0.75,168      "attributionRequired": true,169      "termsUrl": "https://store.401games.ca/policies/terms-of-service",170      "accessNotes": "401 Games (store.401games.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 15 configured collections (all-magic-the-gathering, all-pokemon, all-yugioh, all-one-piece-card-game, all-disney-lorcana, all-weiss-schwarz, all-digimon-card-game, all-dragon-ball-super … (+7 more, see config.collections)) and /products/<handle>.json for URL lookups (~430k products; MTG 158k, Yu-Gi-Oh! 60k, Pokémon 54k). 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 — supplies/dice/modelling collections, event tickets, staff-loyalty and \"acorn\" migration collections, the 0.00-priced Easy-Buy buylist placeholders (dropped: no price). No personal data is collected; seller = the store itself.",171      "enabled": true,172      "schemaVersion": "1.0",173      "config": {174        "currency": "CAD",175        "market": "CA",176        "seller": "401 Games",177        "location": "Toronto, ON, Canada",178        "collections": [179          {180            "handle": "all-magic-the-gathering",181            "categorySlug": "magic_the_gathering",182            "franchise": "Magic: The Gathering"183          },184          {185            "handle": "all-pokemon",186            "categorySlug": "pokemon",187            "franchise": "Pokémon"188          },189          {190            "handle": "all-yugioh",191            "categorySlug": "yugioh",192            "franchise": "Yu-Gi-Oh!"193          },194          {195            "handle": "all-one-piece-card-game",196            "categorySlug": "one_piece_card_game",197            "franchise": "One Piece"198          },199          {200            "handle": "all-disney-lorcana",201            "categorySlug": "disney_lorcana",202            "franchise": "Disney Lorcana"203          },204          {205            "handle": "all-weiss-schwarz",206            "categorySlug": "weiss_schwarz",207            "franchise": "Weiß Schwarz"208          },209          {210            "handle": "all-digimon-card-game",211            "categorySlug": "digimon_tcg",212            "franchise": "Digimon"213          },214          {215            "handle": "all-dragon-ball-super",216            "categorySlug": "dragon_ball_tcg",217            "franchise": "Dragon Ball Super"218          },219          {220            "handle": "all-star-wars-unlimited",221            "categorySlug": "star_wars_tcg",222            "franchise": "Star Wars Unlimited"223          },224          {225            "handle": "all-cardfight-vanguard",226            "categorySlug": "other_tcg",227            "franchise": "Cardfight!! Vanguard"228          },229          {230            "handle": "all-riftbound-league-of-legends-tcg",231            "categorySlug": "other_tcg",232            "franchise": "Riftbound"233          },234          {235            "handle": "all-gundam-card-game",236            "categorySlug": "other_tcg",237            "franchise": "Gundam Card Game"238          },239          {240            "handle": "all-sports-cards",241            "categorySlug": "sports_cards"242          },243          {244            "handle": "all-non-sports-trading-cards",245            "categorySlug": "non_sport_cards"246          },247          {248            "handle": "all-board-games",249            "categorySlug": "board_games"250          }251        ],252        "rules": [253          {254            "match": "^(?=[\\s\\S]*\\bhockey\\b)[\\s\\S]*\\| all-sports-cards$",255            "categorySlug": "hockey_cards"256          },257          {258            "match": "^(?=[\\s\\S]*\\bbaseball\\b)[\\s\\S]*\\| all-sports-cards$",259            "categorySlug": "baseball_cards"260          },261          {262            "match": "^(?=[\\s\\S]*\\bbasketball\\b)[\\s\\S]*\\| all-sports-cards$",263            "categorySlug": "basketball_cards"264          },265          {266            "match": "^(?=[\\s\\S]*\\bfootball\\b)[\\s\\S]*\\| all-sports-cards$",267            "categorySlug": "football_cards"268          },269          {270            "match": "^(?=[\\s\\S]*\\b(soccer|premier league|uefa|fifa)\\b)[\\s\\S]*\\| all-sports-cards$",271            "categorySlug": "soccer_cards"272          },273          {274            "match": "^(?=[\\s\\S]*\\b(formula 1|formula one|\\bf1\\b)\\b)[\\s\\S]*\\| all-sports-cards$",275            "categorySlug": "f1_cards"276          }277        ],278        "defaultCategory": null,279        "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",280        "keepOutOfStock": true,281        "fetchBarcodes": false,282        "wholeShop": false,283        "pageSize": 250284      },285      "capabilities": [286        "live_listings",287        "images",288        "url_lookup"289      ],290      "refreshClass": "normal",291      "domain": "store.401games.ca",292      "country": "CA",293      "requires": [],294      "acquisitionMethod": "Shopify storefront products.json",295      "historicalDepth": "none"296    },297    {298      "id": "ader",299      "displayName": "Ader (Paris, Hôtel Drouot) — sale results",300      "sourceId": "ader",301      "sourceName": "Ader",302      "sourceType": "auction_house",303      "sourceUrl": "https://www.ader-paris.fr",304      "module": "api/ader",305      "enginePriority": [306        "api"307      ],308      "categories": [309        "art",310        "contemporary_art",311        "photography",312        "design_furniture",313        "antiques",314        "books",315        "maps",316        "historical_documents",317        "comics",318        "jewelry",319        "other_watches",320        "wine",321        "coins",322        "stamps",323        "militaria",324        "medals",325        "porcelain",326        "silver",327        "glass_crystal",328        "vintage_toys",329        "movie_posters",330        "cameras"331      ],332      "regions": [333        "FR"334      ],335      "languages": [336        "fr"337      ],338      "currency": [339        "EUR"340      ],341      "supportsListings": false,342      "supportsSold": true,343      "supportsAuctions": true,344      "supportsImages": true,345      "supportsCatalog": false,346      "supportsPopulation": false,347      "supportsLookup": false,348      "refreshFrequencyMinutes": 1440,349      "priority": "medium",350      "trustScore": 0.9,351      "attributionRequired": true,352      "termsUrl": "https://www.ader-paris.fr/conditions-generales-vente",353      "accessNotes": "Ader (Paris, sales at Hôtel Drouot) runs on the Drouot 'site générique' platform. Public pages read: /ventes-passees?year=YYYY (past sales of a year: title, 'jeudi 09 juillet 2026 à 14h00', venue, /catalogue/<id> link — sales without an online catalogue are skipped) and /catalogue/<id>?offset=N&max=50 (lot cards: number, title, description, cdn.drouot.com image, 'Estimation : 150 - 200 EUR', 'Résultat : 1 081 EUR'; unsold lots have no result). Each page states 'Résultats avec frais' — we read that note per page/lot and set buyer_premium_included accordingly (true for Ader; never assumed, stays null when the note is missing). robots.txt disallows only /recherche/*; CGV contain no clause on automated access (they define 'prix marteau' vs fees). Years 2004→today available for backfill (one index request per year). 2.5 s politeness; salesPerRun caps incremental runs. No login, no bidder data.",354      "enabled": true,355      "schemaVersion": "1.0",356      "config": {357        "years": [358          2026359        ],360        "backfillFromYear": 2004,361        "salesPerRun": 2362      },363      "capabilities": [364        "sold_listings",365        "auction_results",366        "images",367        "historical_backfill"368      ],369      "refreshClass": "normal",370      "domain": "ader-paris.fr",371      "country": "FR",372      "requires": [],373      "acquisitionMethod": "server-rendered HTML (Drouot site-générique platform)",374      "historicalDepth": "decades"375    },376    {377      "id": "aguttes",378      "displayName": "Aguttes (sale results)",379      "sourceId": "aguttes",380      "sourceName": "Aguttes",381      "sourceType": "auction_house",382      "sourceUrl": "https://www.aguttes.com",383      "module": "api/aguttes",384      "enginePriority": [385        "api"386      ],387      "categories": [388        "art",389        "contemporary_art",390        "photography",391        "design_furniture",392        "antiques",393        "jewelry",394        "other_watches",395        "rolex",396        "omega",397        "patek_philippe",398        "luxury_handbags",399        "wine",400        "whisky",401        "comics",402        "books",403        "maps",404        "automobiles",405        "motorcycles",406        "automotive_memorabilia",407        "coins",408        "stamps",409        "porcelain",410        "silver",411        "glass_crystal",412        "militaria",413        "medals",414        "sports_memorabilia"415      ],416      "regions": [417        "FR"418      ],419      "languages": [420        "fr",421        "en"422      ],423      "currency": [424        "EUR"425      ],426      "supportsListings": false,427      "supportsSold": true,428      "supportsAuctions": true,429      "supportsImages": true,430      "supportsCatalog": false,431      "supportsPopulation": false,432      "supportsLookup": false,433      "refreshFrequencyMinutes": 1440,434      "priority": "medium",435      "trustScore": 0.9,436      "attributionRequired": true,437      "termsUrl": "https://www.aguttes.com/legals/conditions-generales-d-utilisation",438      "accessNotes": "Aguttes (Neuilly-sur-Seine, Lyon, Bruxelles) runs on the Artisio platform behind a Next.js site. We read the public sitemap https://www.aguttes.com/sitemap-fr-ventes-passees.xml (≈1 170 past catalogues back to the 2010s) and each public catalogue page /catalogue/<id>?page=N whose server-rendered __NEXT_DATA__ embeds the lot list (lot_no, status sold/unsold, hammer_price, low/high estimate, bilingual title, description, images) and the auction object (sale_no, start_date, currency EUR, premium tiers, branch). hammer_price is explicitly the HAMMER (buyer_premium_included=false; premium tiers kept in metadata.premiums). robots.txt: Allow / for *, Content-Signal search=yes, ai-train=no, use=reference (we use it as reference data, no model training); CGU contain no clause on automated access. 24 lots per page, 2 s politeness, salesPerRun caps each incremental run; backfill walks every catalogue oldest→newest with a resumable (index, page) cursor. No login, no bidder data (paddle numbers discarded).",439      "enabled": true,440      "schemaVersion": "1.0",441      "config": {442        "pastSalesSitemap": "https://www.aguttes.com/sitemap-fr-ventes-passees.xml",443        "salesPerRun": 3444      },445      "capabilities": [446        "sold_listings",447        "auction_results",448        "images",449        "historical_backfill"450      ],451      "refreshClass": "normal",452      "domain": "aguttes.com",453      "country": "FR",454      "requires": [],455      "acquisitionMethod": "embedded JSON (__NEXT_DATA__, Artisio platform)",456      "historicalDepth": "years"457    },458    {459      "id": "alt-xyz",460      "displayName": "Alt (graded card values & transactions)",461      "sourceId": "alt",462      "sourceName": "Alt",463      "sourceType": "analytics_provider",464      "sourceUrl": "https://alt.xyz",465      "module": "firecrawl/alt-xyz",466      "enginePriority": [467        "firecrawl"468      ],469      "categories": [470        "sports_cards",471        "baseball_cards",472        "basketball_cards",473        "football_cards",474        "hockey_cards",475        "soccer_cards",476        "other_sports_cards",477        "pokemon",478        "magic_the_gathering",479        "yugioh",480        "non_sport_cards"481      ],482      "regions": [483        "US"484      ],485      "languages": [486        "en"487      ],488      "currency": [489        "USD"490      ],491      "supportsListings": true,492      "supportsSold": true,493      "supportsAuctions": false,494      "supportsImages": true,495      "supportsCatalog": false,496      "supportsPopulation": false,497      "supportsLookup": true,498      "refreshFrequencyMinutes": 1440,499      "priority": "low",500      "trustScore": 0.7,501      "attributionRequired": true,502      "termsUrl": "https://alt.xyz/terms",503      "accessNotes": "Alt's public item pages (robots.txt allows everything; discovery through the public sitemaps with lastmod) show the card, grade, PSA/BGS population, Alt's list price, the 'Alt Value' model estimate with its range, and a 'Recent transactions' list of observed sales (mostly eBay auctions/best offers) with date and price. Pages are client-rendered → Firecrawl, 1 credit per item, capped by `maxItemsPerRun`. Alt Value is stored as a guide_value observation (confidence 0.6); recent transactions become sales attributed to Alt with the original listing URL in metadata (confidence 0.65 — second-hand aggregation); the Alt list price is a fixed-price listing.",504      "enabled": true,505      "schemaVersion": "1.0",506      "config": {507        "sitemaps": [508          "fixed-price",509          "auctions"510        ],511        "maxItemsPerRun": 100512      },513      "capabilities": [514        "live_listings",515        "sold_listings",516        "images",517        "url_lookup"518      ],519      "refreshClass": "normal",520      "domain": "alt.xyz",521      "country": "US",522      "requires": [],523      "historicalDepth": "none"524    },525    {526      "id": "amiami",527      "displayName": "AmiAmi (figures & hobby — new + pre-owned, JPY)",528      "sourceId": "amiami",529      "sourceName": "AmiAmi",530      "sourceType": "marketplace",531      "sourceUrl": "https://www.amiami.com",532      "module": "scrapfly/amiami",533      "enginePriority": [534        "scrapfly"535      ],536      "categories": [537        "action_figures",538        "gundam",539        "plush",540        "designer_toys"541      ],542      "regions": [543        "JP"544      ],545      "languages": [546        "en",547        "ja"548      ],549      "currency": [550        "JPY"551      ],552      "supportsListings": true,553      "supportsSold": false,554      "supportsAuctions": false,555      "supportsImages": true,556      "supportsCatalog": true,557      "supportsPopulation": false,558      "supportsLookup": true,559      "refreshFrequencyMinutes": 720,560      "priority": "medium",561      "trustScore": 0.8,562      "attributionRequired": true,563      "termsUrl": "https://www.amiami.com/eng/guide/",564      "accessNotes": "Reads the public JSON API that AmiAmi's own storefront calls (api.amiami.com/api/v1.0/items with the storefront's X-User-Key header, no account or login). Plain requests from data-centre IPs get a Cloudflare 'Attention Required' page, so the request is routed through Scrapfly (asp, no JS, country jp; 1 credit per 50-item page). Data: item code, JAN, maker, release date, list price (tax-in), current sell price (pre-owned range min/max or new price), stock and pre-owned flags — all JPY. Emits catalog items + fixed-price listings; pre-owned condition comes from the storefront's ITEM/BOX grades when present in the title. No purchase, cart or account endpoints are touched.",565      "enabled": true,566      "schemaVersion": "1.0",567      "config": {568        "seeds": [569          {570            "params": "s_cate_tag=14&s_st_condition_flg=1",571            "categorySlug": "action_figures",572            "label": "Figures — pre-owned"573          },574          {575            "params": "s_cate_tag=14&s_st_condition_flg=0",576            "categorySlug": "action_figures",577            "label": "Figures — new"578          },579          {580            "params": "s_keywords=Gundam&s_st_condition_flg=1",581            "categorySlug": "gundam",582            "label": "Gundam — pre-owned"583          },584          {585            "params": "s_keywords=Nendoroid",586            "categorySlug": "action_figures",587            "label": "Nendoroid"588          }589        ],590        "pagesPerSeed": 2,591        "pageSize": 50592      },593      "capabilities": [594        "live_listings",595        "images",596        "catalog",597        "url_lookup"598      ],599      "refreshClass": "normal",600      "domain": "amiami.com",601      "country": "JP",602      "requires": [],603      "historicalDepth": "none"604    },605    {606      "id": "analog-shift",607      "displayName": "Analog:Shift (vintage watch dealer, USD)",608      "sourceId": "analog-shift",609      "sourceName": "Analog:Shift",610      "sourceType": "dealer",611      "sourceUrl": "https://analogshift.com",612      "module": "api/analog-shift",613      "enginePriority": [614        "api"615      ],616      "categories": [617        "rolex",618        "patek_philippe",619        "audemars_piguet",620        "omega",621        "other_watches"622      ],623      "regions": [624        "US"625      ],626      "languages": [627        "en"628      ],629      "currency": [630        "USD"631      ],632      "supportsListings": true,633      "supportsSold": false,634      "supportsAuctions": false,635      "supportsImages": true,636      "supportsCatalog": false,637      "supportsPopulation": false,638      "supportsLookup": true,639      "refreshFrequencyMinutes": 1440,640      "priority": "low",641      "trustScore": 0.85,642      "attributionRequired": true,643      "termsUrl": "https://analogshift.com/policies/terms-of-service",644      "accessNotes": "Public Shopify storefront feed (analogshift.com/products.json, 250 products/page) over plain HTTPS with the RareIndex user agent; robots.txt allows / for generic agents. Each product is one vintage/pre-owned watch: vendor = brand, description carries Reference / Year / Case Size / Condition lines which are parsed into attributes; sold watches stay published with available=false and are recorded as listings with availability=sold (asking price, not a transaction). Identifiers: analogshift_sku + reference (shared with Chrono24/Subdial for entity resolution).",645      "enabled": true,646      "schemaVersion": "1.0",647      "config": {648        "seeds": [649          "all"650        ],651        "pagesPerSeed": 3652      },653      "capabilities": [654        "live_listings",655        "images",656        "url_lookup"657      ],658      "refreshClass": "normal",659      "domain": "analogshift.com",660      "country": "US",661      "requires": [],662      "historicalDepth": "none"663    },664    {665      "id": "antiquorum",666      "displayName": "Antiquorum (watch auction results & upcoming lots)",667      "sourceId": "antiquorum",668      "sourceName": "Antiquorum",669      "sourceType": "auction_house",670      "sourceUrl": "https://catalog.antiquorum.swiss",671      "module": "api/antiquorum",672      "enginePriority": [673        "api",674        "firecrawl"675      ],676      "categories": [677        "watches",678        "rolex",679        "patek_philippe",680        "audemars_piguet",681        "omega",682        "other_watches",683        "jewelry"684      ],685      "regions": [686        "CH",687        "HK",688        "MC"689      ],690      "languages": [691        "en"692      ],693      "currency": [694        "CHF",695        "HKD",696        "EUR",697        "USD"698      ],699      "supportsListings": false,700      "supportsSold": true,701      "supportsAuctions": true,702      "supportsImages": true,703      "supportsCatalog": false,704      "supportsPopulation": false,705      "supportsLookup": true,706      "refreshFrequencyMinutes": 1440,707      "priority": "high",708      "trustScore": 0.9,709      "attributionRequired": true,710      "termsUrl": "https://www.antiquorum.swiss/conditions-of-sale/",711      "accessNotes": "Public auction catalogue (catalog.antiquorum.swiss/en → /en/auctions/<slug>/lots?page=N) fetched over plain HTTPS with the RareIndex user agent; robots.txt only disallows /wp-admin/. Each lot carries schema.org RDFa (name, sku, brand, price, currency, image) and a spec table (Brand, Model, Reference, Year, Material). Sold lots show 'Sold: <CCY> <amount>' which Antiquorum's own price lists confirm is hammer + buyer's premium (e.g. lot 387-1: hammer 230,000 → sold 287,500 HKD), so buyerPremiumIncluded=true. Sale date = the auction date on the catalogue home. Unsold/upcoming lots become auction lots with estimates. 2 s between pages.",712      "enabled": true,713      "schemaVersion": "1.0",714      "config": {715        "auctionsPerRun": 3,716        "maxPagesPerAuction": 25717      },718      "capabilities": [719        "sold_listings",720        "auction_results",721        "images",722        "url_lookup"723      ],724      "refreshClass": "normal",725      "domain": "catalog.antiquorum.swiss",726      "country": "CH",727      "requires": [],728      "historicalDepth": "none"729    },730    {731      "id": "apmex",732      "displayName": "APMEX (coins & bullion dealer, USD asks)",733      "sourceId": "apmex",734      "sourceName": "APMEX",735      "sourceType": "dealer",736      "sourceUrl": "https://www.apmex.com",737      "module": "firecrawl/apmex",738      "enginePriority": [739        "firecrawl",740        "scrapfly"741      ],742      "categories": [743        "coins"744      ],745      "regions": [746        "US"747      ],748      "languages": [749        "en"750      ],751      "currency": [752        "USD"753      ],754      "supportsListings": true,755      "supportsSold": false,756      "supportsAuctions": false,757      "supportsImages": true,758      "supportsCatalog": true,759      "supportsPopulation": false,760      "supportsLookup": false,761      "refreshFrequencyMinutes": 1440,762      "priority": "low",763      "trustScore": 0.85,764      "attributionRequired": true,765      "termsUrl": "https://www.apmex.com/terms-and-conditions",766      "accessNotes": "Public category grids (apmex.com/category/<id>/<slug>) of one of the largest US coin dealers; robots.txt disallows /catalog/, /cart/, /account/, /spotprice/ etc., none of which are used. Plain HTTPS gets an Akamai 403 for non-browser clients, so pages are fetched with Firecrawl (1 credit per ~80-product page). Parsed per product card: APMEX product id, title, 'As Low As' price (USD, cash/wire tier), stock message, image. Year, mint mark, grade and grading service (PCGS/NGC/ANACS/CAC) are parsed from the title; graded coins become grader/grade variants, raw/BU coins stay raw. Emits catalog items + dealer fixed-price listings (asks, not transactions).",767      "enabled": true,768      "schemaVersion": "1.0",769      "config": {770        "seeds": [771          {772            "url": "https://www.apmex.com/category/11903/10-liberty-eagle-coins-1795-1907",773            "series": "$10 Liberty Gold Eagle",774            "country": "US"775          },776          {777            "url": "https://www.apmex.com/category/11904/20-liberty-double-eagle-coins-1849-1907",778            "series": "$20 Liberty Double Eagle",779            "country": "US"780          },781          {782            "url": "https://www.apmex.com/category/11905/20-saint-gaudens-double-eagle-coins-1907-1933",783            "series": "$20 Saint-Gaudens Double Eagle",784            "country": "US"785          },786          {787            "url": "https://www.apmex.com/category/25310/morgan-dollars-1878-1921",788            "series": "Morgan Dollar",789            "country": "US"790          },791          {792            "url": "https://www.apmex.com/category/25320/peace-dollars-1921-1935",793            "series": "Peace Dollar",794            "country": "US"795          },796          {797            "url": "https://www.apmex.com/category/11440/american-gold-eagles",798            "series": "American Gold Eagle",799            "country": "US"800          }801        ],802        "pagesPerSeed": 1803      },804      "capabilities": [805        "live_listings",806        "images",807        "catalog"808      ],809      "refreshClass": "normal",810      "domain": "apmex.com",811      "country": "US",812      "requires": [],813      "historicalDepth": "none"814    },815    {816      "id": "artcurial",817      "displayName": "Artcurial (sale results)",818      "sourceId": "artcurial",819      "sourceName": "Artcurial",820      "sourceType": "auction_house",821      "sourceUrl": "https://www.artcurial.com",822      "module": "firecrawl/artcurial",823      "enginePriority": [824        "firecrawl",825        "scrapfly"826      ],827      "categories": [828        "art",829        "contemporary_art",830        "photography",831        "design_furniture",832        "jewelry",833        "other_watches",834        "luxury_handbags",835        "wine",836        "comics",837        "books",838        "automobiles",839        "automotive_memorabilia",840        "antiques"841      ],842      "regions": [843        "FR",844        "MC"845      ],846      "languages": [847        "en",848        "fr"849      ],850      "currency": [851        "EUR"852      ],853      "supportsListings": false,854      "supportsSold": true,855      "supportsAuctions": true,856      "supportsImages": true,857      "supportsCatalog": false,858      "supportsPopulation": false,859      "supportsLookup": false,860      "refreshFrequencyMinutes": 1440,861      "priority": "medium",862      "trustScore": 0.9,863      "attributionRequired": true,864      "termsUrl": "https://www.artcurial.com/en/conditions-of-sale",865      "accessNotes": "Paris/Monaco auction house (Nuxt app). The public results index (/en/results-auctions-sales) and each sale page (/en/sales/<n>) are rendered through Firecrawl (JS wait ~5 s, 1 credit each); the sale page lists every lot with lot number, title, sub-title, estimate and 'Sold €X' plus the public lot URL. robots.txt disallows press, tracking and /motorcars paths only (car sales are listed under /en/sales/<n>, which is allowed). Artcurial does not state on the results list whether the published price includes buyer's premium, so buyer_premium_included is left null (unknown, never assumed). Sale date = the sale date on the results index. 3 s politeness delay; salesPerRun caps each run.",866      "enabled": true,867      "schemaVersion": "1.0",868      "config": {869        "resultsUrl": "https://www.artcurial.com/en/results-auctions-sales",870        "salesPerRun": 3871      },872      "capabilities": [873        "sold_listings",874        "auction_results",875        "images"876      ],877      "refreshClass": "normal",878      "domain": "artcurial.com",879      "country": "FR",880      "requires": [],881      "historicalDepth": "none"882    },883    {884      "id": "aste-bolaffi",885      "displayName": "Aste Bolaffi (Turin) — risultati",886      "sourceId": "aste-bolaffi",887      "sourceName": "Aste Bolaffi",888      "sourceType": "auction_house",889      "sourceUrl": "https://www.astebolaffi.it",890      "module": "api/aste-bolaffi",891      "enginePriority": [892        "api"893      ],894      "categories": [895        "stamps",896        "coins",897        "banknotes",898        "medals",899        "other_watches",900        "rolex",901        "omega",902        "patek_philippe",903        "wine",904        "whisky",905        "automobiles",906        "motorcycles",907        "automotive_memorabilia",908        "books",909        "maps",910        "historical_documents",911        "autographs",912        "movie_posters",913        "comics",914        "vintage_toys",915        "sports_memorabilia",916        "jewelry",917        "art",918        "antiques"919      ],920      "regions": [921        "IT"922      ],923      "languages": [924        "it",925        "en"926      ],927      "currency": [928        "EUR"929      ],930      "supportsListings": false,931      "supportsSold": true,932      "supportsAuctions": true,933      "supportsImages": true,934      "supportsCatalog": false,935      "supportsPopulation": false,936      "supportsLookup": false,937      "refreshFrequencyMinutes": 1440,938      "priority": "medium",939      "trustScore": 0.88,940      "attributionRequired": true,941      "termsUrl": "https://www.astebolaffi.it/cms/termini-e-condizioni",942      "accessNotes": "Aste Bolaffi (Turin; Gruppo Bolaffi — stamps, coins, banknotes, watches, wine & spirits, classic cars, posters, comics, memorabilia). Public pages read: /it/results (113 past auctions: date DD.MM.YYYY, city, /it/auction/<id>) and /it/auction/<id>?page=N (10 lots per page: 'Lotto N', title, description, image, 'Base asta: € 5 | Aggiudicato a : € 5'; the sale date is in getLocationDate('YYYY-MM-DD …')). 'Aggiudicato a' (price knocked down) is not labelled hammer vs fee-inclusive on the public page → buyer_premium_included null. robots.txt: Allow all; termini e condizioni contain no clause on automated access. 3 s politeness (10 lots/page → many pages); salesPerRun caps incremental runs; resumable backfill over the results list. No login, no bidder data.",943      "enabled": true,944      "schemaVersion": "1.0",945      "config": {946        "resultsUrl": "https://www.astebolaffi.it/it/results",947        "salesPerRun": 1948      },949      "capabilities": [950        "sold_listings",951        "auction_results",952        "images",953        "historical_backfill"954      ],955      "refreshClass": "normal",956      "domain": "astebolaffi.it",957      "country": "IT",958      "requires": [],959      "acquisitionMethod": "server-rendered HTML (Laravel)",960      "historicalDepth": "years"961    },962    {963      "id": "aucfree",964      "displayName": "aucfree (Yahoo! Auctions Japan closed lots)",965      "sourceId": "aucfree",966      "sourceName": "aucfree — オークフリー",967      "sourceType": "analytics_provider",968      "sourceUrl": "https://aucfree.com",969      "module": "firecrawl/aucfree",970      "enginePriority": [971        "firecrawl",972        "scrapfly"973      ],974      "categories": [975        "pokemon",976        "yugioh",977        "one_piece_card_game",978        "gundam",979        "action_figures",980        "nintendo_games",981        "designer_toys"982      ],983      "regions": [984        "JP"985      ],986      "languages": [987        "ja"988      ],989      "currency": [990        "JPY"991      ],992      "supportsListings": false,993      "supportsSold": true,994      "supportsAuctions": true,995      "supportsImages": true,996      "supportsCatalog": false,997      "supportsPopulation": false,998      "supportsLookup": false,999      "refreshFrequencyMinutes": 720,1000      "priority": "medium",1001      "trustScore": 0.75,1002      "attributionRequired": true,1003      "termsUrl": "https://aucfree.com/about",1004      "accessNotes": "aucfree.com publishes closed Yahoo! Auctions Japan lots (end price, bid count, end date) free of charge; no robots.txt is served (404) so no path is disallowed. Plain HTTPS returns 403 to non-browser clients, so pages are fetched through Firecrawl (1 credit per search page of 50 lots ≈ 0.02 credit/sale) with Scrapfly as fallback. Search pages per keyword seed (`/search?o=t2&q=<kw>&p=N`, sorted by end date). Prices are JPY hammer prices without buyer premium; dates are the lot end dates (Japanese '2026年9月6日' format). Identification is title-only (Japanese titles) → confidence 0.7; PSA/BGS grades parsed from the title. Only market data is stored; item pages, seller and bidder data are not fetched.",1005      "enabled": true,1006      "schemaVersion": "1.0",1007      "config": {1008        "seeds": [1009          {1010            "q": "ポケモンカード PSA10",1011            "category": "pokemon",1012            "language": "Japanese"1013          },1014          {1015            "q": "ポケモンカード 旧裏 PSA",1016            "category": "pokemon",1017            "language": "Japanese"1018          },1019          {1020            "q": "遊戯王 PSA10",1021            "category": "yugioh",1022            "language": "Japanese"1023          },1024          {1025            "q": "ワンピースカード PSA10",1026            "category": "one_piece_card_game",1027            "language": "Japanese"1028          },1029          {1030            "q": "ガンプラ MG 未組立",1031            "category": "gundam",1032            "language": null1033          },1034          {1035            "q": "figma 新品",1036            "category": "action_figures",1037            "language": null1038          },1039          {1040            "q": "ファミコン 未開封",1041            "category": "nintendo_games",1042            "language": null1043          },1044          {1045            "q": "BE@RBRICK 1000%",1046            "category": "designer_toys",1047            "language": null1048          }1049        ],1050        "pagesPerSeed": 21051      },1052      "capabilities": [1053        "sold_listings",1054        "auction_results",1055        "images"1056      ],1057      "refreshClass": "normal",1058      "domain": "aucfree.com",1059      "country": "JP",1060      "requires": [],1061      "historicalDepth": "none"1062    },1063    {1064      "id": "auctionet",1065      "displayName": "Auctionet (Nordic & European online auctions — results)",1066      "sourceId": "auctionet",1067      "sourceName": "Auctionet",1068      "sourceType": "marketplace",1069      "sourceUrl": "https://auctionet.com",1070      "module": "api/auctionet",1071      "enginePriority": [1072        "api"1073      ],1074      "categories": [1075        "art",1076        "contemporary_art",1077        "photography",1078        "antiques",1079        "design_furniture",1080        "porcelain",1081        "glass_crystal",1082        "silver",1083        "clocks",1084        "watches",1085        "rolex",1086        "omega",1087        "patek_philippe",1088        "audemars_piguet",1089        "other_watches",1090        "jewelry",1091        "gemstones",1092        "coins",1093        "banknotes",1094        "medals",1095        "stamps",1096        "books",1097        "maps",1098        "historical_documents",1099        "autographs",1100        "cameras",1101        "vintage_toys",1102        "action_figures",1103        "dolls",1104        "model_cars",1105        "model_trains",1106        "comics",1107        "trading_cards",1108        "music",1109        "music_memorabilia",1110        "movie_memorabilia",1111        "musical_instruments",1112        "pens",1113        "sports_memorabilia",1114        "advertising",1115        "scientific_instruments",1116        "automobiles",1117        "motorcycles",1118        "automotive_memorabilia",1119        "fashion_streetwear",1120        "luxury_handbags",1121        "wine",1122        "whisky",1123        "militaria"1124      ],1125      "regions": [1126        "SE",1127        "DE",1128        "DK",1129        "FI",1130        "ES",1131        "GB"1132      ],1133      "languages": [1134        "sv",1135        "de",1136        "da",1137        "fi",1138        "es",1139        "en"1140      ],1141      "currency": [1142        "SEK",1143        "EUR",1144        "DKK",1145        "GBP"1146      ],1147      "supportsListings": false,1148      "supportsSold": true,1149      "supportsAuctions": true,1150      "supportsImages": true,1151      "supportsCatalog": false,1152      "supportsPopulation": false,1153      "supportsLookup": false,1154      "refreshFrequencyMinutes": 360,1155      "priority": "high",1156      "trustScore": 0.85,1157      "attributionRequired": true,1158      "termsUrl": "https://auctionet.com/en/terms_of_use",1159      "accessNotes": "Auctionet is the Nordic/European online auction platform used by ~100 houses (Stockholms Auktionsverk, Crafoord, Uppsala Auktionskammare, Bruun Rasmussen online, Stockholms Auktionsverk Köln, Helsingborgs Auktionskammare…). We read ONLY the public, unauthenticated JSON endpoint https://auctionet.com/api/v2/items.json (the same endpoint the site's own search uses; verified HTTP 200 with the RareIndexBot UA, no key, no cookies) plus /api/v2/categories.json once per run. Parameters used: is=ended (closed lots), per_page (≤ 500; we use 100), page (the API caps every query at 10 000 items, page > cap returns an empty list), category_id and country_code for backfill slices. robots.txt disallows only /admin/ and /*/my paths; /api/ is not disallowed; terms_of_use contain no clause on automated access. Each item carries state (sold/unsold/published), currency (SEK/EUR/DKK/GBP — native, never converted), estimate, ends_at (unix, = sale date), house, location, catalog_number, bids[] whose top amount is the winning bid. Auctionet publishes the WINNING BID = hammer price; each house adds its own buyer's fee on top, so buyer_premium_included=false and metadata.price_basis='winning_bid_excl_buyer_fee'. We store no bidder data (bidder numbers are anonymous and discarded), no user data. Items in licence-weapon, firearm, vehicle-part, boat, moped, bicycle, garden, tool and consumer-electronics categories are skipped (out of taxonomy / regulated). Politeness 1.5 s between requests; incremental runs page through the most recently ended lots until the previous checkpoint (ends_at) is reached; backfill iterates category × country slices (≤ 10 000 items each) with a resumable cursor.",1160      "enabled": true,1161      "schemaVersion": "1.0",1162      "config": {1163        "apiBase": "https://auctionet.com/api/v2",1164        "perPage": 100,1165        "incrementalMaxPages": 60,1166        "apiItemCap": 10000,1167        "countryCodes": [1168          "SE",1169          "DE",1170          "DK",1171          "FI",1172          "ES",1173          "GB"1174        ],1175        "backfillCategoryIds": []1176      },1177      "capabilities": [1178        "sold_listings",1179        "auction_results",1180        "images",1181        "historical_backfill"1182      ],1183      "refreshClass": "normal",1184      "domain": "auctionet.com",1185      "country": "SE",1186      "requires": [],1187      "acquisitionMethod": "public JSON API (undocumented, unauthenticated)",1188      "historicalDepth": "years"1189    },1190    {1191      "id": "bbts",1192      "displayName": "BigBadToyStore (retail listings)",1193      "sourceId": "bbts",1194      "sourceName": "BigBadToyStore",1195      "sourceType": "dealer",1196      "sourceUrl": "https://www.bigbadtoystore.com",1197      "module": "firecrawl/bbts",1198      "enginePriority": [1199        "firecrawl"1200      ],1201      "categories": [1202        "action_figures",1203        "funko",1204        "gundam",1205        "designer_toys",1206        "plush",1207        "model_cars",1208        "lego_sets"1209      ],1210      "regions": [1211        "US"1212      ],1213      "languages": [1214        "en"1215      ],1216      "currency": [1217        "USD"1218      ],1219      "supportsListings": true,1220      "supportsSold": false,1221      "supportsAuctions": false,1222      "supportsImages": true,1223      "supportsCatalog": true,1224      "supportsPopulation": false,1225      "supportsLookup": false,1226      "refreshFrequencyMinutes": 1440,1227      "priority": "low",1228      "trustScore": 0.7,1229      "attributionRequired": true,1230      "termsUrl": "https://www.bigbadtoystore.com/Help/Terms",1231      "accessNotes": "Search pages (/Search?SearchText=…&PageSize=50) rendered through Firecrawl at 1 credit per page of 50 products; plain HTTP receives the store's bot challenge page, which is not bypassed — Firecrawl renders the public page like a browser and robots.txt is not served to non-browser agents (403), so runs stay tiny (4 queries/run, 2 s politeness). Each card gives title, 'By: brand', stock status (PRE-ORDER / IN STOCK / SOLD OUT / WAITLIST) and price. Emits a catalog item (retail price as MSRP when in stock/pre-order) and a retailer listing. Retail asks are never treated as market value.",1232      "enabled": true,1233      "schemaVersion": "1.0",1234      "config": {1235        "queriesPerRun": 4,1236        "pagesPerQuery": 1,1237        "queries": [1238          "hot toys",1239          "s.h. figuarts",1240          "mafex",1241          "funko pop exclusive",1242          "gunpla master grade",1243          "bearbrick",1244          "hasbro black series",1245          "neca",1246          "mezco one:12",1247          "transformers masterpiece",1248          "mcfarlane",1249          "pop mart"1250        ]1251      },1252      "capabilities": [1253        "live_listings",1254        "images",1255        "catalog"1256      ],1257      "refreshClass": "normal",1258      "domain": "bigbadtoystore.com",1259      "country": "US",1260      "requires": [],1261      "historicalDepth": "none"1262    },1263    {1264      "id": "bernaerts",1265      "displayName": "Bernaerts Auctioneers (Antwerp) — results",1266      "sourceId": "bernaerts",1267      "sourceName": "Bernaerts",1268      "sourceType": "auction_house",1269      "sourceUrl": "https://live.bernaerts.eu",1270      "module": "api/bernaerts",1271      "enginePriority": [1272        "api"1273      ],1274      "categories": [1275        "art",1276        "contemporary_art",1277        "photography",1278        "design_furniture",1279        "antiques",1280        "porcelain",1281        "silver",1282        "glass_crystal",1283        "jewelry",1284        "other_watches",1285        "books",1286        "comics",1287        "wine",1288        "vintage_toys"1289      ],1290      "regions": [1291        "BE"1292      ],1293      "languages": [1294        "nl",1295        "fr",1296        "en"1297      ],1298      "currency": [1299        "EUR"1300      ],1301      "supportsListings": false,1302      "supportsSold": true,1303      "supportsAuctions": true,1304      "supportsImages": true,1305      "supportsCatalog": false,1306      "supportsPopulation": false,1307      "supportsLookup": false,1308      "refreshFrequencyMinutes": 1440,1309      "priority": "low",1310      "trustScore": 0.85,1311      "attributionRequired": true,1312      "termsUrl": "https://www.bernaerts.eu/nl/algemene-voorwaarden",1313      "accessNotes": "Bernaerts (Antwerp) publishes its catalogues and results on live.bernaerts.eu (AuctionMobility). We read two public page types only: /auctions/past (finished auctions, JSON embedded in the page's viewVars: title, dates, lot_count, currency, detail URL) and /auctions/<row_id>/<slug>?page=N (36 lots per page embedded as JSON: lot_number, title, sold_price, estimate_low/high, status sold/unsold, cover image, lot URL, schema.org Product). The platform's direct API (production4-server.auctionmobility.com, requires an authorization token) is deliberately NOT called. sold_price is the HAMMER price (the auction JSON totals total_hammer_price separately and the sale description states a 30 % + €2 buyer's premium) → buyer_premium_included=false, EUR. robots.txt: Allow / for *; algemene voorwaarden contain no clause on automated access. Bidder registrations/paddles present in the JSON are discarded. 2 s politeness; salesPerRun caps incremental runs; backfill walks the past-auction list with a resumable cursor.",1314      "enabled": true,1315      "schemaVersion": "1.0",1316      "config": {1317        "pastUrl": "https://live.bernaerts.eu/auctions/past",1318        "salesPerRun": 21319      },1320      "capabilities": [1321        "sold_listings",1322        "auction_results",1323        "images",1324        "historical_backfill"1325      ],1326      "refreshClass": "normal",1327      "domain": "live.bernaerts.eu",1328      "country": "BE",1329      "requires": [],1330      "acquisitionMethod": "embedded JSON (AuctionMobility viewVars) on public pages",1331      "historicalDepth": "years"1332    },1333    {1334      "id": "bh-used",1335      "displayName": "B&H Photo — Used Department (cameras & lenses, USD)",1336      "sourceId": "bh-photo",1337      "sourceName": "B&H Photo Video",1338      "sourceType": "dealer",1339      "sourceUrl": "https://www.bhphotovideo.com",1340      "module": "firecrawl/bh-used",1341      "enginePriority": [1342        "firecrawl"1343      ],1344      "categories": [1345        "cameras"1346      ],1347      "regions": [1348        "US"1349      ],1350      "languages": [1351        "en"1352      ],1353      "currency": [1354        "USD"1355      ],1356      "supportsListings": true,1357      "supportsSold": false,1358      "supportsAuctions": false,1359      "supportsImages": true,1360      "supportsCatalog": false,1361      "supportsPopulation": false,1362      "supportsLookup": false,1363      "refreshFrequencyMinutes": 1440,1364      "priority": "low",1365      "trustScore": 0.85,1366      "attributionRequired": true,1367      "termsUrl": "https://www.bhphotovideo.com/find/HelpCenter/TermsAndConditions.jsp",1368      "accessNotes": "Used-department category pages (bhphotovideo.com/c/buy/Used-…/ci/<id>) rendered by Firecrawl (1 credit per page; plain HTTPS returns an Akamai browser check). robots.txt allows these /c/buy/ paths but disallows ?pn= pagination and search, so only the first page (~24–30 items) of each seeded category is read; coverage grows by adding category seeds. Each row gives name, B&H #, MFR #, the B&H used grade (10, 9+, 9, 8+, 8, 7), shutter count, used price (superscript cents flattened, e.g. $1,79995 → 1,799.95) and stock state. Dealer asking prices only; the new price is stored as original MSRP.",1369      "enabled": true,1370      "schemaVersion": "1.0",1371      "config": {1372        "seeds": [1373          "/c/buy/Used-Digital-Cameras/ci/32820/N/4288586282",1374          "/c/buy/used-mirrorless-cameras/ci/21264/N/4040479538",1375          "/c/browse/used-cameras-used-photography/ci/6387/N/4294246666",1376          "/c/browse/used-lenses-lens-accessories/ci/21426/N/4036297805",1377          "/c/browse/leica/ci/24708/N/3933929672"1378        ]1379      },1380      "capabilities": [1381        "live_listings",1382        "images"1383      ],1384      "refreshClass": "normal",1385      "domain": "bhphotovideo.com",1386      "country": "US",1387      "requires": [],1388      "historicalDepth": "none"1389    },1390    {1391      "id": "big-b-comics",1392      "displayName": "Big B Comics (Canadian comic & sports-card & TCG store, CAD)",1393      "sourceId": "big-b-comics",1394      "sourceName": "Big B Comics",1395      "sourceType": "dealer",1396      "sourceUrl": "https://www.bigbcomics.com",1397      "module": "api/big-b-comics",1398      "enginePriority": [1399        "api"1400      ],1401      "categories": [1402        "comics",1403        "marvel_comics",1404        "dc_comics",1405        "independent_comics",1406        "non_sport_cards",1407        "pokemon",1408        "funko",1409        "action_figures"1410      ],1411      "regions": [1412        "CA"1413      ],1414      "languages": [1415        "en"1416      ],1417      "currency": [1418        "CAD"1419      ],1420      "supportsListings": true,1421      "supportsSold": false,1422      "supportsAuctions": false,1423      "supportsImages": true,1424      "supportsCatalog": false,1425      "supportsPopulation": false,1426      "supportsLookup": true,1427      "refreshFrequencyMinutes": 720,1428      "priority": "medium",1429      "trustScore": 0.75,1430      "attributionRequired": true,1431      "termsUrl": "https://www.bigbcomics.com/policies/terms-of-service",1432      "accessNotes": "Big B Comics (bigbcomics.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 18 configured collections (cgc-graded-comics, vintage-comics, comics, ratio-variants, marvel-comics, vintage-spider-man, vintage-x-men, dc-comics … (+10 more, see config.collections)) and /products/<handle>.json for URL lookups (~12.7k products; 3.1k vintage comics, 300 CGC slabs, 400 trading cards). 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 — graphic novels/manga/TPB collections (books, not collectibles), pre-orders, supplies. No personal data is collected; seller = the store itself.",1433      "enabled": true,1434      "schemaVersion": "1.0",1435      "config": {1436        "currency": "CAD",1437        "market": "CA",1438        "seller": "Big B Comics",1439        "location": "Hamilton / Barrie / Niagara Falls, ON, Canada",1440        "collections": [1441          {1442            "handle": "cgc-graded-comics",1443            "categorySlug": "comics"1444          },1445          {1446            "handle": "vintage-comics",1447            "categorySlug": "comics"1448          },1449          {1450            "handle": "comics",1451            "categorySlug": "comics"1452          },1453          {1454            "handle": "ratio-variants",1455            "categorySlug": "comics"1456          },1457          {1458            "handle": "marvel-comics",1459            "categorySlug": "marvel_comics",1460            "franchise": "Marvel"1461          },1462          {1463            "handle": "vintage-spider-man",1464            "categorySlug": "marvel_comics",1465            "franchise": "Marvel"1466          },1467          {1468            "handle": "vintage-x-men",1469            "categorySlug": "marvel_comics",1470            "franchise": "Marvel"1471          },1472          {1473            "handle": "dc-comics",1474            "categorySlug": "dc_comics",1475            "franchise": "DC"1476          },1477          {1478            "handle": "vintage-batman",1479            "categorySlug": "dc_comics",1480            "franchise": "DC"1481          },1482          {1483            "handle": "indie-comics",1484            "categorySlug": "independent_comics"1485          },1486          {1487            "handle": "vintage-star-wars",1488            "categorySlug": "comics",1489            "franchise": "Star Wars"1490          },1491          {1492            "handle": "trading-cards",1493            "categorySlug": "non_sport_cards"1494          },1495          {1496            "handle": "pokemon-cards",1497            "categorySlug": "pokemon",1498            "franchise": "Pokémon"1499          },1500          {1501            "handle": "funko-pops",1502            "categorySlug": "funko",1503            "brand": "Funko"1504          },1505          {1506            "handle": "mcfarlane-toys",1507            "categorySlug": "action_figures",1508            "brand": "McFarlane Toys"1509          },1510          {1511            "handle": "super7-reaction-figures",1512            "categorySlug": "action_figures",1513            "brand": "Super7",1514            "series": "ReAction"1515          },1516          {1517            "handle": "hasbro-toy-group",1518            "categorySlug": "action_figures",1519            "brand": "Hasbro"1520          },1521          {1522            "handle": "banpresto-toys",1523            "categorySlug": "action_figures",1524            "brand": "Banpresto"1525          }1526        ],1527        "rules": [1528          {1529            "match": "^(?=[\\s\\S]*\\b(marvel|spider-?man|x-men|avengers|wolverine|hulk|deadpool|iron man|captain america|fantastic four|daredevil|venom|punisher)\\b)[\\s\\S]*\\| (comics|vintage-comics|cgc-graded-comics|ratio-variants)$",1530            "categorySlug": "marvel_comics",1531            "franchise": "Marvel"1532          },1533          {1534            "match": "^(?=[\\s\\S]*\\b(dc comics|batman|superman|wonder woman|justice league|the flash|green lantern|aquaman|detective comics|action comics|harley quinn|joker|nightwing|swamp thing)\\b)[\\s\\S]*\\| (comics|vintage-comics|cgc-graded-comics|ratio-variants)$",1535            "categorySlug": "dc_comics",1536            "franchise": "DC"1537          }1538        ],1539        "defaultCategory": null,1540        "exclude": "gift card|sleeves?|deck box|binder|playmat|toploader|top loader|storage box|dice|tokens? only|bundle of|mystery|bags? (and|&) boards|\\bmylar|comic bags|backing boards|supplies|graphic novel|\\btpb\\b|trade paperback|hardcover|omnibus|\\bmanga\\b",1541        "keepOutOfStock": true,1542        "fetchBarcodes": false,1543        "wholeShop": false,1544        "pageSize": 250,1545        "titlePattern": "^(?<name>[^#]+?) (?:\\d{4} )?#(?<number>\\d+[A-Za-z]?)"1546      },1547      "capabilities": [1548        "live_listings",1549        "images",1550        "url_lookup"1551      ],1552      "refreshClass": "normal",1553      "domain": "bigbcomics.com",1554      "country": "CA",1555      "requires": [],1556      "acquisitionMethod": "Shopify storefront products.json",1557      "historicalDepth": "none"1558    },1559    {1560      "id": "bobs-watches",1561      "displayName": "Bob's Watches (pre-owned Rolex listings)",1562      "sourceId": "bobs-watches",1563      "sourceName": "Bob's Watches",1564      "sourceType": "dealer",1565      "sourceUrl": "https://www.bobswatches.com",1566      "module": "api/bobs-watches",1567      "enginePriority": [1568        "api",1569        "firecrawl"1570      ],1571      "categories": [1572        "rolex",1573        "watches",1574        "other_watches"1575      ],1576      "regions": [1577        "US"1578      ],1579      "languages": [1580        "en"1581      ],1582      "currency": [1583        "USD"1584      ],1585      "supportsListings": true,1586      "supportsSold": false,1587      "supportsAuctions": false,1588      "supportsImages": true,1589      "supportsCatalog": false,1590      "supportsPopulation": false,1591      "supportsLookup": true,1592      "refreshFrequencyMinutes": 720,1593      "priority": "medium",1594      "trustScore": 0.8,1595      "attributionRequired": true,1596      "termsUrl": "https://www.bobswatches.com/terms-and-conditions",1597      "accessNotes": "Public model-family pages (bobswatches.com/rolex-<model>) fetched over plain HTTPS with the RareIndex user agent; robots.txt allows them (sort/query/search URLs are disallowed and never used). Each page embeds schema.org Product JSON-LD per watch (name, mpn = reference, sku = stock id, colour/material, USD price, availability). Listings only; Bob's does not publish realised prices. 1.5 s between pages.",1598      "enabled": true,1599      "schemaVersion": "1.0",1600      "config": {1601        "seeds": [1602          "rolex-submariner",1603          "rolex-daytona",1604          "rolex-gmt-master-ii",1605          "rolex-datejust",1606          "rolex-day-date",1607          "rolex-explorer",1608          "rolex-sea-dweller",1609          "rolex-yacht-master",1610          "rolex-oyster-perpetual",1611          "rolex-sky-dweller",1612          "rolex-milgauss",1613          "rolex-air-king",1614          "vintage-rolex",1615          "used-rolex-watches"1616        ]1617      },1618      "capabilities": [1619        "live_listings",1620        "images",1621        "url_lookup"1622      ],1623      "refreshClass": "normal",1624      "domain": "bobswatches.com",1625      "country": "US",1626      "requires": [],1627      "historicalDepth": "none"1628    },1629    {1630      "id": "bonhams",1631      "displayName": "Bonhams (auction results & upcoming lots)",1632      "sourceId": "bonhams",1633      "sourceName": "Bonhams",1634      "sourceType": "auction_house",1635      "sourceUrl": "https://www.bonhams.com",1636      "module": "api/bonhams",1637      "enginePriority": [1638        "api"1639      ],1640      "categories": [1641        "rolex",1642        "patek_philippe",1643        "audemars_piguet",1644        "omega",1645        "other_watches",1646        "wine",1647        "whisky",1648        "coins",1649        "banknotes",1650        "medals",1651        "automobiles",1652        "motorcycles",1653        "automotive_memorabilia",1654        "luxury_handbags",1655        "fashion_streetwear",1656        "jewelry",1657        "movie_memorabilia",1658        "music_memorabilia",1659        "musical_instruments",1660        "movie_posters",1661        "vintage_toys",1662        "sports_memorabilia",1663        "books",1664        "maps",1665        "photography",1666        "art",1667        "contemporary_art",1668        "clocks",1669        "silver",1670        "glass_crystal",1671        "porcelain",1672        "scientific_instruments",1673        "stamps",1674        "fossils",1675        "minerals",1676        "meteorites",1677        "militaria",1678        "design_furniture",1679        "antiques"1680      ],1681      "regions": [1682        "GB",1683        "US",1684        "HK",1685        "FR",1686        "AU"1687      ],1688      "languages": [1689        "en"1690      ],1691      "currency": [1692        "GBP",1693        "USD",1694        "HKD",1695        "EUR",1696        "AUD",1697        "CHF"1698      ],1699      "supportsListings": false,1700      "supportsSold": true,1701      "supportsAuctions": true,1702      "supportsImages": true,1703      "supportsCatalog": false,1704      "supportsPopulation": false,1705      "supportsLookup": true,1706      "refreshFrequencyMinutes": 360,1707      "priority": "high",1708      "trustScore": 0.9,1709      "attributionRequired": true,1710      "termsUrl": "https://www.bonhams.com/legals/terms-of-use/",1711      "accessNotes": "Plain HTTPS (no rendering, no credits). Public results listing https://www.bonhams.com/auctions/results/?page=N and upcoming listing /auctions/upcoming/ are server-rendered Next.js pages whose __NEXT_DATA__ carries 24 auctions per page (11k+ past auctions); each auction page /auction/<id>/<slug>/?page=N carries 48 lots per page with estimates, hammer price, price including buyer's premium (hammerPremium), status, currency, department and end date. bonhams.com/robots.txt only disallows /ldc/, /vms-assets/, */aggregate$ and */head_image* — none used. Prices: we store hammerPremium (hammer + buyer's premium as published by Bonhams) as the sale price with buyerPremiumIncluded=true and keep the hammer price in metadata. Sale date = the lot's hammerTime / auction end date from the source. Departments outside the configured whitelist are skipped, not guessed.",1712      "enabled": true,1713      "schemaVersion": "1.0",1714      "config": {1715        "departments": [1716          "Watches",1717          "Wine",1718          "Whisky",1719          "Coins, Medals and Banknotes",1720          "Cars",1721          "Motorcycles",1722          "Automobilia",1723          "Designer Handbags & Fashion",1724          "Jewellery",1725          "Popular Culture",1726          "Sporting Memorabilia",1727          "Books & Manuscripts",1728          "Photographs",1729          "Prints & Multiples",1730          "Post-War and Contemporary Art",1731          "Clocks",1732          "Silver",1733          "Glass",1734          "Scientific Instruments",1735          "Stamps, Covers & Postal History",1736          "Natural History",1737          "Arms and Armour",1738          "Modern Decorative Art & Design",1739          "Impressionist and Modern Art",1740          "Modern British & Irish Art",1741          "European Ceramics",1742          "British Ceramics",1743          "Travel & Exploration",1744          "Home and Interiors"1745        ],1746        "maxResultsPages": 20,1747        "maxAuctionsPerRun": 40,1748        "upcomingAuctionsPerRun": 12,1749        "lotsPerPage": 481750      },1751      "capabilities": [1752        "sold_listings",1753        "auction_results",1754        "images",1755        "url_lookup"1756      ],1757      "refreshClass": "normal",1758      "domain": "bonhams.com",1759      "country": "GB",1760      "requires": [],1761      "historicalDepth": "none"1762    },1763    {1764      "id": "brickeconomy",1765      "displayName": "BrickEconomy",1766      "sourceId": "brickeconomy",1767      "sourceName": "BrickEconomy",1768      "sourceType": "pricing_guide",1769      "sourceUrl": "https://www.brickeconomy.com",1770      "module": "firecrawl/brickeconomy",1771      "enginePriority": [1772        "firecrawl",1773        "scrapfly"1774      ],1775      "categories": [1776        "lego",1777        "lego_sets"1778      ],1779      "regions": [1780        "US"1781      ],1782      "languages": [1783        "en"1784      ],1785      "currency": [1786        "USD"1787      ],1788      "supportsListings": false,1789      "supportsSold": false,1790      "supportsAuctions": false,1791      "supportsImages": true,1792      "supportsCatalog": true,1793      "supportsPopulation": false,1794      "supportsLookup": true,1795      "refreshFrequencyMinutes": 4320,1796      "priority": "medium",1797      "trustScore": 0.65,1798      "attributionRequired": true,1799      "termsUrl": "https://www.brickeconomy.com/legal-terms",1800      "accessNotes": "Public set pages fetched through Firecrawl (markdown; ~1 credit/page). robots.txt allows all crawlers (explicitly including AI bots). Plain HTTPS returns 403 for non-browser agents, so Firecrawl is the primary engine and Scrapfly the fallback. We capture set facts (number, name, theme, subtheme, year, release/retire dates, pieces, minifigs), retail price, and BrickEconomy's estimated New/Sealed and Used values as guide observations — never as sales. Discovery via theme/top lists in config.seeds.",1801      "enabled": true,1802      "schemaVersion": "1.0",1803      "config": {1804        "seeds": [1805          "https://www.brickeconomy.com/sets/top/most-valuable-lego-sets",1806          "https://www.brickeconomy.com/sets/theme/star-wars/subtheme/ultimate-collector-series",1807          "https://www.brickeconomy.com/sets/theme/icons",1808          "https://www.brickeconomy.com/sets/theme/ideas",1809          "https://www.brickeconomy.com/sets/theme/creator-expert",1810          "https://www.brickeconomy.com/sets/theme/harry-potter",1811          "https://www.brickeconomy.com/sets/theme/technic",1812          "https://www.brickeconomy.com/sets/retired"1813        ],1814        "setsPerSeed": 601815      },1816      "capabilities": [1817        "images",1818        "catalog",1819        "url_lookup"1820      ],1821      "refreshClass": "archive",1822      "domain": "brickeconomy.com",1823      "country": "US",1824      "requires": [],1825      "historicalDepth": "none"1826    },1827    {1828      "id": "brickset",1829      "displayName": "Brickset (LEGO set catalog + current values)",1830      "sourceId": "brickset",1831      "sourceName": "Brickset",1832      "sourceType": "catalog",1833      "sourceUrl": "https://brickset.com",1834      "module": "api/brickset",1835      "enginePriority": [1836        "api",1837        "firecrawl"1838      ],1839      "categories": [1840        "lego_sets",1841        "lego"1842      ],1843      "regions": [1844        "global"1845      ],1846      "languages": [1847        "en"1848      ],1849      "currency": [1850        "USD",1851        "GBP"1852      ],1853      "supportsListings": false,1854      "supportsSold": false,1855      "supportsAuctions": false,1856      "supportsImages": true,1857      "supportsCatalog": true,1858      "supportsPopulation": false,1859      "supportsLookup": true,1860      "refreshFrequencyMinutes": 1440,1861      "priority": "medium",1862      "trustScore": 0.85,1863      "attributionRequired": true,1864      "termsUrl": "https://brickset.com/about",1865      "accessNotes": "Public set pages (brickset.com/sets/<number>-1/...) and theme listings (/sets/theme-<Theme>/page-N, 25 sets per page) fetched over plain HTTPS with the RareIndex user agent; robots.txt disallows /admin, /export, /ajax, /profile, /webservices, /buy, /news, /reviews… — none of which are used (the Brickset API/webservices need a personal key: https://brickset.com/tools/webservices/requestkey). Fields parsed from the set page definition list: pieces, minifigs, RRP (GBP + USD), launch/exit dates, availability, packaging, barcodes (UPC/EAN), theme/subtheme and the 'Current value' New/Used estimates that Brickset derives from BrickLink — stored as guide_value observations (USD, confidence 0.65). 1.5 s politeness delay.",1866      "enabled": true,1867      "schemaVersion": "1.0",1868      "config": {1869        "seeds": [1870          "theme-Star-Wars",1871          "theme-Icons",1872          "theme-Creator-Expert",1873          "theme-Ideas",1874          "theme-Technic",1875          "theme-Harry-Potter",1876          "theme-Marvel-Super-Heroes",1877          "theme-Architecture",1878          "theme-Ninjago",1879          "theme-Castle",1880          "theme-Space",1881          "theme-Pirates",1882          "theme-Indiana-Jones",1883          "theme-The-Lord-of-the-Rings",1884          "theme-DC-Comics-Super-Heroes"1885        ],1886        "pagesPerSeed": 2,1887        "setsPerRun": 1201888      },1889      "capabilities": [1890        "images",1891        "catalog",1892        "url_lookup"1893      ],1894      "refreshClass": "normal",1895      "domain": "brickset.com",1896      "country": "global",1897      "requires": [],1898      "historicalDepth": "none"1899    },1900    {1901      "id": "bring-a-trailer",1902      "displayName": "Bring a Trailer (auction results)",1903      "sourceId": "bring-a-trailer",1904      "sourceName": "Bring a Trailer",1905      "sourceType": "auction_house",1906      "sourceUrl": "https://bringatrailer.com",1907      "module": "api/bring-a-trailer",1908      "enginePriority": [1909        "api"1910      ],1911      "categories": [1912        "automobiles",1913        "motorcycles"1914      ],1915      "regions": [1916        "US",1917        "CA",1918        "GB",1919        "EU"1920      ],1921      "languages": [1922        "en"1923      ],1924      "currency": [1925        "USD",1926        "CAD",1927        "GBP",1928        "EUR"1929      ],1930      "supportsListings": false,1931      "supportsSold": true,1932      "supportsAuctions": false,1933      "supportsImages": true,1934      "supportsCatalog": false,1935      "supportsPopulation": false,1936      "supportsLookup": true,1937      "refreshFrequencyMinutes": 360,1938      "priority": "high",1939      "trustScore": 0.9,1940      "attributionRequired": true,1941      "termsUrl": "https://bringatrailer.com/terms-of-use/",1942      "accessNotes": "Completed auctions read from the same public JSON the /auctions/results/ page uses (POST /wp-json/bringatrailer/1.0/data/listings-filter, 36 items/page, ~262k results, newest first) over plain HTTPS with the RareIndex user agent; no login, no bidder data. robots.txt allows the results pages (search and member areas are disallowed and not used). 'Sold for <CUR> <amount> on <date>' entries become sales; 'Bid to' (reserve not met) entries are skipped. Prices are the winning bid: BaT's buyer fee (5%, capped) is NOT included → buyer_premium_included=false. Lookup of a listing URL parses the public listing page (title, sold line, chassis/VIN, mileage). 1.5 s politeness delay.",1943      "enabled": true,1944      "schemaVersion": "1.0",1945      "config": {1946        "pagesPerRun": 20,1947        "perPage": 361948      },1949      "capabilities": [1950        "sold_listings",1951        "images",1952        "url_lookup"1953      ],1954      "refreshClass": "normal",1955      "domain": "bringatrailer.com",1956      "country": "US",1957      "requires": [],1958      "historicalDepth": "none"1959    },1960    {1961      "id": "bunjang",1962      "displayName": "Bunjang 번개장터 (Korea C2C marketplace — listings)",1963      "sourceId": "bunjang",1964      "sourceName": "Bunjang (번개장터)",1965      "sourceType": "marketplace",1966      "sourceUrl": "https://m.bunjang.co.kr",1967      "module": "api/bunjang",1968      "enginePriority": [1969        "api"1970      ],1971      "categories": [1972        "pokemon",1973        "yugioh",1974        "one_piece_card_game",1975        "trading_cards",1976        "rolex",1977        "other_watches",1978        "nike_jordan",1979        "adidas_yeezy",1980        "sneakers",1981        "action_figures",1982        "gundam",1983        "lego_sets",1984        "designer_toys"1985      ],1986      "regions": [1987        "KR"1988      ],1989      "languages": [1990        "ko"1991      ],1992      "currency": [1993        "KRW"1994      ],1995      "supportsListings": true,1996      "supportsSold": false,1997      "supportsAuctions": false,1998      "supportsImages": true,1999      "supportsCatalog": false,2000      "supportsPopulation": false,2001      "supportsLookup": false,2002      "refreshFrequencyMinutes": 360,2003      "priority": "medium",2004      "trustScore": 0.6,2005      "attributionRequired": true,2006      "termsUrl": "https://m.bunjang.co.kr/terms",2007      "accessNotes": "Reads the public, unauthenticated search endpoint the mobile site itself loads: `api.bunjang.co.kr/api/1/find_v2.json?q=<kw>&order=date&page=<0..>&n=100` (pid, title, KRW price, status, category id, tags, region label, favourites, image template, last-update time). api.bunjang.co.kr answers /robots.txt with a 403 JSON (no rules); m.bunjang.co.kr robots.txt allows `*` except /login, /apps, /talk2 (AI-training crawlers are named and disallowed separately; RareIndexBot is a market-data bot under `*`). Only asking prices are stored as listings — Bunjang shows no dated sale prices publicly. Sponsored rows (`ad: true`) are dropped. Seller ids/nicknames, chat and personal data are never read; the coarse region label (e.g. a district) is kept as listing location only. Item detail pages/API are not fetched. 2.5 s between requests, concurrency 1.",2008      "enabled": true,2009      "schemaVersion": "1.0",2010      "config": {2011        "seeds": [2012          {2013            "q": "포켓몬카드 PSA10",2014            "category": "pokemon",2015            "language": null2016          },2017          {2018            "q": "포켓몬카드 일판",2019            "category": "pokemon",2020            "language": "Japanese"2021          },2022          {2023            "q": "유희왕 PSA",2024            "category": "yugioh",2025            "language": null2026          },2027          {2028            "q": "원피스 카드 PSA",2029            "category": "one_piece_card_game",2030            "language": null2031          },2032          {2033            "q": "롤렉스 시계",2034            "category": "rolex",2035            "language": null2036          },2037          {2038            "q": "그랜드세이코",2039            "category": "other_watches",2040            "language": null2041          },2042          {2043            "q": "조던1 새상품",2044            "category": "nike_jordan",2045            "language": null2046          },2047          {2048            "q": "이지 부스트 새상품",2049            "category": "adidas_yeezy",2050            "language": null2051          },2052          {2053            "q": "건담 MG 미개봉",2054            "category": "gundam",2055            "language": null2056          },2057          {2058            "q": "레고 미개봉",2059            "category": "lego_sets",2060            "language": null2061          },2062          {2063            "q": "베어브릭 1000%",2064            "category": "designer_toys",2065            "language": null2066          }2067        ],2068        "pagesPerSeed": 1,2069        "defaultCategory": "trading_cards"2070      },2071      "capabilities": [2072        "live_listings",2073        "images"2074      ],2075      "refreshClass": "normal",2076      "domain": "m.bunjang.co.kr",2077      "country": "KR",2078      "requires": [],2079      "acquisitionMethod": "public search JSON used by the mobile site, direct HTTP",2080      "historicalDepth": "none"2081    },2082    {2083      "id": "capsule-toronto",2084      "displayName": "Capsule Toronto (Canadian sneaker store, CAD)",2085      "sourceId": "capsule-toronto",2086      "sourceName": "Capsule Toronto",2087      "sourceType": "dealer",2088      "sourceUrl": "https://www.capsuletoronto.com",2089      "module": "api/capsule-toronto",2090      "enginePriority": [2091        "api"2092      ],2093      "categories": [2094        "sneakers",2095        "nike_jordan",2096        "new_balance_asics_other",2097        "adidas_yeezy"2098      ],2099      "regions": [2100        "CA"2101      ],2102      "languages": [2103        "en"2104      ],2105      "currency": [2106        "CAD"2107      ],2108      "supportsListings": true,2109      "supportsSold": false,2110      "supportsAuctions": false,2111      "supportsImages": true,2112      "supportsCatalog": false,2113      "supportsPopulation": false,2114      "supportsLookup": true,2115      "refreshFrequencyMinutes": 720,2116      "priority": "medium",2117      "trustScore": 0.75,2118      "attributionRequired": true,2119      "termsUrl": "https://www.capsuletoronto.com/policies/terms-of-service",2120      "accessNotes": "Capsule Toronto (capsuletoronto.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 7 configured collections (footwear, womens-footwear, jordan, nike, new-balance, asics, converse) and /products/<handle>.json for URL lookups (~9k footwear SKUs; Nike 2.4k, Jordan 1k, New Balance 900). 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 — apparel (t-shirts, sweaters, outerwear, bottoms), headwear, accessories, bags — the exclude regex also drops anything whose product_type is not Footwear. No personal data is collected; seller = the store itself.",2121      "enabled": true,2122      "schemaVersion": "1.0",2123      "config": {2124        "currency": "CAD",2125        "market": "CA",2126        "seller": "Capsule Toronto",2127        "location": "Toronto, ON, Canada",2128        "collections": [2129          {2130            "handle": "footwear",2131            "categorySlug": "sneakers"2132          },2133          {2134            "handle": "womens-footwear",2135            "categorySlug": "sneakers"2136          },2137          {2138            "handle": "jordan",2139            "categorySlug": "nike_jordan",2140            "brand": "Jordan"2141          },2142          {2143            "handle": "nike",2144            "categorySlug": "nike_jordan",2145            "brand": "Nike"2146          },2147          {2148            "handle": "new-balance",2149            "categorySlug": "new_balance_asics_other",2150            "brand": "New Balance"2151          },2152          {2153            "handle": "asics",2154            "categorySlug": "new_balance_asics_other",2155            "brand": "ASICS"2156          },2157          {2158            "handle": "converse",2159            "categorySlug": "new_balance_asics_other",2160            "brand": "Converse"2161          }2162        ],2163        "rules": [2164          {2165            "match": "\\b(air )?jordan\\b|\\bnike\\b",2166            "categorySlug": "nike_jordan"2167          },2168          {2169            "match": "\\badidas\\b|\\byeezy\\b",2170            "categorySlug": "adidas_yeezy"2171          },2172          {2173            "match": "new balance|\\basics\\b|\\bsalomon\\b|\\bhoka\\b|\\bpuma\\b|\\breebok\\b|\\bsaucony\\b|\\bconverse\\b|\\bvans\\b|\\bon running\\b|\\bmizuno\\b",2174            "categorySlug": "new_balance_asics_other"2175          }2176        ],2177        "defaultCategory": null,2178        "exclude": "gift card|^[^|]*\\|(?![^|]*Footwear \\|)[^|]*\\||birkenstock|\\bsandals?\\b|\\bslides?\\b|\\bclogs?\\b|\\bmules?\\b|\\bloafers?\\b|\\bboots?\\b|\\bugg\\b|\\bcrocs\\b|\\bsocks?\\b|\\blaces\\b|insoles?|cleaner|shoe trees?",2179        "keepOutOfStock": true,2180        "fetchBarcodes": false,2181        "wholeShop": false,2182        "pageSize": 250,2183        "titlePattern": "^(?<name>.+?) (?<number>[A-Z]{1,3}\\d{3,6}-\\d{3}|\\d{6}-\\d{3}|[A-Z]{1,2}\\d{3,4}[A-Z]{0,3}\\d{0,3})$"2184      },2185      "capabilities": [2186        "live_listings",2187        "images",2188        "url_lookup"2189      ],2190      "refreshClass": "normal",2191      "domain": "capsuletoronto.com",2192      "country": "CA",2193      "requires": [],2194      "acquisitionMethod": "Shopify storefront products.json",2195      "historicalDepth": "none"2196    },2197    {2198      "id": "cardboard-memories",2199      "displayName": "Cardboard Memories (Canadian sports-card & TCG & collector-toy store, CAD)",2200      "sourceId": "cardboard-memories",2201      "sourceName": "Cardboard Memories",2202      "sourceType": "dealer",2203      "sourceUrl": "https://www.cardboardmemories.ca",2204      "module": "api/cardboard-memories",2205      "enginePriority": [2206        "api"2207      ],2208      "categories": [2209        "hockey_cards",2210        "football_cards",2211        "baseball_cards",2212        "basketball_cards",2213        "sports_cards",2214        "sports_memorabilia",2215        "yugioh",2216        "pokemon",2217        "magic_the_gathering",2218        "funko",2219        "comics",2220        "dc_comics",2221        "soccer_cards",2222        "f1_cards",2223        "marvel_comics"2224      ],2225      "regions": [2226        "CA"2227      ],2228      "languages": [2229        "en"2230      ],2231      "currency": [2232        "CAD"2233      ],2234      "supportsListings": true,2235      "supportsSold": false,2236      "supportsAuctions": false,2237      "supportsImages": true,2238      "supportsCatalog": false,2239      "supportsPopulation": false,2240      "supportsLookup": true,2241      "refreshFrequencyMinutes": 720,2242      "priority": "medium",2243      "trustScore": 0.75,2244      "attributionRequired": true,2245      "termsUrl": "https://www.cardboardmemories.ca/policies/terms-of-service",2246      "accessNotes": "Cardboard Memories (cardboardmemories.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 14 configured collections (hockey-cards, football-cards-1, baseball-cards, basketball-cards, sports-cards, upper-deck-authenticated, yu-gi-oh-singles, pokemon … (+6 more, see config.collections)) and /products/<handle>.json for URL lookups (~26k comics, 1.1k hockey card products, Yu-Gi-Oh!/Pokémon singles, Funko). 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 — RPG books, miniatures, paints, supplies (binders, sleeves, deck boxes), trade paperbacks. No personal data is collected; seller = the store itself.",2247      "enabled": true,2248      "schemaVersion": "1.0",2249      "config": {2250        "currency": "CAD",2251        "market": "CA",2252        "seller": "Cardboard Memories",2253        "location": "Moncton, NB, Canada",2254        "collections": [2255          {2256            "handle": "hockey-cards",2257            "categorySlug": "hockey_cards"2258          },2259          {2260            "handle": "football-cards-1",2261            "categorySlug": "football_cards"2262          },2263          {2264            "handle": "baseball-cards",2265            "categorySlug": "baseball_cards"2266          },2267          {2268            "handle": "basketball-cards",2269            "categorySlug": "basketball_cards"2270          },2271          {2272            "handle": "sports-cards",2273            "categorySlug": "sports_cards"2274          },2275          {2276            "handle": "upper-deck-authenticated",2277            "categorySlug": "sports_memorabilia",2278            "brand": "Upper Deck Authenticated"2279          },2280          {2281            "handle": "yu-gi-oh-singles",2282            "categorySlug": "yugioh",2283            "franchise": "Yu-Gi-Oh!"2284          },2285          {2286            "handle": "pokemon",2287            "categorySlug": "pokemon",2288            "franchise": "Pokémon"2289          },2290          {2291            "handle": "pokemon-booster-boxes",2292            "categorySlug": "pokemon",2293            "franchise": "Pokémon"2294          },2295          {2296            "handle": "magic-the-gathering",2297            "categorySlug": "magic_the_gathering",2298            "franchise": "Magic: The Gathering"2299          },2300          {2301            "handle": "magic-the-gathering-boxes",2302            "categorySlug": "magic_the_gathering",2303            "franchise": "Magic: The Gathering"2304          },2305          {2306            "handle": "funko-pop",2307            "categorySlug": "funko",2308            "brand": "Funko"2309          },2310          {2311            "handle": "comic-books",2312            "categorySlug": "comics"2313          },2314          {2315            "handle": "dc-comics",2316            "categorySlug": "dc_comics",2317            "franchise": "DC"2318          }2319        ],2320        "rules": [2321          {2322            "match": "^(?=[\\s\\S]*\\bhockey\\b)[\\s\\S]*\\| sports-cards$",2323            "categorySlug": "hockey_cards"2324          },2325          {2326            "match": "^(?=[\\s\\S]*\\bbaseball\\b)[\\s\\S]*\\| sports-cards$",2327            "categorySlug": "baseball_cards"2328          },2329          {2330            "match": "^(?=[\\s\\S]*\\bbasketball\\b)[\\s\\S]*\\| sports-cards$",2331            "categorySlug": "basketball_cards"2332          },2333          {2334            "match": "^(?=[\\s\\S]*\\bfootball\\b)[\\s\\S]*\\| sports-cards$",2335            "categorySlug": "football_cards"2336          },2337          {2338            "match": "^(?=[\\s\\S]*\\b(soccer|premier league|uefa|fifa)\\b)[\\s\\S]*\\| sports-cards$",2339            "categorySlug": "soccer_cards"2340          },2341          {2342            "match": "^(?=[\\s\\S]*\\b(formula 1|formula one|\\bf1\\b)\\b)[\\s\\S]*\\| sports-cards$",2343            "categorySlug": "f1_cards"2344          },2345          {2346            "match": "^(?=[\\s\\S]*\\b(marvel|spider-?man|x-men|avengers|wolverine|hulk|deadpool|iron man|captain america|fantastic four|daredevil|venom|punisher)\\b)[\\s\\S]*\\| (comic-books)$",2347            "categorySlug": "marvel_comics",2348            "franchise": "Marvel"2349          },2350          {2351            "match": "^(?=[\\s\\S]*\\b(dc comics|batman|superman|wonder woman|justice league|the flash|green lantern|aquaman|detective comics|action comics|harley quinn|joker|nightwing|swamp thing)\\b)[\\s\\S]*\\| (comic-books)$",2352            "categorySlug": "dc_comics",2353            "franchise": "DC"2354          }2355        ],2356        "defaultCategory": null,2357        "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|bags? (and|&) boards|\\bmylar|comic bags|backing boards|magnetic holder|one-touch|\\bpaint",2358        "keepOutOfStock": true,2359        "fetchBarcodes": false,2360        "wholeShop": false,2361        "pageSize": 2502362      },2363      "capabilities": [2364        "live_listings",2365        "images",2366        "url_lookup"2367      ],2368      "refreshClass": "normal",2369      "domain": "cardboardmemories.ca",2370      "country": "CA",2371      "requires": [],2372      "acquisitionMethod": "Shopify storefront products.json",2373      "historicalDepth": "none"2374    },2375    {2376      "id": "cardkingdom",2377      "displayName": "Card Kingdom (retail & buylist prices)",2378      "sourceId": "cardkingdom",2379      "sourceName": "Card Kingdom",2380      "sourceType": "dealer",2381      "sourceUrl": "https://www.cardkingdom.com",2382      "module": "api/cardkingdom",2383      "enginePriority": [2384        "api"2385      ],2386      "categories": [2387        "magic_the_gathering"2388      ],2389      "regions": [2390        "US"2391      ],2392      "languages": [2393        "en"2394      ],2395      "currency": [2396        "USD"2397      ],2398      "supportsListings": false,2399      "supportsSold": false,2400      "supportsAuctions": false,2401      "supportsImages": false,2402      "supportsCatalog": true,2403      "supportsPopulation": false,2404      "supportsLookup": false,2405      "refreshFrequencyMinutes": 1440,2406      "priority": "medium",2407      "trustScore": 0.8,2408      "attributionRequired": true,2409      "termsUrl": "https://www.cardkingdom.com/help/terms",2410      "accessNotes": "Card Kingdom publishes its full singles price list (https://api.cardkingdom.com/api/pricelist, ~46 MB JSON, refreshed daily) and sealed price list (/api/sealed_pricelist) publicly; each singles row carries the Scryfall id, edition, foil flag, retail price, retail stock, buylist price and buylist demand. Fetched once per run with an identifying User-Agent (two requests). Retail = dealer asking price stored as price_observation kind 'market' with metadata.buylist; not a transaction. Identifiers: cardkingdom_id, scryfall_id. Sealed products get catalog items with metadata.sealed=true.",2411      "enabled": true,2412      "schemaVersion": "1.0",2413      "config": {2414        "includeSealed": true,2415        "minRetailUsd": 0.52416      },2417      "capabilities": [2418        "catalog"2419      ],2420      "refreshClass": "normal",2421      "domain": "cardkingdom.com",2422      "country": "US",2423      "requires": [],2424      "historicalDepth": "none"2425    },2426    {2427      "id": "cardmarket-priceguide",2428      "displayName": "Cardmarket price guide (bulk files)",2429      "sourceId": "cardmarket-priceguide",2430      "sourceName": "Cardmarket",2431      "sourceType": "pricing_guide",2432      "sourceUrl": "https://downloads.s3.cardmarket.com/productCatalog/priceGuide/price_guide_1.json",2433      "module": "api/cardmarket-priceguide",2434      "enginePriority": [2435        "api"2436      ],2437      "categories": [2438        "magic_the_gathering",2439        "yugioh",2440        "pokemon",2441        "final_fantasy_tcg",2442        "weiss_schwarz",2443        "dragon_ball_tcg",2444        "flesh_and_blood",2445        "digimon_tcg",2446        "one_piece_card_game",2447        "disney_lorcana",2448        "star_wars_tcg",2449        "other_tcg"2450      ],2451      "regions": [2452        "EU",2453        "DE"2454      ],2455      "languages": [2456        "en"2457      ],2458      "currency": [2459        "EUR"2460      ],2461      "supportsListings": false,2462      "supportsSold": false,2463      "supportsAuctions": false,2464      "supportsImages": false,2465      "supportsCatalog": true,2466      "supportsPopulation": false,2467      "supportsLookup": false,2468      "refreshFrequencyMinutes": 1440,2469      "priority": "high",2470      "trustScore": 0.85,2471      "attributionRequired": true,2472      "termsUrl": "https://www.cardmarket.com/en/Magic/Help/TermsOfService",2473      "accessNotes": "Reads only Cardmarket's public, unauthenticated bulk files on downloads.s3.cardmarket.com/productCatalog/: priceGuide/price_guide_<idGame>.json (one row per product: avg, low, trend, avg1, avg7, avg30 and the *-foil equivalents, EUR, regenerated daily — the file's own createdAt is used as observationDate) and productList/products_singles_<idGame>.json + products_nonsingles_<idGame>.json (idProduct, name, idCategory/categoryName, idExpansion, idMetacard, dateAdded). Game ids were discovered live by probing 1–30 (HTTP 403 = no such game): 1 Magic, 2 WoW TCG, 3 Yu-Gi-Oh!, 5 The Spoils, 6 Pokémon, 7 Force of Will, 8 Cardfight!! Vanguard, 9 Final Fantasy TCG, 10 Weiss Schwarz, 11 Dragoborne, 12 My Little Pony, 13 Dragon Ball Super, 15 Star Wars Destiny, 16 Flesh and Blood, 17 Digimon, 18 One Piece, 19 Lorcana, 20 Battle Spirits Saga, 21 Star Wars Unlimited, 22 Riftbound. Files are 1–26 MB each and fetched at most once per game per run (≤ 3 requests per game, 2 s apart, 1 concurrent). The bucket has no robots.txt (S3 AccessDenied on /robots.txt); the storefront cardmarket.com is Cloudflare-protected and is deliberately NEVER crawled — no product pages, no search, no seller data. The bulk files carry no expansion names, card numbers or images, so catalog items rely on identifiers.cardmarket_id (= idProduct, the same key MTGJSON emits for mcmId) for entity resolution; Cardmarket 'foil' rows become variant 'Foil' (Magic & most games) or 'Reverse Holo' (Pokémon, Cardmarket's foil flag for Pokémon). Guide values are price observations, never sales.",2474      "enabled": true,2475      "schemaVersion": "1.0",2476      "config": {2477        "games": {2478          "1": {2479            "slug": "magic_the_gathering",2480            "name": "Magic: The Gathering",2481            "franchise": "Magic: The Gathering",2482            "brand": "Wizards of the Coast"2483          },2484          "3": {2485            "slug": "yugioh",2486            "name": "Yu-Gi-Oh!",2487            "franchise": "Yu-Gi-Oh!",2488            "brand": "Konami"2489          },2490          "6": {2491            "slug": "pokemon",2492            "name": "Pokémon",2493            "franchise": "Pokémon",2494            "brand": "The Pokémon Company",2495            "foilVariant": "Reverse Holo"2496          },2497          "7": {2498            "slug": "other_tcg",2499            "name": "Force of Will",2500            "franchise": "Force of Will",2501            "brand": "Force of Will Co."2502          },2503          "8": {2504            "slug": "other_tcg",2505            "name": "Cardfight!! Vanguard",2506            "franchise": "Cardfight!! Vanguard",2507            "brand": "Bushiroad"2508          },2509          "9": {2510            "slug": "final_fantasy_tcg",2511            "name": "Final Fantasy TCG",2512            "franchise": "Final Fantasy",2513            "brand": "Square Enix"2514          },2515          "10": {2516            "slug": "weiss_schwarz",2517            "name": "Weiss Schwarz",2518            "franchise": "Weiß Schwarz",2519            "brand": "Bushiroad"2520          },2521          "13": {2522            "slug": "dragon_ball_tcg",2523            "name": "Dragon Ball Super Card Game",2524            "franchise": "Dragon Ball",2525            "brand": "Bandai"2526          },2527          "15": {2528            "slug": "star_wars_tcg",2529            "name": "Star Wars: Destiny",2530            "franchise": "Star Wars",2531            "brand": "Fantasy Flight Games"2532          },2533          "16": {2534            "slug": "flesh_and_blood",2535            "name": "Flesh and Blood",2536            "franchise": "Flesh and Blood",2537            "brand": "Legend Story Studios"2538          },2539          "17": {2540            "slug": "digimon_tcg",2541            "name": "Digimon Card Game",2542            "franchise": "Digimon",2543            "brand": "Bandai"2544          },2545          "18": {2546            "slug": "one_piece_card_game",2547            "name": "One Piece Card Game",2548            "franchise": "One Piece",2549            "brand": "Bandai"2550          },2551          "19": {2552            "slug": "disney_lorcana",2553            "name": "Disney Lorcana",2554            "franchise": "Disney Lorcana",2555            "brand": "Ravensburger"2556          },2557          "20": {2558            "slug": "other_tcg",2559            "name": "Battle Spirits Saga",2560            "franchise": "Battle Spirits Saga",2561            "brand": "Bandai"2562          },2563          "21": {2564            "slug": "star_wars_tcg",2565            "name": "Star Wars: Unlimited",2566            "franchise": "Star Wars",2567            "brand": "Fantasy Flight Games"2568          },2569          "22": {2570            "slug": "other_tcg",2571            "name": "Riftbound",2572            "franchise": "Riftbound: League of Legends TCG",2573            "brand": "Riot Games"2574          }2575        },2576        "includeNonSingles": true,2577        "onlyPriced": true,2578        "priceKinds": [2579          "avg",2580          "low",2581          "trend",2582          "avg1",2583          "avg7",2584          "avg30"2585        ]2586      },2587      "capabilities": [2588        "price_guide",2589        "catalog"2590      ],2591      "refreshClass": "normal",2592      "domain": "downloads.s3.cardmarket.com",2593      "country": "DE",2594      "requires": [],2595      "acquisitionMethod": "public bulk JSON files (daily price guide + product catalog)",2596      "historicalDepth": "none"2597    },2598    {2599      "id": "cardmerchant-nz",2600      "displayName": "Card Merchant NZ",2601      "sourceId": "cardmerchant-nz",2602      "sourceName": "Card Merchant NZ",2603      "sourceType": "dealer",2604      "sourceUrl": "https://cardmerchant.co.nz",2605      "module": "api/cardmerchant-nz",2606      "enginePriority": [2607        "api"2608      ],2609      "categories": [2610        "magic_the_gathering",2611        "yugioh",2612        "flesh_and_blood",2613        "other_tcg",2614        "one_piece_card_game",2615        "pokemon",2616        "disney_lorcana",2617        "star_wars_tcg",2618        "digimon_tcg",2619        "dragon_ball_tcg"2620      ],2621      "regions": [2622        "NZ"2623      ],2624      "languages": [2625        "en"2626      ],2627      "currency": [2628        "NZD"2629      ],2630      "supportsListings": true,2631      "supportsSold": false,2632      "supportsAuctions": false,2633      "supportsImages": true,2634      "supportsCatalog": false,2635      "supportsPopulation": false,2636      "supportsLookup": true,2637      "refreshFrequencyMinutes": 720,2638      "priority": "medium",2639      "trustScore": 0.65,2640      "attributionRequired": true,2641      "termsUrl": "https://cardmerchant.co.nz/policies/terms-of-service",2642      "accessNotes": "Card Merchant NZ (cardmerchant.co.nz) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (mtg-singles-instock, mtg-sealed, yu-gi-oh-singles, yugioh-sealed, fab-singles, flesh-and-blood-sealed, riftbound-singles, grand-archive-singles, one-piece-tcg, pokemon, disney-lorcana-tcg, star-wars-unlimited, digimon, dragonball-super). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency NZD (/meta.json currency NZD, Shopify.currency rate 1.0), GST included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",2643      "enabled": true,2644      "schemaVersion": "1.0",2645      "config": {2646        "currency": "NZD",2647        "seller": "Card Merchant NZ",2648        "location": null,2649        "collections": [2650          {2651            "handle": "mtg-singles-instock",2652            "categorySlug": "magic_the_gathering",2653            "franchise": "Magic: The Gathering"2654          },2655          {2656            "handle": "mtg-sealed",2657            "categorySlug": "magic_the_gathering",2658            "franchise": "Magic: The Gathering"2659          },2660          {2661            "handle": "yu-gi-oh-singles",2662            "categorySlug": "yugioh",2663            "franchise": "Yu-Gi-Oh!"2664          },2665          {2666            "handle": "yugioh-sealed",2667            "categorySlug": "yugioh",2668            "franchise": "Yu-Gi-Oh!"2669          },2670          {2671            "handle": "fab-singles",2672            "categorySlug": "flesh_and_blood",2673            "franchise": "Flesh and Blood"2674          },2675          {2676            "handle": "flesh-and-blood-sealed",2677            "categorySlug": "flesh_and_blood",2678            "franchise": "Flesh and Blood"2679          },2680          {2681            "handle": "riftbound-singles",2682            "categorySlug": "other_tcg",2683            "franchise": "League of Legends"2684          },2685          {2686            "handle": "grand-archive-singles",2687            "categorySlug": "other_tcg"2688          },2689          {2690            "handle": "one-piece-tcg",2691            "categorySlug": "one_piece_card_game",2692            "franchise": "One Piece"2693          },2694          {2695            "handle": "pokemon",2696            "categorySlug": "pokemon",2697            "franchise": "Pokémon"2698          },2699          {2700            "handle": "disney-lorcana-tcg",2701            "categorySlug": "disney_lorcana",2702            "franchise": "Disney Lorcana"2703          },2704          {2705            "handle": "star-wars-unlimited",2706            "categorySlug": "star_wars_tcg",2707            "franchise": "Star Wars"2708          },2709          {2710            "handle": "digimon",2711            "categorySlug": "digimon_tcg",2712            "franchise": "Digimon"2713          },2714          {2715            "handle": "dragonball-super",2716            "categorySlug": "dragon_ball_tcg",2717            "franchise": "Dragon Ball"2718          }2719        ],2720        "rules": [],2721        "defaultCategory": null,2722        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|\\| accessories \\||folder|custom|board game|dragon shield|ultimate guard|gamegenic|\\bsleeve",2723        "keepOutOfStock": true,2724        "titlePattern": "^(?<name>.+?)\\s*\\[(?<set>[^\\]]+)\\]",2725        "pageSize": 250,2726        "fetchBarcodes": false,2727        "wholeShop": false2728      },2729      "capabilities": [2730        "live_listings",2731        "images",2732        "url_lookup"2733      ],2734      "refreshClass": "normal",2735      "domain": "cardmerchant.co.nz",2736      "country": "NZ",2737      "requires": [],2738      "acquisitionMethod": "Shopify storefront products.json (public JSON)",2739      "historicalDepth": "none"2740    },2741    {2742      "id": "cardrush",2743      "displayName": "Cardrush (カードラッシュ) singles",2744      "sourceId": "cardrush",2745      "sourceName": "Cardrush",2746      "sourceType": "dealer",2747      "sourceUrl": "https://www.cardrush-mtg.jp",2748      "module": "api/cardrush",2749      "enginePriority": [2750        "api",2751        "scrapfly"2752      ],2753      "categories": [2754        "magic_the_gathering",2755        "one_piece_card_game",2756        "yugioh",2757        "digimon_tcg",2758        "pokemon",2759        "other_tcg"2760      ],2761      "regions": [2762        "JP"2763      ],2764      "languages": [2765        "ja"2766      ],2767      "currency": [2768        "JPY"2769      ],2770      "supportsListings": true,2771      "supportsSold": false,2772      "supportsAuctions": false,2773      "supportsImages": true,2774      "supportsCatalog": false,2775      "supportsPopulation": false,2776      "supportsLookup": false,2777      "refreshFrequencyMinutes": 1440,2778      "priority": "medium",2779      "trustScore": 0.8,2780      "attributionRequired": true,2781      "termsUrl": "https://www.cardrush-mtg.jp/law",2782      "accessNotes": "Cardrush is a Japanese single-card retailer running one storefront per game on the same shop platform: www.cardrush-mtg.jp (Magic), www.cardrush-op.jp (One Piece), www.cardrush.jp (Yu-Gi-Oh!), www.cardrush-dm.jp (Duel Masters), www.cardrush-digimon.jp (Digimon) and www.cardrush-pokemon.jp (Pokémon). Category listing pages https://<store>/product-list/<id>?page=<n> are public, server-rendered (100 items per page, pager with a 'next' link) and give product id, title ([condition] name 《language》【set】 or 〔condition/grade〕name【rarity】{number}), JPY price incl. tax, stock/在庫なし and image. robots.txt on every store disallows only GPTBot/Bytespider/TikTokSpider/meta-externalagent (the Pokémon store adds a Cloudflare 'Content-Signal: search=yes, ai-train=no' block and more AI crawlers) — RareIndexBot is allowed everywhere. Five stores answer plain HTTP with the honest UA; the Pokémon store sits behind a Cloudflare managed challenge (403 for any non-browser client), so its public listing pages are fetched through Scrapfly ASP (country jp, no JS rendering, ~25 credits per page) and limited to one page per category per run — no login, no private data. Requests ≥ 4 s apart (8 s on the Pokémon store), 1 concurrent. Not fetched: product detail pages (only linked), buy-list (買取) prices, mystery packs (オリパ) and supplies categories, carts. Shop asking prices → listings, never sales.",2783      "enabled": true,2784      "schemaVersion": "1.0",2785      "config": {2786        "stores": [2787          {2788            "host": "www.cardrush-mtg.jp",2789            "categorySlug": "magic_the_gathering",2790            "franchise": "Magic: The Gathering",2791            "brand": "Wizards of the Coast",2792            "bracket": "set",2793            "lists": {2794              "2": "スタンダード(パック別)",2795              "3": "モダン(パック別)",2796              "4": "レガシー(パック別)",2797              "5": "特殊セット(パック別)",2798              "7": "統率者"2799            }2800          },2801          {2802            "host": "www.cardrush-op.jp",2803            "categorySlug": "one_piece_card_game",2804            "franchise": "One Piece",2805            "brand": "Bandai",2806            "bracket": "rarity",2807            "lists": {2808              "4": "未開封BOX",2809              "17": "赤",2810              "18": "緑",2811              "19": "青",2812              "20": "紫",2813              "21": "黒",2814              "22": "黄",2815              "23": "多色"2816            }2817          },2818          {2819            "host": "www.cardrush.jp",2820            "categorySlug": "yugioh",2821            "franchise": "Yu-Gi-Oh!",2822            "brand": "Konami",2823            "bracket": "rarity",2824            "lists": {2825              "291": "コレクター向け",2826              "384": "未開封BOX"2827            }2828          },2829          {2830            "host": "www.cardrush-dm.jp",2831            "categorySlug": "other_tcg",2832            "franchise": "Duel Masters",2833            "brand": "Takara Tomy",2834            "bracket": "rarity",2835            "lists": {2836              "2": "光",2837              "3": "闇",2838              "4": "火",2839              "5": "自然",2840              "6": "水",2841              "7": "無",2842              "8": "多"2843            }2844          },2845          {2846            "host": "www.cardrush-digimon.jp",2847            "categorySlug": "digimon_tcg",2848            "franchise": "Digimon",2849            "brand": "Bandai",2850            "bracket": "rarity",2851            "lists": {2852              "2": "デジモン",2853              "3": "テイマー",2854              "4": "デジタマ",2855              "5": "オプション",2856              "7": "未開封商品"2857            }2858          },2859          {2860            "host": "www.cardrush-pokemon.jp",2861            "categorySlug": "pokemon",2862            "franchise": "Pokémon",2863            "brand": "The Pokémon Company",2864            "bracket": "rarity",2865            "engines": [2866              "scrapfly"2867            ],2868            "pagesPerList": 1,2869            "lists": {2870              "2": "炎",2871              "3": "草",2872              "4": "雷",2873              "5": "水",2874              "6": "竜",2875              "7": "闘",2876              "8": "妖",2877              "9": "超",2878              "10": "鋼",2879              "11": "無",2880              "16": "悪",2881              "23": "未開封BOX"2882            }2883          }2884        ],2885        "pagesPerList": 32886      },2887      "capabilities": [2888        "live_listings",2889        "images"2890      ],2891      "refreshClass": "normal",2892      "domain": "cardrush-mtg.jp",2893      "country": "JP",2894      "requires": [],2895      "acquisitionMethod": "public product-list HTML pages (plain HTTP; Scrapfly ASP only for the Cloudflare-fronted Pokémon store)",2896      "historicalDepth": "none"2897    },2898    {2899      "id": "cardtrader",2900      "displayName": "CardTrader (API v2 — blueprints & marketplace)",2901      "sourceId": "cardtrader",2902      "sourceName": "CardTrader",2903      "sourceType": "marketplace",2904      "sourceUrl": "https://www.cardtrader.com",2905      "module": "api/cardtrader",2906      "enginePriority": [2907        "api"2908      ],2909      "categories": [2910        "magic_the_gathering",2911        "pokemon",2912        "yugioh",2913        "one_piece_card_game",2914        "disney_lorcana",2915        "flesh_and_blood",2916        "digimon_tcg",2917        "dragon_ball_tcg",2918        "star_wars_tcg",2919        "other_tcg"2920      ],2921      "regions": [2922        "EU",2923        "IT"2924      ],2925      "languages": [2926        "en",2927        "it",2928        "es"2929      ],2930      "currency": [2931        "EUR",2932        "USD"2933      ],2934      "supportsListings": true,2935      "supportsSold": false,2936      "supportsAuctions": false,2937      "supportsImages": true,2938      "supportsCatalog": true,2939      "supportsPopulation": false,2940      "supportsLookup": false,2941      "refreshFrequencyMinutes": 1440,2942      "priority": "medium",2943      "trustScore": 0.8,2944      "attributionRequired": true,2945      "termsUrl": "https://www.cardtrader.com/en/terms",2946      "accessNotes": "CardTrader (Italy) is Europe's second card marketplace and publishes a documented REST API at https://api.cardtrader.com/api/v2 (docs: https://www.cardtrader.com/docs/api/full). Every call needs `Authorization: Bearer <token>`; the token is issued to any registered CardTrader account from its settings page — unauthenticated calls return 401 (verified live), so the connector is gated behind CARDTRADER_API_TOKEN. Endpoints used, all read-only: GET /games, GET /expansions (id, game_id, code, name), GET /blueprints/export?expansion_id=<id> (one blueprint per printing with scryfall_id, card_market_ids, tcg_player_id, image_url, fixed_properties such as collector_number/rarity) and GET /marketplace/products?expansion_id=<id> (the 25 cheapest public offers per blueprint: price cents + currency, quantity, properties_hash condition/language/foil, seller username/country/type, graded, bundle_size). Rate limits per docs: 200 requests / 10 s overall, 10 req/s on /marketplace/products (we stay at ≤ 1 req/s). The public website (Cloudflare) is never crawled. Seller usernames are personal data for 'normal' (private) sellers and are never stored; only user_type/country_code are kept. Offers are asking prices → listings, never sales; graded and bundle offers are flagged. Fixtures were built from the official documentation's example responses (no token available) and say so in their note.",2947      "enabled": true,2948      "schemaVersion": "1.0",2949      "config": {2950        "gameSlugs": {2951          "magic": "magic_the_gathering",2952          "pokemon": "pokemon",2953          "yugioh": "yugioh",2954          "one piece": "one_piece_card_game",2955          "lorcana": "disney_lorcana",2956          "flesh and blood": "flesh_and_blood",2957          "digimon": "digimon_tcg",2958          "dragon ball": "dragon_ball_tcg",2959          "star wars": "star_wars_tcg",2960          "vanguard": "other_tcg",2961          "riftbound": "other_tcg",2962          "union arena": "other_tcg",2963          "battle spirits": "other_tcg",2964          "gundam": "other_tcg"2965        },2966        "expansionsPerRun": 30,2967        "includeMarketplace": true2968      },2969      "capabilities": [2970        "catalog",2971        "live_listings",2972        "images"2973      ],2974      "refreshClass": "normal",2975      "domain": "cardtrader.com",2976      "country": "IT",2977      "requires": [2978        "CARDTRADER_API_TOKEN"2979      ],2980      "acquisitionMethod": "official REST API v2 (Bearer token from a CardTrader account)",2981      "historicalDepth": "none"2982    },2983    {2984      "id": "cars-and-bids",2985      "displayName": "Cars & Bids (past auctions)",2986      "sourceId": "cars-and-bids",2987      "sourceName": "Cars & Bids",2988      "sourceType": "auction_house",2989      "sourceUrl": "https://carsandbids.com",2990      "module": "firecrawl/cars-and-bids",2991      "enginePriority": [2992        "firecrawl"2993      ],2994      "categories": [2995        "automobiles"2996      ],2997      "regions": [2998        "US",2999        "CA"3000      ],3001      "languages": [3002        "en"3003      ],3004      "currency": [3005        "USD",3006        "CAD"3007      ],3008      "supportsListings": false,3009      "supportsSold": true,3010      "supportsAuctions": false,3011      "supportsImages": true,3012      "supportsCatalog": false,3013      "supportsPopulation": false,3014      "supportsLookup": false,3015      "refreshFrequencyMinutes": 360,3016      "priority": "high",3017      "trustScore": 0.9,3018      "attributionRequired": true,3019      "termsUrl": "https://carsandbids.com/terms-of-use/",3020      "accessNotes": "Public 'Past Results' list (/past-auctions/?page=N, ~50 auctions per page, newest first) rendered through Firecrawl (plain HTTPS returns a Cloudflare interstitial; we do not bypass it — Firecrawl fetches the public page like a browser). robots.txt allows the page (only /sell-car/, /widgets/, /dealers/ are disallowed). 'Sold for $X' + 'Ended m/d/yy' rows become sales; 'Bid to' rows (reserve not met) are skipped. Price is the winning bid — the 4.5% buyer fee is NOT included → buyer_premium_included=false. 1 Firecrawl credit per page, 2 s politeness delay.",3021      "enabled": true,3022      "schemaVersion": "1.0",3023      "config": {3024        "pagesPerRun": 103025      },3026      "capabilities": [3027        "sold_listings",3028        "images"3029      ],3030      "refreshClass": "normal",3031      "domain": "carsandbids.com",3032      "country": "US",3033      "requires": [],3034      "historicalDepth": "none"3035    },3036    {3037      "id": "catawiki",3038      "displayName": "Catawiki (closed-lot results & live lots)",3039      "sourceId": "catawiki",3040      "sourceName": "Catawiki",3041      "sourceType": "auction_house",3042      "sourceUrl": "https://www.catawiki.com",3043      "module": "scrapfly/catawiki",3044      "enginePriority": [3045        "scrapfly"3046      ],3047      "categories": [3048        "pokemon",3049        "magic_the_gathering",3050        "yugioh",3051        "one_piece_card_game",3052        "disney_lorcana",3053        "other_tcg",3054        "basketball_cards",3055        "baseball_cards",3056        "football_cards",3057        "hockey_cards",3058        "soccer_cards",3059        "f1_cards",3060        "non_sport_cards",3061        "rolex",3062        "patek_philippe",3063        "audemars_piguet",3064        "omega",3065        "other_watches",3066        "pens",3067        "lighters",3068        "marvel_comics",3069        "dc_comics",3070        "independent_comics",3071        "manga",3072        "animation_art",3073        "lego_sets",3074        "funko",3075        "model_cars",3076        "model_trains",3077        "action_figures",3078        "vintage_toys",3079        "designer_toys",3080        "dolls",3081        "plush",3082        "video_games",3083        "coins",3084        "banknotes",3085        "stamps",3086        "medals",3087        "wine",3088        "whisky",3089        "rum",3090        "cognac",3091        "music",3092        "movie_posters",3093        "cameras",3094        "sports_memorabilia",3095        "art",3096        "contemporary_art",3097        "photography",3098        "jewelry",3099        "gemstones",3100        "luxury_handbags",3101        "sneakers",3102        "fashion_streetwear",3103        "automobiles",3104        "motorcycles",3105        "automotive_memorabilia",3106        "books",3107        "maps",3108        "historical_documents",3109        "fossils",3110        "minerals",3111        "meteorites",3112        "antiques",3113        "design_furniture"3114      ],3115      "regions": [3116        "NL",3117        "EU"3118      ],3119      "languages": [3120        "en"3121      ],3122      "currency": [3123        "EUR"3124      ],3125      "supportsListings": false,3126      "supportsSold": true,3127      "supportsAuctions": true,3128      "supportsImages": true,3129      "supportsCatalog": false,3130      "supportsPopulation": false,3131      "supportsLookup": true,3132      "refreshFrequencyMinutes": 240,3133      "priority": "high",3134      "trustScore": 0.8,3135      "attributionRequired": true,3136      "termsUrl": "https://www.catawiki.com/en/help/terms-of-use",3137      "accessNotes": "Scrapfly (asp, NL exit) because catawiki.com returns 403 to non-browser clients. Two-phase crawl: (1) discovery — a rendered category page (render_js, ~6 credits) lists the live themed auctions of the category; each auction page /en/a/<id>-slug is server-rendered (__NEXT_DATA__, 1 credit, no JS) with its full lot list and closeAt; live lots are emitted as auction_lot records and remembered in the cursor; (2) harvest — after an auction closes, each remembered lot page /en/l/<id>-slug (1 credit, no JS) exposes biddingBlockResponse {closed, sold, final bid in EUR, biddingEndTime} plus title/subtitle/specifications/expert estimate/images/seller country, and sold lots become sale records. Robots (via Scrapfly): /*/c/*/* and *lot_id are disallowed — we only use single-segment category URLs, auction pages and lot pages, never the lot_id query. Prices: Catawiki's final bid is the hammer; the buyer pays an additional ~9% buyer protection fee, so buyerPremiumIncluded=false (fee noted in metadata). Sale date = biddingEndTime from the source. Unsold closed lots are discarded.",3138      "enabled": true,3139      "schemaVersion": "1.0",3140      "config": {3141        "seeds": [3142          {3143            "id": 725,3144            "path": "725-trading-cards",3145            "hint": "cards"3146          },3147          {3148            "id": 299,3149            "path": "299-watches-pens-lighters",3150            "hint": "watches"3151          },3152          {3153            "id": 139,3154            "path": "139-comics-animation",3155            "hint": "comics"3156          },3157          {3158            "id": 363,3159            "path": "363-toys-models",3160            "hint": "toys"3161          },3162          {3163            "id": 165,3164            "path": "165-coins-stamps",3165            "hint": "coins"3166          },3167          {3168            "id": 720,3169            "path": "720-wine-whisky-spirits",3170            "hint": "wine"3171          },3172          {3173            "id": 347,3174            "path": "347-music-movies-cameras",3175            "hint": "music"3176          },3177          {3178            "id": 1097,3179            "path": "1097-sports",3180            "hint": "sports"3181          },3182          {3183            "id": 714,3184            "path": "714-jewellery-precious-stones",3185            "hint": "jewelry"3186          },3187          {3188            "id": 721,3189            "path": "721-fashion",3190            "hint": "fashion"3191          },3192          {3193            "id": 85,3194            "path": "85-art",3195            "hint": "art"3196          },3197          {3198            "id": 708,3199            "path": "708-classic-cars-motorcycles-automobilia",3200            "hint": "cars"3201          },3202          {3203            "id": 863,3204            "path": "863-archaeology-natural-history",3205            "hint": "natural_history"3206          },3207          {3208            "id": 1099,3209            "path": "1099-books-historical-memorabilia",3210            "hint": "books"3211          }3212        ],3213        "maxNewAuctionsPerRun": 30,3214        "maxLotFetchesPerRun": 400,3215        "pendingCap": 6000,3216        "harvestDelayMinutes": 203217      },3218      "capabilities": [3219        "sold_listings",3220        "auction_results",3221        "images",3222        "url_lookup"3223      ],3224      "refreshClass": "normal",3225      "domain": "catawiki.com",3226      "country": "NL",3227      "requires": [],3228      "historicalDepth": "none"3229    },3230    {3231      "id": "cdncoin",3232      "displayName": "Canadian Coin & Currency (Canadian coin & banknote store, CAD)",3233      "sourceId": "cdncoin",3234      "sourceName": "Canadian Coin & Currency",3235      "sourceType": "dealer",3236      "sourceUrl": "https://www.cdncoin.com",3237      "module": "api/cdncoin",3238      "enginePriority": [3239        "api"3240      ],3241      "categories": [3242        "coins",3243        "banknotes",3244        "medals"3245      ],3246      "regions": [3247        "CA"3248      ],3249      "languages": [3250        "en"3251      ],3252      "currency": [3253        "CAD"3254      ],3255      "supportsListings": true,3256      "supportsSold": false,3257      "supportsAuctions": false,3258      "supportsImages": true,3259      "supportsCatalog": false,3260      "supportsPopulation": false,3261      "supportsLookup": true,3262      "refreshFrequencyMinutes": 720,3263      "priority": "medium",3264      "trustScore": 0.75,3265      "attributionRequired": true,3266      "termsUrl": "https://www.cdncoin.com/policies/terms-of-service",3267      "accessNotes": "Canadian Coin & Currency (cdncoin.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 17 configured collections (certified, pcgs, canadian-collections, world-coins, us-coins, ancient-coins, pre-confederation-tokens, royal-canadian-mint-products-2 … (+9 more, see config.collections)) and /products/<handle>.json for URL lookups (~23k products; 4.7k certified (ICCS/PCGS/PMG), 4k Canadian paper money). 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 — bullion (silver/gold), gift/theme collections (\"for nature lovers\"…), supplies, new-arrivals umbrella. No personal data is collected; seller = the store itself.",3268      "enabled": true,3269      "schemaVersion": "1.0",3270      "config": {3271        "currency": "CAD",3272        "market": "CA",3273        "seller": "Canadian Coin & Currency",3274        "location": "Richmond Hill, ON, Canada",3275        "collections": [3276          {3277            "handle": "certified",3278            "categorySlug": "coins"3279          },3280          {3281            "handle": "pcgs",3282            "categorySlug": "coins"3283          },3284          {3285            "handle": "canadian-collections",3286            "categorySlug": "coins"3287          },3288          {3289            "handle": "world-coins",3290            "categorySlug": "coins"3291          },3292          {3293            "handle": "us-coins",3294            "categorySlug": "coins"3295          },3296          {3297            "handle": "ancient-coins",3298            "categorySlug": "coins"3299          },3300          {3301            "handle": "pre-confederation-tokens",3302            "categorySlug": "coins"3303          },3304          {3305            "handle": "royal-canadian-mint-products-2",3306            "categorySlug": "coins"3307          },3308          {3309            "handle": "canadian-paper-money",3310            "categorySlug": "banknotes"3311          },3312          {3313            "handle": "pmg",3314            "categorySlug": "banknotes"3315          },3316          {3317            "handle": "world-paper-money",3318            "categorySlug": "banknotes"3319          },3320          {3321            "handle": "us-paper-money",3322            "categorySlug": "banknotes"3323          },3324          {3325            "handle": "replacement-notes",3326            "categorySlug": "banknotes"3327          },3328          {3329            "handle": "bank-of-canada-1937",3330            "categorySlug": "banknotes"3331          },3332          {3333            "handle": "dominion-province-of-canada",3334            "categorySlug": "banknotes"3335          },3336          {3337            "handle": "chartered",3338            "categorySlug": "banknotes"3339          },3340          {3341            "handle": "medals-exonumia",3342            "categorySlug": "medals"3343          }3344        ],3345        "rules": [3346          {3347            "match": "\\bPMG\\b|\\bbanknotes?\\b|\\bpaper money\\b|\\| (Canadian Paper Money|World Paper Money|US Paper Money|Chartered Bank Notes?|Dominion of Canada|Bank of Canada)[^|]* \\||\\bBC-\\d|\\bDC-\\d",3348            "categorySlug": "banknotes"3349          },3350          {3351            "match": "\\bmedal(lion)?s?\\b",3352            "categorySlug": "medals"3353          }3354        ],3355        "defaultCategory": null,3356        "exclude": "gift card|supplies|\\balbums?\\b|\\bholders?\\b|\\bcapsules?\\b|catalogue|catalog|magnifier|cleaning|\\bflips?\\b|\\bpages?\\b|\\brolls?\\b|\\bbooks?\\b|\\btubes?\\b|\\bcases?\\b|storage|\\bbinder|\\bloupe\\b|\\bgloves?\\b|\\bscale\\b|\\bmaps?\\b|\\bframe",3357        "keepOutOfStock": true,3358        "fetchBarcodes": false,3359        "wholeShop": false,3360        "pageSize": 2503361      },3362      "capabilities": [3363        "live_listings",3364        "images",3365        "url_lookup"3366      ],3367      "refreshClass": "normal",3368      "domain": "cdncoin.com",3369      "country": "CA",3370      "requires": [],3371      "acquisitionMethod": "Shopify storefront products.json",3372      "historicalDepth": "none"3373    },3374    {3375      "id": "cgc-cards-cert",3376      "displayName": "CGC Cards cert verification",3377      "sourceId": "cgc-cards",3378      "sourceName": "CGC Cards",3379      "sourceType": "grading_company",3380      "sourceUrl": "https://www.cgccards.com/certlookup/",3381      "module": "firecrawl/cgc-cards-cert",3382      "enginePriority": [3383        "firecrawl",3384        "scrapfly"3385      ],3386      "categories": [3387        "pokemon",3388        "magic_the_gathering",3389        "yugioh",3390        "one_piece_card_game",3391        "disney_lorcana",3392        "dragon_ball_tcg",3393        "digimon_tcg",3394        "flesh_and_blood",3395        "trading_cards",3396        "sports_cards",3397        "baseball_cards",3398        "basketball_cards",3399        "football_cards",3400        "hockey_cards",3401        "soccer_cards",3402        "non_sport_cards"3403      ],3404      "regions": [3405        "US"3406      ],3407      "languages": [3408        "en"3409      ],3410      "currency": [3411        "USD"3412      ],3413      "supportsListings": false,3414      "supportsSold": false,3415      "supportsAuctions": false,3416      "supportsImages": true,3417      "supportsCatalog": true,3418      "supportsPopulation": true,3419      "supportsLookup": true,3420      "refreshFrequencyMinutes": 10080,3421      "priority": "medium",3422      "trustScore": 0.95,3423      "attributionRequired": true,3424      "termsUrl": "https://www.cgccards.com/terms-of-use/",3425      "accessNotes": "Reads ONLY the public 'Verify CGC-certified Cards' page https://www.cgccards.com/certlookup/<cert>/ (the QR-code form /CERTLOOKUP/<cert>/0_0/ is accepted by lookup) for supplied cert numbers; no enumeration. cgccards.com/robots.txt: 'User-agent: * Allow: /' (only AhrefsBot is disallowed). Plain HTTP on /certlookup returns a Cloudflare managed-challenge 403, so the page is rendered by Firecrawl (1 credit) with Scrapfly fallback — public, no login. Fields read: cert, card name, game/sport, year, language, card set, card number, grade (legacy 9.5 grades are displayed by CGC as Gem Mint 10 — we store what the page shows), grade date, the two holder images and the on-page 'Total Graded' counts when present (CGC currently shows 'Coming Soon!' for many cards → no population record). Deliberately NOT fetched: the CGC Cards population report / registry pages. A not-found cert yields zero records. Note: the fixtures use cert numbers published on a public collector forum (elitefourum) that point to CGC test-slabs, i.e. real public pages.",3426      "enabled": true,3427      "schemaVersion": "1.0",3428      "config": {3429        "grader": "cgc",3430        "certs": [3431          "4340250003",3432          "4340250001"3433        ],3434        "maxPerRun": 503435      },3436      "capabilities": [3437        "cert_lookup",3438        "grading_population",3439        "catalog",3440        "url_lookup",3441        "images"3442      ],3443      "refreshClass": "archive",3444      "domain": "cgccards.com",3445      "country": "US",3446      "requires": [],3447      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",3448      "historicalDepth": "none"3449    },3450    {3451      "id": "cgc-cert",3452      "displayName": "CGC Comics cert verification",3453      "sourceId": "cgc",3454      "sourceName": "CGC (Certified Guaranty Company) — Comics",3455      "sourceType": "grading_company",3456      "sourceUrl": "https://www.cgccomics.com/certlookup/",3457      "module": "firecrawl/cgc-cert",3458      "enginePriority": [3459        "firecrawl",3460        "scrapfly"3461      ],3462      "categories": [3463        "comics",3464        "marvel_comics",3465        "dc_comics",3466        "independent_comics",3467        "manga"3468      ],3469      "regions": [3470        "US"3471      ],3472      "languages": [3473        "en"3474      ],3475      "currency": [3476        "USD"3477      ],3478      "supportsListings": false,3479      "supportsSold": false,3480      "supportsAuctions": false,3481      "supportsImages": true,3482      "supportsCatalog": true,3483      "supportsPopulation": true,3484      "supportsLookup": true,3485      "refreshFrequencyMinutes": 10080,3486      "priority": "high",3487      "trustScore": 0.95,3488      "attributionRequired": true,3489      "termsUrl": "https://www.cgccomics.com/terms-of-use/",3490      "accessNotes": "Reads ONLY the public 'Verify CGC Certification' page https://www.cgccomics.com/certlookup/<cert>/ (the short form https://www.cgccomics.com/<cert>/ is accepted by lookup) for cert numbers supplied as seeds, config.certs or lookup(); no enumeration. cgccomics.com/robots.txt (200 to our bot) only disallows a list of named scrapers and allows everything else; the site answers plain HTTP on /certlookup with a Cloudflare managed-challenge 403, so the page is rendered with Firecrawl (1 credit) with Scrapfly fallback — the public page any visitor sees, no login (CGC states the lookup is free and needs no account). Fields read: cert, title, issue, issue date/year, publisher, grade, page quality, grade date, label category, art/key comments, grader notes, and the on-page 'Total Graded by CGC: In <grade>: n / In Higher Grades: m' counts (emitted as a partial population_report, population_scope=grade_and_higher). Deliberately NOT fetched: the CGC Census / population report pages (login-gated), registry pages and grader-notes that require a paid membership. A not-found cert yields zero records.",3491      "enabled": true,3492      "schemaVersion": "1.0",3493      "config": {3494        "grader": "cgc",3495        "certs": [3496          "1134755001",3497          "3727616007"3498        ],3499        "maxPerRun": 503500      },3501      "capabilities": [3502        "cert_lookup",3503        "grading_population",3504        "catalog",3505        "url_lookup",3506        "images"3507      ],3508      "refreshClass": "archive",3509      "domain": "cgccomics.com",3510      "country": "US",3511      "requires": [],3512      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",3513      "historicalDepth": "none"3514    },3515    {3516      "id": "chairish",3517      "displayName": "Chairish (vintage furniture, decor, art & jewelry listings)",3518      "sourceId": "chairish",3519      "sourceName": "Chairish",3520      "sourceType": "marketplace",3521      "sourceUrl": "https://www.chairish.com",3522      "module": "api/chairish",3523      "enginePriority": [3524        "api"3525      ],3526      "categories": [3527        "design_furniture",3528        "antiques",3529        "porcelain",3530        "glass_crystal",3531        "silver",3532        "clocks",3533        "art",3534        "contemporary_art",3535        "photography",3536        "jewelry",3537        "other_watches",3538        "luxury_handbags"3539      ],3540      "regions": [3541        "US"3542      ],3543      "languages": [3544        "en"3545      ],3546      "currency": [3547        "USD"3548      ],3549      "supportsListings": true,3550      "supportsSold": false,3551      "supportsAuctions": false,3552      "supportsImages": true,3553      "supportsCatalog": false,3554      "supportsPopulation": false,3555      "supportsLookup": true,3556      "refreshFrequencyMinutes": 720,3557      "priority": "medium",3558      "trustScore": 0.75,3559      "attributionRequired": true,3560      "termsUrl": "https://www.chairish.com/legal",3561      "accessNotes": "Chairish browse pages (/collection/<slug> and /style/<slug>, ?page=N, 48 listings per page) are server-rendered and embed one schema.org Product per listing in a JSON-LD array: name, description, images, brand (designer/maker), color, material, width/depth/height, Offer {price, priceCurrency USD, availability, itemCondition, category path such as 'Furniture > Chairs > Chaises', seller address locality/country}. We read only that JSON-LD block — no search endpoint, no /product/list, /product/grid or /product/data XHRs (all disallowed by robots.txt), no account or cart paths. robots.txt (User-agent: * and named AI bots) disallows /search, /saved-search, /product/list|grid|data|id and account paths; /collection/ and /style/ are allowed. The terms-of-service URL is JS-only (help centre) and could not be reviewed automatically; no anti-bot challenge is served to the honest bot UA (200 OK). Asking prices only (listings, never sales); the seller's business location (city/country shown on every card) is kept as the listing location, no personal data. Category mapping: seed vertical + JSON-LD category + title keywords → design_furniture (default for furniture/lighting), antiques (period/antique evidence), porcelain, glass_crystal, silver, clocks, art/photography, jewelry, watch brands, luxury handbags; rugs/textiles/pillows/wallpaper are skipped. 3 s between requests, 1 in flight; 4 seeds × 2 pages per incremental run, seed rotation via cursor {seedIndex, page}.",3562      "enabled": true,3563      "schemaVersion": "1.0",3564      "config": {3565        "pagesPerSeed": 2,3566        "seedsPerRun": 4,3567        "seeds": [3568          {3569            "path": "/collection/vintage-furniture",3570            "vertical": "furniture"3571          },3572          {3573            "path": "/style/mid-century-modern",3574            "vertical": "furniture"3575          },3576          {3577            "path": "/collection/lighting",3578            "vertical": "lighting"3579          },3580          {3581            "path": "/collection/decor",3582            "vertical": "decor"3583          },3584          {3585            "path": "/collection/tableware-and-barware",3586            "vertical": "tableware"3587          },3588          {3589            "path": "/collection/art",3590            "vertical": "art"3591          },3592          {3593            "path": "/collection/jewelry",3594            "vertical": "jewelry"3595          },3596          {3597            "path": "/collection/watches",3598            "vertical": "watches"3599          },3600          {3601            "path": "/collection/handbags",3602            "slug": "luxury_handbags",3603            "vertical": "fashion"3604          }3605        ]3606      },3607      "capabilities": [3608        "live_listings",3609        "images",3610        "url_lookup"3611      ],3612      "refreshClass": "normal",3613      "domain": "chairish.com",3614      "country": "US",3615      "requires": [],3616      "acquisitionMethod": "public HTML — schema.org Product JSON-LD on browse pages",3617      "historicalDepth": "none"3618    },3619    {3620      "id": "chatterley-luxuries",3621      "displayName": "Chatterley Luxuries (luxury pens & lighters dealer)",3622      "sourceId": "chatterley-luxuries",3623      "sourceName": "Chatterley Luxuries",3624      "sourceType": "dealer",3625      "sourceUrl": "https://chatterleyluxuries.com",3626      "module": "api/chatterley-luxuries",3627      "enginePriority": [3628        "api"3629      ],3630      "categories": [3631        "pens",3632        "lighters"3633      ],3634      "regions": [3635        "US"3636      ],3637      "languages": [3638        "en"3639      ],3640      "currency": [3641        "USD"3642      ],3643      "supportsListings": true,3644      "supportsSold": false,3645      "supportsAuctions": false,3646      "supportsImages": true,3647      "supportsCatalog": false,3648      "supportsPopulation": false,3649      "supportsLookup": false,3650      "refreshFrequencyMinutes": 1440,3651      "priority": "low",3652      "trustScore": 0.75,3653      "attributionRequired": true,3654      "termsUrl": "https://chatterleyluxuries.com/privacy-policy/",3655      "accessNotes": "Chatterley Luxuries is a WooCommerce shop (limited-edition and luxury fountain pens: Montblanc, Pelikan, Pilot/Namiki maki-e, Visconti, Montegrappa, Omas, Scribo, S.T. Dupont pens and lighters, consignments). We read the public, unauthenticated WooCommerce Blocks Store API — /wp-json/wc/store/v1/products/categories and /wp-json/wc/store/v1/products?category=<id>&per_page=100&page=N — exactly what the shop's own front end calls; product pages, cart, account and admin-ajax are never fetched. robots.txt (User-agent: *) allows /wp-json/ and asks for Crawl-delay: 10, which we honour (10 s between requests, one connection). Observation 2026-09-08: with the RareIndexBot UA the server answers the Store API with a 301 to the plain-http URL and drops the query string (pagination impossible), while a standard browser UA receives 200 JSON on HTTPS — the site serves bots a degraded response; connectors/domains.d sets userAgent=browser for this host, the request volume stays tiny (a few pages per day) and the privacy policy (the only legal page published) has no clause on automated access. Asking prices in USD (prices.currency_code, minor units) → listings; only the pens, vintage, consignments and lighters categories are crawled (the 6,900-item 'sold-out editions' archive is intentionally skipped — those are historical asking prices, not sales); ink, leather goods, nibs and accessories are excluded by rule. Category ids resolved by slug at run time.",3656      "enabled": true,3657      "schemaVersion": "1.0",3658      "config": {3659        "currency": "USD",3660        "perPage": 100,3661        "seller": "Chatterley Luxuries",3662        "location": "United States",3663        "keepOutOfStock": true,3664        "exclude": "gift card|\\bink\\b|inks\\b|inkwell|ink well|leather|notebook|paper|\\bnibs?\\b|nib unit|converter|refill|pouch|pen case|pen roll|accessor|bottle|cartridge",3665        "collections": [3666          {3667            "handle": "pens",3668            "categorySlug": "pens",3669            "pages": 33670          },3671          {3672            "handle": "vintage",3673            "categorySlug": "pens",3674            "pages": 13675          },3676          {3677            "handle": "consignments",3678            "categorySlug": "pens",3679            "pages": 23680          },3681          {3682            "handle": "lighters",3683            "categorySlug": "lighters",3684            "pages": 13685          }3686        ],3687        "rules": [3688          {3689            "match": "\\blighter\\b",3690            "categorySlug": "lighters"3691          },3692          {3693            "match": "fountain pen|rollerball|ballpoint|mechanical pencil|pen set",3694            "categorySlug": "pens"3695          }3696        ]3697      },3698      "capabilities": [3699        "live_listings",3700        "images"3701      ],3702      "refreshClass": "normal",3703      "domain": "chatterleyluxuries.com",3704      "country": "US",3705      "requires": [],3706      "acquisitionMethod": "WooCommerce Store API (public JSON)",3707      "historicalDepth": "none"3708    },3709    {3710      "id": "cherrycollectables",3711      "displayName": "Cherry Collectables",3712      "sourceId": "cherrycollectables",3713      "sourceName": "Cherry Collectables",3714      "sourceType": "dealer",3715      "sourceUrl": "https://www.cherrycollectables.com.au",3716      "module": "api/cherrycollectables",3717      "enginePriority": [3718        "api"3719      ],3720      "categories": [3721        "pokemon",3722        "magic_the_gathering",3723        "yugioh",3724        "one_piece_card_game",3725        "digimon_tcg",3726        "flesh_and_blood",3727        "disney_lorcana",3728        "basketball_cards",3729        "football_cards",3730        "soccer_cards",3731        "baseball_cards",3732        "hockey_cards",3733        "f1_cards",3734        "other_sports_cards",3735        "non_sport_cards",3736        "star_wars_tcg",3737        "dragon_ball_tcg",3738        "weiss_schwarz",3739        "final_fantasy_tcg",3740        "other_tcg"3741      ],3742      "regions": [3743        "AU"3744      ],3745      "languages": [3746        "en"3747      ],3748      "currency": [3749        "AUD"3750      ],3751      "supportsListings": true,3752      "supportsSold": false,3753      "supportsAuctions": false,3754      "supportsImages": true,3755      "supportsCatalog": false,3756      "supportsPopulation": false,3757      "supportsLookup": true,3758      "refreshFrequencyMinutes": 720,3759      "priority": "medium",3760      "trustScore": 0.7,3761      "attributionRequired": true,3762      "termsUrl": "https://www.cherrycollectables.com.au/policies/terms-of-service",3763      "accessNotes": "Cherry Collectables (cherrycollectables.com.au) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (pokemon-singles, graded-pkm, psa-10, pokemon-booster-boxes, magic-the-gathering-singles, ygo-singles, one-piece-singles, digimon-singles, flesh-and-blood-singles, lorcana, nba-singles, graded-nba-cards, nfl-singles, soccer-singles, mlb-singles, nhl-singles, all-f1, afl-singles, ufc-singles, wrestling-singles, marvel-singles). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency AUD (/meta.json currency AUD, Shopify.currency rate 1.0), GST included. Graded slabs carry the grader and grade in the title (parsed by parseGradeFromTitle) and in tags (Grader_PSA, grade 10). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",3764      "enabled": true,3765      "schemaVersion": "1.0",3766      "config": {3767        "currency": "AUD",3768        "seller": "Cherry Collectables",3769        "location": null,3770        "collections": [3771          {3772            "handle": "pokemon-singles",3773            "categorySlug": "pokemon",3774            "franchise": "Pokémon"3775          },3776          {3777            "handle": "graded-pkm",3778            "categorySlug": "pokemon",3779            "franchise": "Pokémon"3780          },3781          {3782            "handle": "psa-10",3783            "categorySlug": "pokemon",3784            "franchise": "Pokémon"3785          },3786          {3787            "handle": "pokemon-booster-boxes",3788            "categorySlug": "pokemon",3789            "franchise": "Pokémon"3790          },3791          {3792            "handle": "magic-the-gathering-singles",3793            "categorySlug": "magic_the_gathering",3794            "franchise": "Magic: The Gathering"3795          },3796          {3797            "handle": "ygo-singles",3798            "categorySlug": "yugioh",3799            "franchise": "Yu-Gi-Oh!"3800          },3801          {3802            "handle": "one-piece-singles",3803            "categorySlug": "one_piece_card_game",3804            "franchise": "One Piece"3805          },3806          {3807            "handle": "digimon-singles",3808            "categorySlug": "digimon_tcg",3809            "franchise": "Digimon"3810          },3811          {3812            "handle": "flesh-and-blood-singles",3813            "categorySlug": "flesh_and_blood",3814            "franchise": "Flesh and Blood"3815          },3816          {3817            "handle": "lorcana",3818            "categorySlug": "disney_lorcana",3819            "franchise": "Disney Lorcana"3820          },3821          {3822            "handle": "nba-singles",3823            "categorySlug": "basketball_cards"3824          },3825          {3826            "handle": "graded-nba-cards",3827            "categorySlug": "basketball_cards"3828          },3829          {3830            "handle": "nfl-singles",3831            "categorySlug": "football_cards"3832          },3833          {3834            "handle": "soccer-singles",3835            "categorySlug": "soccer_cards"3836          },3837          {3838            "handle": "mlb-singles",3839            "categorySlug": "baseball_cards"3840          },3841          {3842            "handle": "nhl-singles",3843            "categorySlug": "hockey_cards"3844          },3845          {3846            "handle": "all-f1",3847            "categorySlug": "f1_cards"3848          },3849          {3850            "handle": "afl-singles",3851            "categorySlug": "other_sports_cards"3852          },3853          {3854            "handle": "ufc-singles",3855            "categorySlug": "other_sports_cards"3856          },3857          {3858            "handle": "wrestling-singles",3859            "categorySlug": "other_sports_cards"3860          },3861          {3862            "handle": "marvel-singles",3863            "categorySlug": "non_sport_cards",3864            "franchise": "Marvel"3865          }3866        ],3867        "rules": [3868          {3869            "match": "psa-10|graded-pkm",3870            "categorySlug": "pokemon",3871            "franchise": "Pokémon"3872          },3873          {3874            "match": "star wars:? unlimited",3875            "categorySlug": "star_wars_tcg",3876            "franchise": "Star Wars"3877          },3878          {3879            "match": "lorcana",3880            "categorySlug": "disney_lorcana",3881            "franchise": "Disney Lorcana"3882          },3883          {3884            "match": "one piece (card|tcg|ccg|single|promo|sealed|booster|starter)|\\bop\\d{2}\\b|one-piece-(single|tcg|card)|\\| one piece single",3885            "categorySlug": "one_piece_card_game",3886            "franchise": "One Piece"3887          },3888          {3889            "match": "dragon ?ball (super |z )?(card|tcg|ccg|fusion world)|fusion world|dragonball-super|dragon-ball-super",3890            "categorySlug": "dragon_ball_tcg",3891            "franchise": "Dragon Ball"3892          },3893          {3894            "match": "digimon",3895            "categorySlug": "digimon_tcg",3896            "franchise": "Digimon"3897          },3898          {3899            "match": "flesh (and|&) blood|\\bfab\\b",3900            "categorySlug": "flesh_and_blood",3901            "franchise": "Flesh and Blood"3902          },3903          {3904            "match": "wei(ss|ß) schwarz",3905            "categorySlug": "weiss_schwarz"3906          },3907          {3908            "match": "final fantasy (tcg|trading card|opus)|\\bopus (i{1,3}|iv|v|vi{0,3}|ix|x{1,2}|xi{1,3}|xiv|xv)\\b|\\bfftcg\\b",3909            "categorySlug": "final_fantasy_tcg",3910            "franchise": "Final Fantasy"3911          },3912          {3913            "match": "yu-?gi-?oh|\\bygo\\b|yugioh",3914            "categorySlug": "yugioh",3915            "franchise": "Yu-Gi-Oh!"3916          },3917          {3918            "match": "pok[eé]mon|\\bpkm\\b",3919            "categorySlug": "pokemon",3920            "franchise": "Pokémon"3921          },3922          {3923            "match": "cardfight|vanguard|battle spirits|union arena|riftbound|grand archive|gundam (card|tcg)|hololive (official )?card|shadowverse|sorcery:? contested|\\baltered\\b|elestrals|alpha clash|universus|my hero academia (ccg|tcg|single)|akora|kryptik|cyberpunk tcg|neuroscape|beyblade x (tcg|card)",3924            "categorySlug": "other_tcg"3925          },3926          {3927            "match": "magic:? the gathering|\\bmtg\\b|magic the gathering singles",3928            "categorySlug": "magic_the_gathering",3929            "franchise": "Magic: The Gathering"3930          }3931        ],3932        "defaultCategory": null,3933        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|\\bbreak\\b|breaks\\b|opening\\b|\\bspot\\b|random team|\\bslot\\b|filler|group break|personal break|\\bpyt\\b|ebay\\b",3934        "keepOutOfStock": true,3935        "pageSize": 250,3936        "fetchBarcodes": false,3937        "wholeShop": false3938      },3939      "capabilities": [3940        "live_listings",3941        "images",3942        "url_lookup"3943      ],3944      "refreshClass": "normal",3945      "domain": "cherrycollectables.com.au",3946      "country": "AU",3947      "requires": [],3948      "acquisitionMethod": "Shopify storefront products.json (public JSON)",3949      "historicalDepth": "none"3950    },3951    {3952      "id": "cherrystone",3953      "displayName": "Cherrystone Auctions (prices realized)",3954      "sourceId": "cherrystone",3955      "sourceName": "Cherrystone Philatelic Auctioneers",3956      "sourceType": "auction_house",3957      "sourceUrl": "https://auctions.cherrystoneauctions.com",3958      "module": "firecrawl/cherrystone",3959      "enginePriority": [3960        "firecrawl"3961      ],3962      "categories": [3963        "stamps",3964        "banknotes",3965        "coins"3966      ],3967      "regions": [3968        "US"3969      ],3970      "languages": [3971        "en"3972      ],3973      "currency": [3974        "USD"3975      ],3976      "supportsListings": false,3977      "supportsSold": true,3978      "supportsAuctions": false,3979      "supportsImages": true,3980      "supportsCatalog": false,3981      "supportsPopulation": false,3982      "supportsLookup": false,3983      "refreshFrequencyMinutes": 1440,3984      "priority": "medium",3985      "trustScore": 0.9,3986      "attributionRequired": true,3987      "termsUrl": "https://auctions.cherrystoneauctions.com/viewuserdefinedpage.aspx?pn=terms",3988      "accessNotes": "Firecrawl (rawHtml), 1 credit per page; plain HTTPS returns 403 (not bypassed; robots.txt is empty → nothing disallowed). Sources: the auction site home page, which links 'Prices Realized from <sale> - <date>' → catalog.aspx?auctionid=N; the catalog page lists category pages (/Category/<name>-<id>.html?auctionid=N) whose lot cards show lot number, title (with LOT<id>.aspx link), image, 'Final Price: $X' and estimate. Lots with no final price are unsold and skipped. Sale date = the sale date published on the home page (first day of multi-day sales). Cherrystone does not state whether 'Final Price' includes the buyer's premium → buyer_premium_included=null. Categories: stamps by default; banknotes/coins when the lot title says so. 2 s politeness.",3989      "enabled": true,3990      "schemaVersion": "1.0",3991      "config": {3992        "auctionsPerRun": 1,3993        "categoriesPerRun": 253994      },3995      "capabilities": [3996        "sold_listings",3997        "images"3998      ],3999      "refreshClass": "normal",4000      "domain": "auctions.cherrystoneauctions.com",4001      "country": "US",4002      "requires": [],4003      "historicalDepth": "none"4004    },4005    {4006      "id": "chiswick-auctions",4007      "displayName": "Chiswick Auctions (London) — results",4008      "sourceId": "chiswick-auctions",4009      "sourceName": "Chiswick Auctions",4010      "sourceType": "auction_house",4011      "sourceUrl": "https://www.chiswickauctions.co.uk",4012      "module": "api/chiswick-auctions",4013      "enginePriority": [4014        "api"4015      ],4016      "categories": [4017        "jewelry",4018        "other_watches",4019        "rolex",4020        "omega",4021        "silver",4022        "coins",4023        "antiques",4024        "art",4025        "contemporary_art",4026        "photography",4027        "design_furniture",4028        "porcelain",4029        "glass_crystal",4030        "books",4031        "maps",4032        "wine",4033        "whisky",4034        "luxury_handbags",4035        "fashion_streetwear",4036        "vintage_toys",4037        "cameras",4038        "movie_posters",4039        "music_memorabilia"4040      ],4041      "regions": [4042        "GB"4043      ],4044      "languages": [4045        "en"4046      ],4047      "currency": [4048        "GBP"4049      ],4050      "supportsListings": false,4051      "supportsSold": true,4052      "supportsAuctions": true,4053      "supportsImages": true,4054      "supportsCatalog": false,4055      "supportsPopulation": false,4056      "supportsLookup": false,4057      "refreshFrequencyMinutes": 1440,4058      "priority": "low",4059      "trustScore": 0.85,4060      "attributionRequired": true,4061      "termsUrl": "https://www.chiswickauctions.co.uk/terms-and-conditions/",4062      "accessNotes": "Chiswick Auctions (London; jewellery, watches, silver, Asian art, photographs, design, wine) runs on the goauction platform shared with Sworders. Public pages read: /results/ (calendar of past sales with title, date, au id) and /auction/details/<slug>?au=<id>&pn=N&g=1 (lot grid: lot number, title, image, 'Sold for £…'; unsold lots carry no price). The grid does not state hammer vs premium → buyer_premium_included null. robots.txt disallows /account, /admin, /cms/lotdetailspdf, /elmah, /imagebrowser, /language only. 2.5 s politeness; salesPerRun caps incremental runs; resumable backfill over the calendar. No login, no bidder data.",4063      "enabled": true,4064      "schemaVersion": "1.0",4065      "config": {4066        "resultsUrl": "https://www.chiswickauctions.co.uk/results/",4067        "salesPerRun": 24068      },4069      "capabilities": [4070        "sold_listings",4071        "auction_results",4072        "images",4073        "historical_backfill"4074      ],4075      "refreshClass": "normal",4076      "domain": "chiswickauctions.co.uk",4077      "country": "GB",4078      "requires": [],4079      "acquisitionMethod": "server-rendered HTML (goauction platform)",4080      "historicalDepth": "years"4081    },4082    {4083      "id": "christies",4084      "displayName": "Christie's (auction results)",4085      "sourceId": "christies",4086      "sourceName": "Christie's",4087      "sourceType": "auction_house",4088      "sourceUrl": "https://www.christies.com",4089      "module": "api/christies",4090      "enginePriority": [4091        "api"4092      ],4093      "categories": [4094        "rolex",4095        "patek_philippe",4096        "audemars_piguet",4097        "omega",4098        "other_watches",4099        "luxury_handbags",4100        "jewelry",4101        "gemstones",4102        "wine",4103        "whisky",4104        "cognac",4105        "art",4106        "contemporary_art",4107        "photography",4108        "books",4109        "maps",4110        "historical_documents",4111        "antiques",4112        "design_furniture",4113        "scientific_instruments",4114        "fossils",4115        "minerals",4116        "meteorites",4117        "sports_memorabilia",4118        "movie_memorabilia",4119        "music_memorabilia",4120        "sneakers",4121        "vintage_toys",4122        "automobiles"4123      ],4124      "regions": [4125        "US",4126        "GB",4127        "HK",4128        "FR",4129        "CH"4130      ],4131      "languages": [4132        "en"4133      ],4134      "currency": [4135        "USD",4136        "GBP",4137        "HKD",4138        "EUR",4139        "CHF"4140      ],4141      "supportsListings": false,4142      "supportsSold": true,4143      "supportsAuctions": false,4144      "supportsImages": true,4145      "supportsCatalog": false,4146      "supportsPopulation": false,4147      "supportsLookup": false,4148      "refreshFrequencyMinutes": 720,4149      "priority": "high",4150      "trustScore": 0.9,4151      "attributionRequired": true,4152      "termsUrl": "https://www.christies.com/en/help/terms-and-conditions",4153      "accessNotes": "Plain HTTPS JSON (no rendering, no credits) from the two endpoints the public christies.com pages themselves call: /api/discoverywebsite/auctioncalendar/auctionresults?language=en&month=M&year=Y (closed sales of a month with SaleID/SaleNumber, category/location filters and sale totals) and /api/discoverywebsite/auctionpages/lotsearch?language=en&SaleNumber=…&SaleId=…&page=N&pageSize=…&sortby=lotnumber (lots with estimate, price_realised, dates, image, lot url; max ~84 lots per page). christies.com/robots.txt (User-agent: *) disallows */search, */AjaxPages, */lotimages, */mychristies and similar — none of these paths are used. Prices realised are published by Christie's inclusive of buyer's premium → buyerPremiumIncluded=true; currency comes from price_realised_txt (e.g. 'GBP 190,500'); sale date = the lot's end_date. Categories come from the sale's category filter labels plus title keywords; unmapped lots keep the family suggested by the sale category. Upcoming lots are not exposed by these endpoints (calendar of future sales is a different client app), so supportsAuctions=false. Note: christies.com's edge drops requests whose User-Agent contains a URL or an e-mail address, so the connector identifies itself as 'RareIndex/0.1 (market data research; contact data at rareindex.io)' — no browser impersonation.",4154      "enabled": true,4155      "schemaVersion": "1.0",4156      "config": {4157        "categoryLabels": [4158          "Jewellery, Watches & Handbags",4159          "Wines & Spirits",4160          "Collectibles",4161          "Books & Manuscripts",4162          "Science and Natural History",4163          "Photographs & Prints",4164          "Fine Art",4165          "Furniture & Decorative Art",4166          "Antiquities",4167          "Asian Art",4168          "Design",4169          "Cars"4170        ],4171        "monthsPerRun": 2,4172        "backfillMonths": 36,4173        "maxSalesPerRun": 30,4174        "pageSize": 844175      },4176      "capabilities": [4177        "sold_listings",4178        "images"4179      ],4180      "refreshClass": "normal",4181      "domain": "christies.com",4182      "country": "US",4183      "requires": [],4184      "historicalDepth": "none"4185    },4186    {4187      "id": "chronext",4188      "displayName": "CHRONEXT (certified pre-owned watches — listings)",4189      "sourceId": "chronext",4190      "sourceName": "CHRONEXT",4191      "sourceType": "dealer",4192      "sourceUrl": "https://www.chronext.com",4193      "module": "api/chronext",4194      "enginePriority": [4195        "api",4196        "firecrawl"4197      ],4198      "categories": [4199        "watches",4200        "rolex",4201        "patek_philippe",4202        "audemars_piguet",4203        "omega",4204        "other_watches"4205      ],4206      "regions": [4207        "DE",4208        "EU",4209        "global"4210      ],4211      "languages": [4212        "en"4213      ],4214      "currency": [4215        "USD",4216        "EUR",4217        "GBP",4218        "CHF"4219      ],4220      "supportsListings": true,4221      "supportsSold": false,4222      "supportsAuctions": false,4223      "supportsImages": true,4224      "supportsCatalog": false,4225      "supportsPopulation": false,4226      "supportsLookup": true,4227      "refreshFrequencyMinutes": 720,4228      "priority": "medium",4229      "trustScore": 0.8,4230      "attributionRequired": true,4231      "termsUrl": "https://www.chronext.com/terms-and-conditions",4232      "accessNotes": "Public category pages (`/rolex/submariner`, `/omega/speedmaster`, … from config.seeds; ≈3.7 MB each, server-rendered) parsed with cheerio: one `.product-tile` per watch with brand, model, reference, displayed price (currency follows the requesting region, e.g. 'USD 4,380' from North America, EUR from the EU — stored as parsed, never converted), condition label (Like New / Very Good / Good), image and product URL `/brand/model/reference/V<id>`. Pagination follows the page's own `offset` links (24 tiles per page, pagesPerSeed cap). Product pages (schema.org Product: sku, mpn, brand, offers price/currency/availability/itemCondition) are fetched only for URL lookup. robots.txt (verified 2026-09-08) allows these paths and disallows checkout, cart, campaign and the two-letter country mirrors (/de/, /fr/ … which we never request). Asking prices are listings, never sales. No account, cart or checkout traffic; honest RareIndexBot UA over plain HTTPS, 4 s between requests, concurrency 1.",4233      "enabled": true,4234      "schemaVersion": "1.0",4235      "config": {4236        "seeds": [4237          "/rolex/submariner",4238          "/rolex/datejust",4239          "/rolex/cosmograph-daytona",4240          "/rolex/gmt-master-ii",4241          "/rolex/day-date",4242          "/rolex/explorer",4243          "/omega/speedmaster",4244          "/omega/seamaster",4245          "/patek-philippe/nautilus",4246          "/patek-philippe/aquanaut",4247          "/audemars-piguet/royal-oak",4248          "/tudor/black-bay",4249          "/cartier/santos",4250          "/breitling/navitimer",4251          "/iwc/portugieser",4252          "/jaeger-lecoultre/reverso",4253          "/panerai/luminor",4254          "/grand-seiko"4255        ],4256        "pagesPerSeed": 14257      },4258      "capabilities": [4259        "live_listings",4260        "images",4261        "url_lookup"4262      ],4263      "refreshClass": "normal",4264      "domain": "chronext.com",4265      "country": "DE",4266      "requires": [],4267      "acquisitionMethod": "server-rendered category tiles + schema.org Product JSON-LD, direct HTTP",4268      "historicalDepth": "none"4269    },4270    {4271      "id": "chrono24",4272      "displayName": "Chrono24",4273      "sourceId": "chrono24",4274      "sourceName": "Chrono24",4275      "sourceType": "marketplace",4276      "sourceUrl": "https://www.chrono24.com",4277      "module": "scrapfly/chrono24",4278      "enginePriority": [4279        "scrapfly",4280        "firecrawl"4281      ],4282      "categories": [4283        "watches",4284        "rolex",4285        "patek_philippe",4286        "audemars_piguet",4287        "omega",4288        "other_watches"4289      ],4290      "regions": [4291        "global"4292      ],4293      "languages": [4294        "en"4295      ],4296      "currency": [4297        "USD"4298      ],4299      "supportsListings": true,4300      "supportsSold": false,4301      "supportsAuctions": false,4302      "supportsImages": true,4303      "supportsCatalog": false,4304      "supportsPopulation": false,4305      "supportsLookup": false,4306      "refreshFrequencyMinutes": 720,4307      "priority": "high",4308      "trustScore": 0.7,4309      "attributionRequired": true,4310      "termsUrl": "https://www.chrono24.com/info/terms-of-use.htm",4311      "accessNotes": "Public model listing pages (e.g. /rolex/daytona--mod2.htm) fetched through Scrapfly without JS rendering (Cloudflare shield → ~40 credits/page); robots.txt allows these paths (Crawl-delay 0.1). Each page embeds a schema.org ItemList of Offers (name, price in the site currency, image, listing URL) — we store asking prices as listings only, never as sales. No login, no per-listing detail fetch (seller details stay on Chrono24). Model pages are configured in config.seeds; pagination via --modN-P.htm.",4312      "enabled": true,4313      "schemaVersion": "1.0",4314      "config": {4315        "seeds": [4316          "/rolex/daytona--mod2.htm",4317          "/rolex/submariner--mod1.htm",4318          "/rolex/gmt-master-ii--mod3.htm",4319          "/rolex/datejust--mod4.htm",4320          "/rolex/day-date--mod6.htm",4321          "/rolex/explorer--mod8.htm",4322          "/patekphilippe/nautilus--mod15.htm",4323          "/patekphilippe/aquanaut--mod16.htm",4324          "/patekphilippe/calatrava--mod14.htm",4325          "/audemarspiguet/royal-oak--mod20.htm",4326          "/audemarspiguet/royal-oak-offshore--mod21.htm",4327          "/omega/speedmaster--mod24.htm",4328          "/omega/seamaster--mod22.htm",4329          "/cartier/santos--mod38.htm",4330          "/tudor/black-bay--mod1128.htm",4331          "/vacheronconstantin/overseas--mod1024.htm"4332        ],4333        "pagesPerSeed": 2,4334        "pageSize": 1204335      },4336      "capabilities": [4337        "live_listings",4338        "images"4339      ],4340      "refreshClass": "normal",4341      "domain": "chrono24.com",4342      "country": "global",4343      "requires": [],4344      "historicalDepth": "none"4345    },4346    {4347      "id": "clean-sweep",4348      "displayName": "Clean Sweep Auctions (past results)",4349      "sourceId": "clean-sweep",4350      "sourceName": "Clean Sweep Auctions",4351      "sourceType": "auction_house",4352      "sourceUrl": "https://www.cleansweepauctions.com",4353      "module": "api/clean-sweep",4354      "enginePriority": [4355        "api"4356      ],4357      "categories": [4358        "baseball_cards",4359        "basketball_cards",4360        "football_cards",4361        "hockey_cards",4362        "other_sports_cards",4363        "sports_memorabilia",4364        "autographs"4365      ],4366      "regions": [4367        "US"4368      ],4369      "languages": [4370        "en"4371      ],4372      "currency": [4373        "USD"4374      ],4375      "supportsListings": false,4376      "supportsSold": true,4377      "supportsAuctions": false,4378      "supportsImages": true,4379      "supportsCatalog": false,4380      "supportsPopulation": false,4381      "supportsLookup": false,4382      "refreshFrequencyMinutes": 1440,4383      "priority": "medium",4384      "trustScore": 0.8,4385      "attributionRequired": true,4386      "termsUrl": "https://www.cleansweepauctions.com/auction-rules",4387      "accessNotes": "Plain HTTPS with the RareIndex user agent on www.cleansweepauctions.com (robots.txt: Disallow only account/cart/checkout/forum/customer paths, no Crawl-delay; we keep 2 s between requests). Pages read: /past-auctions (one entry per closed monthly auction, April 2008 → present, ~200 months), /past-auctions/<month-year>?page=N (50 lot links per page, server-rendered) and each lot page /past-auctions/<month-year>/<slug>, whose 'Winning bid: $X' is the hammer price; the auction rules add a 22 % buyer's premium on top, so sales are stored with buyerPremiumIncluded=false and buyers_premium_pct=22 in metadata. The archive dates lots only by auction month: saleDate is the first day of that month (UTC) with metadata.sale_date_precision='month' and confidence 0.7. Titles often end in a bare grade number without a grading company; no grader is inferred in that case. The live-auction host marketplace.cleansweepauctions.com (Crawl-delay 15, AJAX price grid, bidder accounts) is never crawled — only its public image URLs are referenced. 0 credits.",4388      "enabled": true,4389      "schemaVersion": "1.0",4390      "config": {4391        "lotsPerRun": 150,4392        "pagesPerRun": 44393      },4394      "capabilities": [4395        "sold_listings",4396        "images",4397        "historical_backfill"4398      ],4399      "refreshClass": "normal",4400      "domain": "cleansweepauctions.com",4401      "country": "US",4402      "requires": [],4403      "acquisitionMethod": "server-rendered past-auction pages (HTML)",4404      "historicalDepth": "decades"4405    },4406    {4407      "id": "collecting-cars",4408      "displayName": "Collecting Cars (results)",4409      "sourceId": "collecting-cars",4410      "sourceName": "Collecting Cars",4411      "sourceType": "auction_house",4412      "sourceUrl": "https://collectingcars.com",4413      "module": "firecrawl/collecting-cars",4414      "enginePriority": [4415        "firecrawl"4416      ],4417      "categories": [4418        "automobiles",4419        "motorcycles",4420        "automotive_memorabilia"4421      ],4422      "regions": [4423        "GB",4424        "EU",4425        "AU",4426        "US",4427        "AE"4428      ],4429      "languages": [4430        "en"4431      ],4432      "currency": [4433        "GBP",4434        "EUR",4435        "AUD",4436        "USD",4437        "AED"4438      ],4439      "supportsListings": false,4440      "supportsSold": true,4441      "supportsAuctions": false,4442      "supportsImages": true,4443      "supportsCatalog": false,4444      "supportsPopulation": false,4445      "supportsLookup": false,4446      "refreshFrequencyMinutes": 720,4447      "priority": "low",4448      "trustScore": 0.9,4449      "attributionRequired": true,4450      "termsUrl": "https://collectingcars.com/terms-and-conditions",4451      "accessNotes": "Public results list (/sold?page=N, 48 lots per page, ~26k sold lots, newest first) rendered through Firecrawl (plain HTTPS gets a Cloudflare interstitial; not bypassed). robots.txt: Allow / for generic agents (named AI-training crawlers are disallowed; RareIndexBot is not one — we only record public sale facts and link back). Most sold prices are shown only to signed-in users ('Sign in to view sold price'); we NEVER log in, so only lots whose price is displayed publicly (a minority, typically the most recent/featured results) become sales — expect a few sales per page. Prices are hammer prices — the buyer's premium is charged on top → buyer_premium_included=false. 1 Firecrawl credit per page, 2 s politeness delay.",4452      "enabled": true,4453      "schemaVersion": "1.0",4454      "config": {4455        "pagesPerRun": 104456      },4457      "capabilities": [4458        "sold_listings",4459        "images"4460      ],4461      "refreshClass": "normal",4462      "domain": "collectingcars.com",4463      "country": "GB",4464      "requires": [],4465      "historicalDepth": "none"4466    },4467    {4468      "id": "colonial-acres",4469      "displayName": "Colonial Acres Coins (Canadian coin & banknote store, CAD)",4470      "sourceId": "colonial-acres",4471      "sourceName": "Colonial Acres Coins",4472      "sourceType": "dealer",4473      "sourceUrl": "https://www.colonialacres.com",4474      "module": "api/colonial-acres",4475      "enginePriority": [4476        "api"4477      ],4478      "categories": [4479        "coins",4480        "medals",4481        "banknotes"4482      ],4483      "regions": [4484        "CA"4485      ],4486      "languages": [4487        "en"4488      ],4489      "currency": [4490        "CAD"4491      ],4492      "supportsListings": true,4493      "supportsSold": false,4494      "supportsAuctions": false,4495      "supportsImages": true,4496      "supportsCatalog": false,4497      "supportsPopulation": false,4498      "supportsLookup": true,4499      "refreshFrequencyMinutes": 720,4500      "priority": "medium",4501      "trustScore": 0.75,4502      "attributionRequired": true,4503      "termsUrl": "https://www.colonialacres.com/policies/terms-of-service",4504      "accessNotes": "Colonial Acres Coins (colonialacres.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 32 configured collections (1-cent, 5-cents, 10-cents, 25-cents, 50-cents, dollar, canada-deals-on-decimal, usa-deals-on-decimal … (+24 more, see config.collections)) and /products/<handle>.json for URL lookups (~15k Canadian decimal coins by denomination, ~2.5k Bank of Canada notes). 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; extra merchant rules only target Nutch (Disallow: /) and Ahrefs/MJ12 (Crawl-delay: 10), not User-agent *. 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 — bullion (silver/copper rounds, bars, bank rolls), RCM year/complete sets and gift sets, coin supplies, catalogues. No personal data is collected; seller = the store itself.",4505      "enabled": true,4506      "schemaVersion": "1.0",4507      "config": {4508        "currency": "CAD",4509        "market": "CA",4510        "seller": "Colonial Acres Coins",4511        "location": "Kitchener, ON, Canada",4512        "collections": [4513          {4514            "handle": "1-cent",4515            "categorySlug": "coins"4516          },4517          {4518            "handle": "5-cents",4519            "categorySlug": "coins"4520          },4521          {4522            "handle": "10-cents",4523            "categorySlug": "coins"4524          },4525          {4526            "handle": "25-cents",4527            "categorySlug": "coins"4528          },4529          {4530            "handle": "50-cents",4531            "categorySlug": "coins"4532          },4533          {4534            "handle": "dollar",4535            "categorySlug": "coins"4536          },4537          {4538            "handle": "canada-deals-on-decimal",4539            "categorySlug": "coins"4540          },4541          {4542            "handle": "usa-deals-on-decimal",4543            "categorySlug": "coins"4544          },4545          {4546            "handle": "world-deals-on-decimal",4547            "categorySlug": "coins"4548          },4549          {4550            "handle": "canada-proof-silver-dollars-1971-date",4551            "categorySlug": "coins"4552          },4553          {4554            "handle": "bank-tokens",4555            "categorySlug": "coins"4556          },4557          {4558            "handle": "province-of-canada",4559            "categorySlug": "coins"4560          },4561          {4562            "handle": "lower-canada",4563            "categorySlug": "coins"4564          },4565          {4566            "handle": "canada-tokens-medallions",4567            "categorySlug": "medals"4568          },4569          {4570            "handle": "deals-on-paper-money",4571            "categorySlug": "banknotes"4572          },4573          {4574            "handle": "1-notes-1935-1937",4575            "categorySlug": "banknotes"4576          },4577          {4578            "handle": "1-notes-1973",4579            "categorySlug": "banknotes"4580          },4581          {4582            "handle": "2-notes-1935-1954",4583            "categorySlug": "banknotes"4584          },4585          {4586            "handle": "2-notes-1974",4587            "categorySlug": "banknotes"4588          },4589          {4590            "handle": "2-notes-1986",4591            "categorySlug": "banknotes"4592          },4593          {4594            "handle": "5-notes-1935-1954",4595            "categorySlug": "banknotes"4596          },4597          {4598            "handle": "5-notes-2001-date",4599            "categorySlug": "banknotes"4600          },4601          {4602            "handle": "10-notes-1935-1954",4603            "categorySlug": "banknotes"4604          },4605          {4606            "handle": "10-notes-1971-1989",4607            "categorySlug": "banknotes"4608          },4609          {4610            "handle": "20-notes-1935-1979",4611            "categorySlug": "banknotes"4612          },4613          {4614            "handle": "20-notes-1991",4615            "categorySlug": "banknotes"4616          },4617          {4618            "handle": "50-notes-1935-date",4619            "categorySlug": "banknotes"4620          },4621          {4622            "handle": "100-notes-1935-date",4623            "categorySlug": "banknotes"4624          },4625          {4626            "handle": "bc-37",4627            "categorySlug": "banknotes"4628          },4629          {4630            "handle": "bc-56a",4631            "categorySlug": "banknotes"4632          },4633          {4634            "handle": "bc-56b",4635            "categorySlug": "banknotes"4636          },4637          {4638            "handle": "bc-56c",4639            "categorySlug": "banknotes"4640          }4641        ],4642        "rules": [4643          {4644            "match": "\\| (Paper Money|Deals on Paper|Certified Paper Money|Paper Money Sets) \\||\\bBC-\\d|\\$\\d+ Notes? \\d{4}|\\bbanknotes?\\b|\\bpaper money\\b",4645            "categorySlug": "banknotes"4646          },4647          {4648            "match": "\\bmedal(lion)?s?\\b",4649            "categorySlug": "medals"4650          },4651          {4652            "match": "\\btokens?\\b",4653            "categorySlug": "coins"4654          }4655        ],4656        "defaultCategory": null,4657        "exclude": "gift card|supplies|\\balbums?\\b|\\bholders?\\b|\\bcapsules?\\b|catalogue|catalog|magnifier|cleaning|\\bflips?\\b|\\bpages?\\b|\\brolls?\\b|\\bbooks?\\b|\\btubes?\\b|\\bcases?\\b|storage|\\bbinder|\\bloupe\\b|\\bgloves?\\b|\\bscale\\b|\\bmaps?\\b|\\bframe",4658        "keepOutOfStock": true,4659        "fetchBarcodes": false,4660        "wholeShop": false,4661        "pageSize": 2504662      },4663      "capabilities": [4664        "live_listings",4665        "images",4666        "url_lookup"4667      ],4668      "refreshClass": "normal",4669      "domain": "colonialacres.com",4670      "country": "CA",4671      "requires": [],4672      "acquisitionMethod": "Shopify storefront products.json",4673      "historicalDepth": "none"4674    },4675    {4676      "id": "comc",4677      "displayName": "COMC (Check Out My Cards)",4678      "sourceId": "comc",4679      "sourceName": "COMC",4680      "sourceType": "marketplace",4681      "sourceUrl": "https://www.comc.com",4682      "module": "firecrawl/comc",4683      "enginePriority": [4684        "firecrawl"4685      ],4686      "categories": [4687        "sports_cards",4688        "baseball_cards",4689        "basketball_cards",4690        "football_cards",4691        "hockey_cards",4692        "soccer_cards",4693        "other_sports_cards",4694        "pokemon",4695        "magic_the_gathering",4696        "yugioh",4697        "non_sport_cards"4698      ],4699      "regions": [4700        "US"4701      ],4702      "languages": [4703        "en"4704      ],4705      "currency": [4706        "USD"4707      ],4708      "supportsListings": true,4709      "supportsSold": false,4710      "supportsAuctions": false,4711      "supportsImages": true,4712      "supportsCatalog": false,4713      "supportsPopulation": false,4714      "supportsLookup": false,4715      "refreshFrequencyMinutes": 1440,4716      "priority": "medium",4717      "trustScore": 0.75,4718      "attributionRequired": true,4719      "termsUrl": "https://www.comc.com/Legal",4720      "accessNotes": "COMC's category browse pages (/Cards/<Sport>/<Year>/<Set>) are public and allowed by robots.txt (only /Search/, /ItemDetails/, /Item/ and account paths are disallowed — item detail pages are therefore never fetched, only linked). Plain HTTP returns 403 to non-browser agents; pages are rendered through Firecrawl (1 credit per 100-listing page). Each listing row gives set/year/number, player, the grade in brackets ([PSA 10 GEM MT], [CSG 10 Gem Mint]) and the asking price (USD); sold-out items are excluded by default. Asking prices are listings, never sales. Seeds and pages per seed are configurable.",4721      "enabled": true,4722      "schemaVersion": "1.0",4723      "config": {4724        "seeds": [4725          "Cards/Basketball/1986/Fleer",4726          "Cards/Basketball/2003/Topps_Chrome",4727          "Cards/Basketball/2018/Panini_Prizm",4728          "Cards/Baseball/1952/Topps",4729          "Cards/Baseball/1989/Upper_Deck",4730          "Cards/Baseball/2011/Topps_Update",4731          "Cards/Football/2000/Playoff_Contenders",4732          "Cards/Football/2017/Panini_Prizm",4733          "Cards/Hockey/1979/O-Pee-Chee",4734          "Cards/Hockey/2005/Upper_Deck",4735          "Cards/Soccer/2018/Panini_Prizm_World_Cup",4736          "Cards/Pokemon/1999/Base_Set",4737          "Cards/Magic_The_Gathering",4738          "Cards/Yu-Gi-Oh"4739        ],4740        "pagesPerSeed": 24741      },4742      "capabilities": [4743        "live_listings",4744        "images"4745      ],4746      "refreshClass": "normal",4747      "domain": "comc.com",4748      "country": "US",4749      "requires": [],4750      "historicalDepth": "none"4751    },4752    {4753      "id": "comicconnect",4754      "displayName": "ComicConnect (sold archive)",4755      "sourceId": "comicconnect",4756      "sourceName": "ComicConnect",4757      "sourceType": "auction_house",4758      "sourceUrl": "https://www.comicconnect.com",4759      "module": "api/comicconnect",4760      "enginePriority": [4761        "api",4762        "firecrawl",4763        "scrapfly"4764      ],4765      "categories": [4766        "comics",4767        "marvel_comics",4768        "dc_comics",4769        "independent_comics"4770      ],4771      "regions": [4772        "US"4773      ],4774      "languages": [4775        "en"4776      ],4777      "currency": [4778        "USD"4779      ],4780      "supportsListings": false,4781      "supportsSold": true,4782      "supportsAuctions": true,4783      "supportsImages": true,4784      "supportsCatalog": false,4785      "supportsPopulation": false,4786      "supportsLookup": false,4787      "refreshFrequencyMinutes": 720,4788      "priority": "high",4789      "trustScore": 0.9,4790      "attributionRequired": true,4791      "termsUrl": "https://www.comicconnect.com/terms",4792      "accessNotes": "Public sold archive (/browse/comics/?filtertype=Sold, ~479k results, 20 per page) fetched over plain HTTPS with the RareIndex user agent. robots.txt: Allow / with Content-Signal search=yes, ai-train=no (we only index sale facts and link back). Each card exposes title, publisher + grade, sold date/time, 'Sold For' price and whether a 15% buyer's premium applies (bp attribute) — we store hammer price with buyer_premium_included=false and keep the premium note in metadata. No login, no bidder data. 1.5 s politeness delay.",4793      "enabled": true,4794      "schemaVersion": "1.0",4795      "config": {4796        "browsePath": "/browse/comics/",4797        "pagesPerRun": 25,4798        "sortType": "ended_desc"4799      },4800      "capabilities": [4801        "sold_listings",4802        "auction_results",4803        "images"4804      ],4805      "refreshClass": "normal",4806      "domain": "comicconnect.com",4807      "country": "US",4808      "requires": [],4809      "historicalDepth": "none"4810    },4811    {4812      "id": "comiclink",4813      "displayName": "ComicLink (auction results archive)",4814      "sourceId": "comiclink",4815      "sourceName": "ComicLink",4816      "sourceType": "auction_house",4817      "sourceUrl": "https://www.comiclink.com",4818      "module": "scrapfly/comiclink",4819      "enginePriority": [4820        "scrapfly"4821      ],4822      "categories": [4823        "comics",4824        "marvel_comics",4825        "dc_comics",4826        "independent_comics",4827        "art"4828      ],4829      "regions": [4830        "US"4831      ],4832      "languages": [4833        "en"4834      ],4835      "currency": [4836        "USD"4837      ],4838      "supportsListings": false,4839      "supportsSold": true,4840      "supportsAuctions": true,4841      "supportsImages": true,4842      "supportsCatalog": false,4843      "supportsPopulation": false,4844      "supportsLookup": false,4845      "refreshFrequencyMinutes": 10080,4846      "priority": "high",4847      "trustScore": 0.85,4848      "attributionRequired": true,4849      "termsUrl": "https://www.comiclink.com/TermsConditionsBuying.asp",4850      "accessNotes": "Reads two kinds of public pages only: the auction schedule (/auctions/auctionschedule.asp, 'Record-Setting Auction Results' section listing every past session since 2015 with its month range, e.g. 'Spring Featured: Comics (5-6/26)') and the per-session results pages (/results/generate_highlights.asp?output=<code>, ~300 sold books each as 'TITLE #N / SOLD in CGC 9.4 NM / $1,365' with a cover image and a link to the item page). robots.txt (Cloudflare managed): `User-agent: *` Allow: / with Content-Signal search=yes, ai-train=no — we store sale facts and link back. Every page (even robots-allowed ones) is served behind a Cloudflare managed JavaScript challenge to plain HTTP clients, so pages are fetched through Scrapfly without JS rendering (~1 credit per page, 3 s politeness, concurrency 1). Item pages (/auctions/item.asp?id=N) show the end date but hide the price behind a login ('Current Bid: Sign-In') and are therefore NOT fetched; the exchange, bidder histories, ComicTrack and account areas are never touched. Dates: the results pages carry no per-lot date, so saleDate = first day of the session's closing month from the schedule label (metadata.sale_date_precision='month', confidence 0.7); sessions whose label has no month are skipped. ComicLink does not state on these pages whether a buyer's premium applies → buyerPremiumIncluded=null. Art-only sessions are skipped unless config.includeArtSessions=true; original-art items inside mixed 'Premium Comics and Art' sessions are categorised as art and flagged metadata.comic_art.",4851      "enabled": true,4852      "schemaVersion": "1.0",4853      "config": {4854        "sessionsPerRun": 2,4855        "backfillSessionsPerRun": 30,4856        "includeArtSessions": false4857      },4858      "capabilities": [4859        "sold_listings",4860        "auction_results",4861        "images",4862        "historical_backfill"4863      ],4864      "refreshClass": "archive",4865      "domain": "comiclink.com",4866      "country": "US",4867      "requires": [4868        "SCRAPFLY_API_KEY"4869      ],4870      "acquisitionMethod": "Scrapfly (no JS) — public results pages",4871      "historicalDepth": "decades"4872    },4873    {4874      "id": "corinphila",4875      "displayName": "Corinphila Auctions (Zürich) — stamp hammer prices, archive 2016–2024",4876      "sourceId": "corinphila",4877      "sourceName": "Corinphila Auktionen AG",4878      "sourceType": "auction_house",4879      "sourceUrl": "https://corinphila.ch",4880      "module": "api/corinphila",4881      "enginePriority": [4882        "api",4883        "firecrawl"4884      ],4885      "categories": [4886        "stamps"4887      ],4888      "regions": [4889        "CH"4890      ],4891      "languages": [4892        "en",4893        "de"4894      ],4895      "currency": [4896        "CHF"4897      ],4898      "supportsListings": false,4899      "supportsSold": true,4900      "supportsAuctions": false,4901      "supportsImages": true,4902      "supportsCatalog": false,4903      "supportsPopulation": false,4904      "supportsLookup": false,4905      "refreshFrequencyMinutes": 10080,4906      "priority": "low",4907      "trustScore": 0.9,4908      "attributionRequired": true,4909      "termsUrl": "https://corinphila.ch/en/versteigerungsbedingungen/",4910      "accessNotes": "Plain HTTPS with the RareIndex user agent, 0 credits, no login, no anti-bot. robots.txt (corinphila.ch): Disallow /geheim, *ajax=1, *admin=1; Crawl-Delay 10 → the connector waits 10 s between requests and reads ≤ 20 pages per run. Pages read: the archive list (/en/_pages/&action=show&id=211 → auction ids 12–28, 2016–2024), the auction overview (/en/_auctions/&action=showAuctionOverview&auctionID=N: catalogue parts with lot counts and the c4msEnv.auctionData JSON giving currency CHF, start/end dates and status) and the lot lists (/en/_auctions/&action=showLots&auctionID=N&catalogPart=P&show_all_lots=1&page=K, 100 lots per page: lot number, country, description, 'Starting bid', 'Hammer price : 260.00 CHF' or 'not sold', condition icons, CloudFront thumbnails). Sales are hammer prices in CHF (buyer_premium_included=false); unsold lots are skipped; sale date = auction start date. Not fetched: the live catalogue on auction.corinphila.ch (WordPress + admin-ajax JS listing), the PDF result lists, bidding or account pages.",4911      "enabled": true,4912      "schemaVersion": "1.0",4913      "config": {4914        "auctionsPerRun": 1,4915        "pagesPerRun": 204916      },4917      "capabilities": [4918        "sold_listings",4919        "images",4920        "historical_backfill"4921      ],4922      "refreshClass": "archive",4923      "domain": "corinphila.ch",4924      "country": "CH",4925      "requires": [],4926      "acquisitionMethod": "Static HTML archive lot lists (c4ms)",4927      "historicalDepth": "years"4928    },4929    {4930      "id": "crepslocker",4931      "displayName": "Crepslocker",4932      "sourceId": "crepslocker",4933      "sourceName": "Crepslocker",4934      "sourceType": "dealer",4935      "sourceUrl": "https://www.crepslocker.com",4936      "module": "api/crepslocker",4937      "enginePriority": [4938        "api"4939      ],4940      "categories": [4941        "sneakers",4942        "nike_jordan",4943        "adidas_yeezy",4944        "other_watches",4945        "pokemon",4946        "designer_toys",4947        "rolex",4948        "omega",4949        "patek_philippe",4950        "audemars_piguet",4951        "new_balance_asics_other"4952      ],4953      "regions": [4954        "GB"4955      ],4956      "languages": [4957        "en"4958      ],4959      "currency": [4960        "GBP"4961      ],4962      "supportsListings": true,4963      "supportsSold": false,4964      "supportsAuctions": false,4965      "supportsImages": true,4966      "supportsCatalog": false,4967      "supportsPopulation": false,4968      "supportsLookup": true,4969      "refreshFrequencyMinutes": 720,4970      "priority": "medium",4971      "trustScore": 0.65,4972      "attributionRequired": true,4973      "termsUrl": "https://www.crepslocker.com/policies/terms-of-service",4974      "accessNotes": "Crepslocker (crepslocker.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (footwear, air-jordan, nike-dunk, yeezy-trainers, preloved-footwear, watches, pokemon, labubu-by-pop-mart). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency GBP (/meta.json currency GBP, Shopify.currency rate 1.0). \"Preloved -\" titles are pre-owned pairs; their condition tag (e.g. \"Condition: Very good\") is kept in metadata.tags. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",4975      "enabled": true,4976      "schemaVersion": "1.0",4977      "config": {4978        "currency": "GBP",4979        "seller": "Crepslocker",4980        "location": null,4981        "collections": [4982          {4983            "handle": "footwear",4984            "categorySlug": "sneakers"4985          },4986          {4987            "handle": "air-jordan",4988            "categorySlug": "nike_jordan",4989            "brand": "Jordan"4990          },4991          {4992            "handle": "nike-dunk",4993            "categorySlug": "nike_jordan",4994            "brand": "Nike"4995          },4996          {4997            "handle": "yeezy-trainers",4998            "categorySlug": "adidas_yeezy",4999            "brand": "adidas Yeezy"5000          },5001          {5002            "handle": "preloved-footwear",5003            "categorySlug": "sneakers"5004          },5005          {5006            "handle": "watches",5007            "categorySlug": "other_watches"5008          },5009          {5010            "handle": "pokemon",5011            "categorySlug": "pokemon",5012            "franchise": "Pokémon"5013          },5014          {5015            "handle": "labubu-by-pop-mart",5016            "categorySlug": "designer_toys",5017            "brand": "Pop Mart"5018          }5019        ],5020        "rules": [5021          {5022            "match": "swatch|moonswatch|scuba fifty",5023            "categorySlug": "other_watches",5024            "brand": "Swatch"5025          },5026          {5027            "match": "rolex",5028            "categorySlug": "rolex",5029            "brand": "Rolex"5030          },5031          {5032            "match": "omega",5033            "categorySlug": "omega",5034            "brand": "Omega"5035          },5036          {5037            "match": "patek",5038            "categorySlug": "patek_philippe",5039            "brand": "Patek Philippe"5040          },5041          {5042            "match": "audemars|royal oak",5043            "categorySlug": "audemars_piguet",5044            "brand": "Audemars Piguet"5045          },5046          {5047            "match": "jordan",5048            "categorySlug": "nike_jordan",5049            "brand": "Jordan"5050          },5051          {5052            "match": "\\bnike\\b|air max|air force|\\bdunk\\b|\\bsb\\b|blazer|vapormax|huarache|cortez|p-6000|vomero|pegasus|\\bshox\\b|\\bkobe\\b|lebron|\\bnocta\\b|\\bacg\\b|sacai|off-white|travis scott",5053            "categorySlug": "nike_jordan",5054            "brand": "Nike"5055          },5056          {5057            "match": "yeezy",5058            "categorySlug": "adidas_yeezy",5059            "brand": "adidas Yeezy"5060          },5061          {5062            "match": "adidas|\\bsamba\\b|gazelle|spezial|superstar|\\bcampus\\b|\\bforum\\b|ultraboost|\\bnmd\\b|stan smith|adizero|\\by-3\\b|climacool|\\bzx\\b|\\beqt\\b|\\bsl ?72\\b|adistar|megaride|taekwondo|wales bonner",5063            "categorySlug": "adidas_yeezy",5064            "brand": "adidas"5065          },5066          {5067            "match": "new balance|asics|puma|reebok|saucony|salomon|converse|\\bvans\\b|\\bhoka\\b|karhu|mizuno|autry|diadora|\\bveja\\b|clarks|timberland|dr\\.? ?martens|\\bugg\\b|mallet|cleens|umbro|le coq|kangaroos|\\bfila\\b|k-swiss|lacoste|golden goose|balenciaga|\\bdior\\b|gucci|louis vuitton|prada|amiri|herm[eè]s|rick owens|margiela|mcqueen|common projects|axel arigato|represent|loewe|bottega|valentino|givenchy|fendi|burberry|chanel|celine|saint laurent|versace|moncler|birkenstock|\\bon\\b (cloud|running)|cloudmonster|cloudtilt|merrell|keen\\b|ewing|ellesse|kappa|hi-tec|etnies|\\bdc shoes|gola|onitsuka|norda|novesta|stepney|sunnei|camper|mschf|maison mihara|\\bbape\\b|\\bsta\\b",5068            "categorySlug": "new_balance_asics_other"5069          }5070        ],5071        "defaultCategory": null,5072        "exclude": "t-shirt|\\btee\\b|\\btees\\b|hoodie|sweatshirt|crewneck|jacket|\\bcoat\\b|tracksuit|track pants|track jacket|sweatpants|joggers|shorts|jeans|trousers|\\bpants\\b|cargo|\\bcap\\b|\\bhat\\b|beanie|balaclava|socks|\\bbag\\b|backpack|tote|wallet|card holder|\\bbelt\\b|sunglasses|fragrance|perfume|cologne|keyring|lanyard|cleaner|crep protect|protector spray|laces|insole|shoe tree|gift card|jersey|\\bpolo\\b|\\bshirt\\b|knitwear|cardigan|\\bvest\\b|gilet|puffer|scarf|gloves|jewellery|jewelry|\\bchain\\b|bracelet|necklace|\\bring\\b|umbrella|towel|doormat|\\brug\\b|candle|\\bmug\\b|phone case|airpods|dress\\b|skirt|leggings|bodysuit|swim|bikini|underwear|boxers|slippers|flip[- ]?flops?|sandals?\\b|\\bslides?\\b|\\bmules?\\b|crocs|clog|\\| (clothing|coats & jackets|pants|hoodies|t-shirts|accessories|designer hats|caps|bags|fragrance|sunglasses|jewellery|home) \\|",5073        "keepOutOfStock": true,5074        "pageSize": 250,5075        "fetchBarcodes": false,5076        "wholeShop": false5077      },5078      "capabilities": [5079        "live_listings",5080        "images",5081        "url_lookup"5082      ],5083      "refreshClass": "normal",5084      "domain": "crepslocker.com",5085      "country": "GB",5086      "requires": [],5087      "acquisitionMethod": "Shopify storefront products.json (public JSON)",5088      "historicalDepth": "none"5089    },5090    {5091      "id": "crown-caliber",5092      "displayName": "European Watch Company (crownandcaliber.com) — pre-owned watch listings",5093      "sourceId": "europeanwatch",5094      "sourceName": "European Watch Company",5095      "sourceType": "dealer",5096      "sourceUrl": "https://www.europeanwatch.com",5097      "module": "api/crown-caliber",5098      "enginePriority": [5099        "api",5100        "firecrawl"5101      ],5102      "categories": [5103        "watches",5104        "rolex",5105        "patek_philippe",5106        "audemars_piguet",5107        "omega",5108        "other_watches"5109      ],5110      "regions": [5111        "US"5112      ],5113      "languages": [5114        "en"5115      ],5116      "currency": [5117        "USD"5118      ],5119      "supportsListings": true,5120      "supportsSold": false,5121      "supportsAuctions": false,5122      "supportsImages": true,5123      "supportsCatalog": false,5124      "supportsPopulation": false,5125      "supportsLookup": true,5126      "refreshFrequencyMinutes": 720,5127      "priority": "medium",5128      "trustScore": 0.8,5129      "attributionRequired": true,5130      "termsUrl": "https://www.europeanwatch.com/terms",5131      "accessNotes": "crownandcaliber.com now redirects to europeanwatch.com (Boston dealer). Public brand pages (/brand/<slug>?page=N) embed a schema.org ItemList of Products (name, sku, USD price, availability, condition) — fetched over plain HTTPS with the RareIndex user agent; robots.txt only disallows /login. References and circa years are parsed from the product name; box/papers/condition details live on product pages and are only fetched by lookup(). 1.5 s between pages, the whole brand inventory is served on one page (~130 watches for Rolex; pagination parameters are ignored, which the crawler detects).",5132      "enabled": true,5133      "schemaVersion": "1.0",5134      "config": {5135        "seeds": [5136          "rolex",5137          "patek-philippe",5138          "audemars-piguet",5139          "omega",5140          "cartier",5141          "tudor",5142          "vacheron-constantin",5143          "a-lange-and-sohne",5144          "iwc",5145          "jaeger-lecoultre",5146          "breitling",5147          "panerai",5148          "grand-seiko",5149          "f-p-journe",5150          "zenith"5151        ],5152        "pagesPerSeed": 15153      },5154      "capabilities": [5155        "live_listings",5156        "images",5157        "url_lookup"5158      ],5159      "refreshClass": "normal",5160      "domain": "europeanwatch.com",5161      "country": "US",5162      "requires": [],5163      "historicalDepth": "none"5164    },5165    {5166      "id": "digimoncard",5167      "displayName": "DigimonCard.io (Digimon Card Game)",5168      "sourceId": "digimoncard",5169      "sourceName": "DigimonCard.io",5170      "sourceType": "catalog",5171      "sourceUrl": "https://digimoncard.io",5172      "module": "api/digimoncard",5173      "enginePriority": [5174        "api"5175      ],5176      "categories": [5177        "digimon_tcg"5178      ],5179      "regions": [5180        "US",5181        "JP"5182      ],5183      "languages": [5184        "en"5185      ],5186      "currency": [],5187      "supportsListings": false,5188      "supportsSold": false,5189      "supportsAuctions": false,5190      "supportsImages": true,5191      "supportsCatalog": true,5192      "supportsPopulation": false,5193      "supportsLookup": true,5194      "refreshFrequencyMinutes": 10080,5195      "priority": "low",5196      "trustScore": 0.7,5197      "attributionRequired": true,5198      "termsUrl": "https://digimoncard.io/api-public/",5199      "accessNotes": "Free public JSON API (https://digimoncard.io/api-public/search?series=Digimon%20Card%20Game returns every card in one call; the documented '.php' paths 301 to the extensionless ones). Catalog only — no prices; TCGplayer product ids are included and used as the deterministic identifier (tcgplayer_id) so TCGCSV prices attach to the same assets. Images from images.digimoncard.io/images/cards/<id>.jpg. Primary set derived from the card number prefix (BT5 → 'BT-05' set entry).",5200      "enabled": true,5201      "schemaVersion": "1.0",5202      "config": {},5203      "capabilities": [5204        "images",5205        "catalog",5206        "url_lookup"5207      ],5208      "refreshClass": "archive",5209      "domain": "digimoncard.io",5210      "country": "US",5211      "requires": [],5212      "historicalDepth": "none"5213    },5214    {5215      "id": "discogs",5216      "displayName": "Discogs (releases + marketplace lows)",5217      "sourceId": "discogs",5218      "sourceName": "Discogs",5219      "sourceType": "collector_database",5220      "sourceUrl": "https://www.discogs.com",5221      "module": "api/discogs",5222      "enginePriority": [5223        "api"5224      ],5225      "categories": [5226        "music"5227      ],5228      "regions": [5229        "global"5230      ],5231      "languages": [5232        "en"5233      ],5234      "currency": [5235        "USD"5236      ],5237      "supportsListings": false,5238      "supportsSold": false,5239      "supportsAuctions": false,5240      "supportsImages": true,5241      "supportsCatalog": true,5242      "supportsPopulation": false,5243      "supportsLookup": true,5244      "refreshFrequencyMinutes": 1440,5245      "priority": "medium",5246      "trustScore": 0.85,5247      "attributionRequired": true,5248      "termsUrl": "https://support.discogs.com/hc/en-us/articles/360009334593-API-Terms-of-Use",5249      "accessNotes": "Official public Discogs API (api.discogs.com) used unauthenticated with the RareIndex user agent: database/search (type=master), masters/{id}/versions (pressings with label, catno, country, year, format and community have/want counts) and marketplace/stats/{release_id} (lowest asking price + number for sale). Unauthenticated limit is 25 requests/minute → 2.6 s throttle; price_suggestions requires a personal token and is not used. Marketplace stats have no timestamp: observationDate = fetch date (confidence 0.7). Catalog data is CC0; images are hot-linked thumbnails and attributed to Discogs. Sold-price history is not exposed publicly.",5250      "enabled": true,5251      "schemaVersion": "1.0",5252      "config": {5253        "seeds": [5254          "Nirvana Nevermind",5255          "The Beatles Abbey Road",5256          "Pink Floyd The Dark Side Of The Moon",5257          "Led Zeppelin IV",5258          "Miles Davis Kind Of Blue",5259          "Michael Jackson Thriller",5260          "Radiohead OK Computer",5261          "Fleetwood Mac Rumours",5262          "Daft Punk Random Access Memories",5263          "Kendrick Lamar To Pimp A Butterfly",5264          "The Velvet Underground & Nico",5265          "Joy Division Unknown Pleasures",5266          "Prince Purple Rain",5267          "David Bowie The Rise And Fall Of Ziggy Stardust",5268          "Amy Winehouse Back To Black",5269          "The Beatles Sgt. Pepper's Lonely Hearts Club Band",5270          "Bob Dylan Blonde On Blonde",5271          "John Coltrane A Love Supreme",5272          "The Rolling Stones Exile On Main St.",5273          "Wu-Tang Clan Enter The Wu-Tang (36 Chambers)",5274          "Taylor Swift 1989",5275          "Tyler, The Creator Igor",5276          "Frank Ocean Blonde",5277          "Arctic Monkeys AM",5278          "Björk Homogenic",5279          "Kraftwerk Autobahn",5280          "Sex Pistols Never Mind The Bollocks",5281          "Bruce Springsteen Born To Run",5282          "Nas Illmatic",5283          "Massive Attack Mezzanine"5284        ],5285        "formats": [5286          "Vinyl"5287        ],5288        "versionsPerMaster": 100,5289        "statsPerMaster": 65290      },5291      "capabilities": [5292        "images",5293        "catalog",5294        "url_lookup"5295      ],5296      "refreshClass": "normal",5297      "domain": "discogs.com",5298      "country": "global",5299      "requires": [],5300      "historicalDepth": "none"5301    },5302    {5303      "id": "dlrc",5304      "displayName": "David Lawrence Rare Coins — sold auction lots (Collectibles Showcase API)",5305      "sourceId": "dlrc",5306      "sourceName": "David Lawrence Rare Coins",5307      "sourceType": "auction_house",5308      "sourceUrl": "https://www.davidlawrence.com",5309      "module": "api/dlrc",5310      "enginePriority": [5311        "api"5312      ],5313      "categories": [5314        "coins",5315        "banknotes"5316      ],5317      "regions": [5318        "US"5319      ],5320      "languages": [5321        "en"5322      ],5323      "currency": [5324        "USD"5325      ],5326      "supportsListings": false,5327      "supportsSold": true,5328      "supportsAuctions": false,5329      "supportsImages": true,5330      "supportsCatalog": false,5331      "supportsPopulation": false,5332      "supportsLookup": false,5333      "refreshFrequencyMinutes": 1440,5334      "priority": "high",5335      "trustScore": 0.92,5336      "attributionRequired": true,5337      "termsUrl": "https://www.davidlawrence.com/terms-and-conditions",5338      "accessNotes": "Public JSON API of the davidlawrence.com single-page app (api.collectiblesshowcase.com), no key or login: the tenant header x-client-id is the public value the site resolves from GET /consumer/client?url=https://www.davidlawrence.com (id 3, also configurable). Endpoints read: /consumer/auction/past (closed weekly auctions since May 2023) and /consumer/inventory/past/auction?auctions=<id>&pageNumber=N&pageSize=100 (sold lots: name, series, grading service, grade, certification number, PCGS number, sale price in cents, closing time, images). The unfiltered listing (162 000 lots, including legacy sales back to 2016 without an auction id) is walked page by page in backfill mode. DLRC displays 'DLRC has no buyer's fee' on every lot → salePrice is the total paid (buyer_premium_included=true, note in metadata). Sale date = the lot's own closing date (UTC day). Robots: the SPA has no robots.txt; the API host answers 404 for /robots.txt; nothing else (account, bids, cart, Auth0) is called. 1.5 s politeness, concurrency 1. Lot URLs are www.davidlawrence.com/inventory/<id>.",5339      "enabled": true,5340      "schemaVersion": "1.0",5341      "config": {5342        "clientId": "3",5343        "auctionsPerRun": 2,5344        "pagesPerRun": 405345      },5346      "capabilities": [5347        "sold_listings",5348        "images",5349        "historical_backfill"5350      ],5351      "refreshClass": "normal",5352      "domain": "davidlawrence.com",5353      "country": "US",5354      "requires": [],5355      "acquisitionMethod": "Public JSON API (Collectibles Showcase, tenant header)",5356      "historicalDepth": "years"5357    },5358    {5359      "id": "dominic-winter",5360      "displayName": "Dominic Winter Auctioneers (books, maps, documents) — results",5361      "sourceId": "dominic-winter",5362      "sourceName": "Dominic Winter Auctioneers",5363      "sourceType": "auction_house",5364      "sourceUrl": "https://www.dominicwinter.co.uk",5365      "module": "api/dominic-winter",5366      "enginePriority": [5367        "api"5368      ],5369      "categories": [5370        "books",5371        "maps",5372        "historical_documents",5373        "autographs",5374        "photography",5375        "art",5376        "postcards",5377        "stamps",5378        "coins",5379        "medals",5380        "militaria",5381        "vintage_toys",5382        "sports_memorabilia",5383        "music_memorabilia",5384        "movie_posters",5385        "antiques"5386      ],5387      "regions": [5388        "GB"5389      ],5390      "languages": [5391        "en"5392      ],5393      "currency": [5394        "GBP"5395      ],5396      "supportsListings": false,5397      "supportsSold": true,5398      "supportsAuctions": true,5399      "supportsImages": true,5400      "supportsCatalog": false,5401      "supportsPopulation": false,5402      "supportsLookup": false,5403      "refreshFrequencyMinutes": 1440,5404      "priority": "medium",5405      "trustScore": 0.88,5406      "attributionRequired": true,5407      "termsUrl": "https://www.dominicwinter.co.uk/terms-and-conditions/",5408      "accessNotes": "Dominic Winter Auctioneers (South Cerney, Cirencester; printed books, maps, manuscripts, photographs, ornithology, medals, toys) runs on the goauction platform. Public pages read: /auction-results/ (calendar of past sales: title, date, PDF results, au id) and /Auction/Search?au=<id>&sd=2&pn=N&g=1 (grid of 48 lots per page: lot number, title, image, 'Sold for £480'; unsold lots carry no price). The grid does not state hammer vs premium → buyer_premium_included null. robots.txt disallows /account, /admin, /cms/lotdetailspdf, /elmah, /imagebrowser, /language only. 2.5 s politeness; salesPerRun caps incremental runs; resumable backfill over the calendar. No login, no bidder data.",5409      "enabled": true,5410      "schemaVersion": "1.0",5411      "config": {5412        "resultsUrl": "https://www.dominicwinter.co.uk/auction-results/",5413        "salesPerRun": 25414      },5415      "capabilities": [5416        "sold_listings",5417        "auction_results",5418        "images",5419        "historical_backfill"5420      ],5421      "refreshClass": "normal",5422      "domain": "dominicwinter.co.uk",5423      "country": "GB",5424      "requires": [],5425      "acquisitionMethod": "server-rendered HTML (goauction platform)",5426      "historicalDepth": "years"5427    },5428    {5429      "id": "doyle",5430      "displayName": "Doyle (auction results)",5431      "sourceId": "doyle",5432      "sourceName": "Doyle",5433      "sourceType": "auction_house",5434      "sourceUrl": "https://www.doyle.com",5435      "module": "api/doyle",5436      "enginePriority": [5437        "api"5438      ],5439      "categories": [5440        "books",5441        "maps",5442        "historical_documents",5443        "autographs",5444        "photography",5445        "art",5446        "contemporary_art",5447        "jewelry",5448        "gemstones",5449        "other_watches",5450        "rolex",5451        "coins",5452        "banknotes",5453        "stamps",5454        "silver",5455        "antiques",5456        "porcelain",5457        "glass_crystal",5458        "clocks",5459        "design_furniture",5460        "luxury_handbags",5461        "fashion_streetwear",5462        "fossils",5463        "minerals"5464      ],5465      "regions": [5466        "US"5467      ],5468      "languages": [5469        "en"5470      ],5471      "currency": [5472        "USD"5473      ],5474      "supportsListings": false,5475      "supportsSold": true,5476      "supportsAuctions": false,5477      "supportsImages": true,5478      "supportsCatalog": false,5479      "supportsPopulation": false,5480      "supportsLookup": false,5481      "refreshFrequencyMinutes": 1440,5482      "priority": "medium",5483      "trustScore": 0.9,5484      "attributionRequired": true,5485      "termsUrl": "https://www.doyle.com/terms/",5486      "accessNotes": "Plain HTTPS with the RareIndex user agent on public pages of www.doyle.com. robots.txt (User-agent *) disallows only /account/*, /admin/*, /cms/lotdetailspdf/, /elmah/*, /error/*, /imagebrowser/*, /language/*, /profile/*, /seo/* and asks crawl-delay 10 → 10 s between requests (minIntervalMs 10000). Pages read: /past-auctions/ (calendar of closed sales — 72 entries covering roughly the last 8–9 months, each with name, code and 'Date: Mon d, yyyy hh:mm EST', which is the sale date we store) and the per-sale results pages /auction/search/?au=<id>&pp=96&pn=N&g=1 (96 server-rendered cards per page: lot number, title, 'Sold for $X', 'Estimated at $A - $B', image, lot URL). Prices are USD; the lot detail pages state 'Includes Buyer's Premium' under 'Sold for' (verified live 2026-09-08) → buyerPremiumIncluded=true. Lots without 'Sold for' (unsold/withdrawn) are skipped. Not fetched: lot detail pages (all needed fields are on the results grid), live bidding (live.doyle.com), account/registration pages, PDFs. 0 credits, no JS rendering.",5487      "enabled": true,5488      "schemaVersion": "1.0",5489      "config": {5490        "auctionsPerRun": 2,5491        "pagesPerAuction": 155492      },5493      "capabilities": [5494        "sold_listings",5495        "images",5496        "historical_backfill"5497      ],5498      "refreshClass": "normal",5499      "domain": "doyle.com",5500      "country": "US",5501      "requires": [],5502      "acquisitionMethod": "server-rendered results pages (HTML)",5503      "historicalDepth": "years"5504    },5505    {5506      "id": "dunbar-sloane",5507      "displayName": "Dunbar Sloane (New Zealand) — realised prices",5508      "sourceId": "dunbar-sloane",5509      "sourceName": "Dunbar Sloane",5510      "sourceType": "auction_house",5511      "sourceUrl": "https://auctions.dunbarsloane.co.nz",5512      "module": "api/dunbar-sloane",5513      "enginePriority": [5514        "api"5515      ],5516      "categories": [5517        "antiques",5518        "silver",5519        "porcelain",5520        "glass_crystal",5521        "art",5522        "contemporary_art",5523        "jewelry",5524        "other_watches",5525        "stamps",5526        "coins",5527        "banknotes",5528        "vintage_toys",5529        "model_trains",5530        "model_cars",5531        "books",5532        "maps",5533        "militaria",5534        "medals",5535        "wine",5536        "cameras",5537        "musical_instruments",5538        "design_furniture"5539      ],5540      "regions": [5541        "NZ"5542      ],5543      "languages": [5544        "en"5545      ],5546      "currency": [5547        "NZD"5548      ],5549      "supportsListings": false,5550      "supportsSold": true,5551      "supportsAuctions": true,5552      "supportsImages": true,5553      "supportsCatalog": false,5554      "supportsPopulation": false,5555      "supportsLookup": false,5556      "refreshFrequencyMinutes": 1440,5557      "priority": "low",5558      "trustScore": 0.85,5559      "attributionRequired": true,5560      "termsUrl": "https://www.dunbarsloane.co.nz/buying",5561      "accessNotes": "Dunbar Sloane (Wellington & Auckland, NZ; silver, decorative arts, stamps, coins, toys, art, jewellery) publishes catalogues and realised prices on auctions.dunbarsloane.co.nz (Tandem Auctions). Public pages read: /previous-auctions (69 past sales: title, 'Thursday, 2 - Wednesday, 15 October 2025', /<id>) and /<id>/catalogue?page=N (lot cards: lot number, title, image, 'Estimate: $200 - $350', 'Realised: $140 + premium'). 'Realised … plus premium' is explicitly the HAMMER price → buyer_premium_included=false, NZD. robots.txt on the auctions host returns 404 (no rules); no anti-automation clause found. 2.5 s politeness; salesPerRun caps incremental runs; resumable backfill over the previous-auctions list. No login, no bidder data.",5562      "enabled": true,5563      "schemaVersion": "1.0",5564      "config": {5565        "previousUrl": "https://auctions.dunbarsloane.co.nz/previous-auctions",5566        "salesPerRun": 25567      },5568      "capabilities": [5569        "sold_listings",5570        "auction_results",5571        "images",5572        "historical_backfill"5573      ],5574      "refreshClass": "normal",5575      "domain": "auctions.dunbarsloane.co.nz",5576      "country": "NZ",5577      "requires": [],5578      "acquisitionMethod": "server-rendered HTML (Tandem Auctions platform)",5579      "historicalDepth": "years"5580    },5581    {5582      "id": "e-rocks",5583      "displayName": "e-Rocks (online mineral auctions, EUR)",5584      "sourceId": "e-rocks",5585      "sourceName": "e-Rocks",5586      "sourceType": "marketplace",5587      "sourceUrl": "https://e-rocks.com",5588      "module": "firecrawl/e-rocks",5589      "enginePriority": [5590        "firecrawl"5591      ],5592      "categories": [5593        "minerals"5594      ],5595      "regions": [5596        "GB",5597        "EU"5598      ],5599      "languages": [5600        "en"5601      ],5602      "currency": [5603        "EUR"5604      ],5605      "supportsListings": false,5606      "supportsSold": false,5607      "supportsAuctions": true,5608      "supportsImages": true,5609      "supportsCatalog": false,5610      "supportsPopulation": false,5611      "supportsLookup": false,5612      "refreshFrequencyMinutes": 1440,5613      "priority": "low",5614      "trustScore": 0.7,5615      "attributionRequired": true,5616      "termsUrl": "https://e-rocks.com/terms-and-conditions",5617      "accessNotes": "e-rocks.com returns 403 to plain HTTPS clients; Firecrawl renders the public auction index and auction pages (1 credit each). robots.txt sets Crawl-delay: 10 (honoured: 10 s between requests) and disallows /search/ and /itemssearch, which are not used. Each weekly dealer auction page lists its lots with locality, size class, current bid in EUR, bid count and seller; the header gives start/end times (BST/GMT). Past auctions are not archived on the site, so lots are stored as auction lots (current bid, status live/ended at fetch time) — final hammer prices are not asserted. At most 4 auctions per run.",5618      "enabled": true,5619      "schemaVersion": "1.0",5620      "config": {5621        "auctionsPerRun": 45622      },5623      "capabilities": [5624        "auction_results",5625        "images"5626      ],5627      "refreshClass": "normal",5628      "domain": "e-rocks.com",5629      "country": "GB",5630      "requires": [],5631      "historicalDepth": "none"5632    },5633    {5634      "id": "ebay-browse",5635      "displayName": "eBay Browse API (live listings, 6 marketplaces) — gated",5636      "sourceId": "ebay",5637      "sourceName": "eBay",5638      "sourceType": "marketplace",5639      "sourceUrl": "https://www.ebay.com",5640      "module": "api/ebay-browse",5641      "enginePriority": [5642        "api"5643      ],5644      "categories": [5645        "pokemon",5646        "magic_the_gathering",5647        "yugioh",5648        "sports_cards",5649        "baseball_cards",5650        "basketball_cards",5651        "football_cards",5652        "hockey_cards",5653        "soccer_cards",5654        "comics",5655        "video_games",5656        "sneakers",5657        "watches",5658        "rolex",5659        "omega",5660        "other_watches",5661        "lego_sets",5662        "funko",5663        "coins",5664        "banknotes",5665        "stamps",5666        "music",5667        "cameras",5668        "pens",5669        "whisky",5670        "action_figures",5671        "vintage_toys",5672        "luxury_handbags"5673      ],5674      "regions": [5675        "US",5676        "CA",5677        "GB",5678        "DE",5679        "FR",5680        "AU"5681      ],5682      "languages": [5683        "en",5684        "de",5685        "fr"5686      ],5687      "currency": [5688        "USD",5689        "CAD",5690        "GBP",5691        "EUR",5692        "AUD"5693      ],5694      "supportsListings": true,5695      "supportsSold": false,5696      "supportsAuctions": false,5697      "supportsImages": true,5698      "supportsCatalog": false,5699      "supportsPopulation": false,5700      "supportsLookup": true,5701      "refreshFrequencyMinutes": 60,5702      "priority": "high",5703      "trustScore": 0.85,5704      "attributionRequired": true,5705      "termsUrl": "https://developer.ebay.com/join/api-license-agreement",5706      "accessNotes": "Official eBay Buy → Browse API v1 (developer.ebay.com/api-docs/buy/browse). Auth: OAuth2 client-credentials grant — POST https://api.ebay.com/identity/v1/oauth2/token with Basic base64(client_id:client_secret), body grant_type=client_credentials&scope=https://api.ebay.com/oauth/api_scope; the application token (expires_in ≈ 7200 s) is cached inside the connector and refreshed 60 s before expiry. Data: GET /buy/browse/v1/item_summary/search with q / category_ids / filter (buyingOptions:{FIXED_PRICE|AUCTION|BEST_OFFER}, conditions, price:[..],priceCurrency, itemLocationCountry…) / sort=newlyListed / limit ≤ 200 / offset (offset+limit ≤ 10,000 per query), one call per (query × marketplace × page); the X-EBAY-C-MARKETPLACE-ID header selects EBAY_US, EBAY_CA, EBAY_GB, EBAY_DE, EBAY_FR or EBAY_AU and prices come back in the marketplace currency (convertedFromCurrency is recorded when eBay converted). Fields kept: itemId (v1|…|0), legacyItemId, epid (eBay product id → identifiers.ebay_epid), title, price/currentBidPrice, bidCount, buyingOptions, condition/conditionId, images, seller username + feedback percentage/score (public marketplace reputation, no personal data), shippingOptions[0].shippingCost, itemLocation city/state/country, itemCreationDate, itemEndDate, categories, watchCount. Limits: Browse is a 'Buy' API — default 5,000 calls/day per application for new keysets, more after eBay's Application Growth Check; we use 1 page per query per hourly run (≤ 6 queries × 6 marketplaces) and back off on 429 through the HTTP engine. IMPORTANT: the Browse API exposes LIVE listings only — there is no sold/completed-item data; eBay's sold data lives in the Marketplace Insights API (limited release, business approval required) and in the deprecated Finding API's findCompletedItems (retired) — documented, not implemented. Credentials: create a developer account at https://developer.ebay.com, an application keyset (production), and for Buy APIs complete the 'Buy API access' application; set EBAY_CLIENT_ID (App ID) and EBAY_CLIENT_SECRET (Cert ID); EBAY_ENV=sandbox switches to api.sandbox.ebay.com. Until the keys exist the framework reports this connector DISABLED (requires) and the crawler exits with a missing_credentials anomaly. Category ids in config are the public eBay leaf categories used in the query seeds; verify/adjust them with the Taxonomy API once a key is available (invalid ids raise error 12000 → page_fetch_failed anomaly). eBay API License Agreement: attribution + no storing of data beyond the permitted caching windows for listing data — RareIndex stores asking prices as listings and links back to itemWebUrl.",5707      "enabled": true,5708      "schemaVersion": "1.0",5709      "config": {5710        "limit": 200,5711        "pagesPerQuery": 1,5712        "backfillPages": 10,5713        "queriesPerRun": 6,5714        "sort": "newlyListed",5715        "defaultFilter": "buyingOptions:{FIXED_PRICE|AUCTION|BEST_OFFER}",5716        "marketplaces": [5717          {5718            "id": "EBAY_US",5719            "currency": "USD",5720            "country": "US",5721            "locale": "en-US"5722          },5723          {5724            "id": "EBAY_CA",5725            "currency": "CAD",5726            "country": "CA",5727            "locale": "en-CA"5728          },5729          {5730            "id": "EBAY_GB",5731            "currency": "GBP",5732            "country": "GB",5733            "locale": "en-GB"5734          },5735          {5736            "id": "EBAY_DE",5737            "currency": "EUR",5738            "country": "DE",5739            "locale": "de-DE"5740          },5741          {5742            "id": "EBAY_FR",5743            "currency": "EUR",5744            "country": "FR",5745            "locale": "fr-FR"5746          },5747          {5748            "id": "EBAY_AU",5749            "currency": "AUD",5750            "country": "AU",5751            "locale": "en-AU"5752          }5753        ],5754        "queries": [5755          {5756            "q": "pokemon psa 10",5757            "categoryIds": [5758              "183454"5759            ],5760            "categorySlug": "pokemon"5761          },5762          {5763            "q": "pokemon charizard",5764            "categoryIds": [5765              "183454"5766            ],5767            "categorySlug": "pokemon"5768          },5769          {5770            "q": "magic the gathering foil",5771            "categoryIds": [5772              "183454"5773            ],5774            "categorySlug": "magic_the_gathering"5775          },5776          {5777            "q": "yu-gi-oh 1st edition",5778            "categoryIds": [5779              "183454"5780            ],5781            "categorySlug": "yugioh"5782          },5783          {5784            "q": "rookie psa",5785            "categoryIds": [5786              "261328"5787            ],5788            "categorySlug": "sports_cards"5789          },5790          {5791            "q": "cgc 9.8",5792            "categoryIds": [5793              "63"5794            ],5795            "categorySlug": "comics"5796          },5797          {5798            "q": "sealed wata",5799            "categoryIds": [5800              "139973"5801            ],5802            "categorySlug": "video_games"5803          },5804          {5805            "q": "air jordan 1 retro high og",5806            "categoryIds": [5807              "15709"5808            ],5809            "categorySlug": "sneakers"5810          },5811          {5812            "q": "rolex submariner",5813            "categoryIds": [5814              "31387"5815            ],5816            "categorySlug": "rolex"5817          },5818          {5819            "q": "omega speedmaster",5820            "categoryIds": [5821              "31387"5822            ],5823            "categorySlug": "omega"5824          },5825          {5826            "q": "lego sealed retired",5827            "categoryIds": [5828              "19006"5829            ],5830            "categorySlug": "lego_sets"5831          },5832          {5833            "q": "funko pop chase",5834            "categoryIds": [5835              "149372"5836            ],5837            "categorySlug": "funko"5838          },5839          {5840            "q": "pcgs ms",5841            "categoryIds": [5842              "11116"5843            ],5844            "categorySlug": "coins"5845          },5846          {5847            "q": "leica m3",5848            "categoryIds": [5849              "15230"5850            ],5851            "categorySlug": "cameras"5852          },5853          {5854            "q": "montblanc 149",5855            "categoryIds": [5856              "7275"5857            ],5858            "categorySlug": "pens"5859          },5860          {5861            "q": "first pressing vinyl",5862            "categoryIds": [5863              "176985"5864            ],5865            "categorySlug": "music"5866          },5867          {5868            "q": "hermes birkin",5869            "categoryIds": [5870              "169291"5871            ],5872            "categorySlug": "luxury_handbags"5873          }5874        ]5875      },5876      "capabilities": [5877        "live_listings",5878        "images",5879        "url_lookup"5880      ],5881      "refreshClass": "active",5882      "domain": "ebay.com",5883      "country": "US",5884      "requires": [5885        "EBAY_CLIENT_ID",5886        "EBAY_CLIENT_SECRET"5887      ],5888      "acquisitionMethod": "official API (OAuth2 client credentials)",5889      "historicalDepth": "none"5890    },5891    {5892      "id": "entertainment-earth",5893      "displayName": "Entertainment Earth (action figures, Funko, die-cast — retail listings)",5894      "sourceId": "entertainment-earth",5895      "sourceName": "Entertainment Earth",5896      "sourceType": "dealer",5897      "sourceUrl": "https://www.entertainmentearth.com",5898      "module": "scrapfly/entertainment-earth",5899      "enginePriority": [5900        "scrapfly"5901      ],5902      "categories": [5903        "action_figures",5904        "funko",5905        "model_cars",5906        "designer_toys"5907      ],5908      "regions": [5909        "US"5910      ],5911      "languages": [5912        "en"5913      ],5914      "currency": [5915        "USD"5916      ],5917      "supportsListings": true,5918      "supportsSold": false,5919      "supportsAuctions": false,5920      "supportsImages": true,5921      "supportsCatalog": false,5922      "supportsPopulation": false,5923      "supportsLookup": false,5924      "refreshFrequencyMinutes": 1440,5925      "priority": "medium",5926      "trustScore": 0.75,5927      "attributionRequired": true,5928      "termsUrl": "https://www.entertainmentearth.com/s/terms-of-use/s",5929      "accessNotes": "Reads only public category listing pages: https://www.entertainmentearth.com/s/action-figures/p, /s/funko/c and /s/vehicles/p (+ ?page=N, 60 product tiles per page, ~73 pages for action figures). Each tile's add-to-cart button exposes data-sku, data-name, data-price, data-company (manufacturer), data-theme (franchise) and data-collect (category); the tile also gives the product URL, image, displayed price, struck list price and the button label (Pre-Order / Add to Cart / Sold Out) which we map to availability. robots.txt (fetched through Scrapfly because plain HTTP gets a Cloudflare challenge): `User-agent: *` disallows only /news/* admin paths; /s/ listing pages and /product/ pages are allowed; a product sitemap index exists at /sitemap/sitemap_index.xml (not used yet). Every request from a non-browser client receives a Cloudflare managed challenge, so pages are fetched through Scrapfly without JS rendering (~1 credit per page, 3 s politeness, concurrency 1). Product detail pages are NOT fetched (not needed; the tiles carry everything we store). Retail asking prices are listings, never sales (SPEC §111); pre-order and sold-out states are kept so MSRP history survives sell-outs. No account, cart, wishlist or personal data is touched.",5930      "enabled": true,5931      "schemaVersion": "1.0",5932      "config": {5933        "pagesPerSeed": 2,5934        "seeds": [5935          {5936            "path": "/s/action-figures/p",5937            "categorySlug": "action_figures"5938          },5939          {5940            "path": "/s/funko/c",5941            "categorySlug": "funko"5942          },5943          {5944            "path": "/s/vehicles/p",5945            "categorySlug": "model_cars"5946          }5947        ],5948        "exclude": "gift card|t-shirt|hoodie|mug|tumbler|poster|backpack|keychain|lanyard|blanket|socks|wallet|pin set|enamel pin"5949      },5950      "capabilities": [5951        "live_listings",5952        "images"5953      ],5954      "refreshClass": "normal",5955      "domain": "entertainmentearth.com",5956      "country": "US",5957      "requires": [5958        "SCRAPFLY_API_KEY"5959      ],5960      "acquisitionMethod": "Scrapfly (no JS) — public category listing pages",5961      "historicalDepth": "none"5962    },5963    {5964      "id": "estarland",5965      "displayName": "eStarland (retro game dealer listings)",5966      "sourceId": "estarland",5967      "sourceName": "eStarland",5968      "sourceType": "dealer",5969      "sourceUrl": "https://www.estarland.com",5970      "module": "scrapfly/estarland",5971      "enginePriority": [5972        "scrapfly"5973      ],5974      "categories": [5975        "nintendo_games",5976        "sega_games",5977        "playstation_games",5978        "xbox_games",5979        "atari_retro_games"5980      ],5981      "regions": [5982        "US"5983      ],5984      "languages": [5985        "en"5986      ],5987      "currency": [5988        "USD"5989      ],5990      "supportsListings": true,5991      "supportsSold": false,5992      "supportsAuctions": false,5993      "supportsImages": true,5994      "supportsCatalog": false,5995      "supportsPopulation": false,5996      "supportsLookup": false,5997      "refreshFrequencyMinutes": 1440,5998      "priority": "low",5999      "trustScore": 0.75,6000      "attributionRequired": true,6001      "termsUrl": "https://www.estarland.com/terms-and-conditions",6002      "accessNotes": "Reads only public platform listing pages: https://www.estarland.com/platforms/<Platform>/<id>?page=N (30 product cards per page; e.g. NES = 302 items / 11 pages). Each card gives the product name, platform line ('Nintendo / NES'), New/Used label, price (an 'unavailPrice' class marks out-of-stock) and the product URL carrying eStarland's product id. robots.txt: Allow / for `User-agent: *` except /login, /handler*, /checkout, /shopcart, /forgot-password*, /sandbox (never touched); sitemap declared. Plain HTTP receives a Cloudflare managed challenge, so pages are fetched through Scrapfly without JS rendering (~1 credit per page, 3 s politeness, concurrency 1). Product detail pages are NOT fetched; accessories/cables/cleaners/repair parts are excluded by rule. Asking prices are listings, never sales (SPEC §111); 'Used' copies carry no completeness (the listing page does not say loose vs. complete) — never guessed.",6003      "enabled": true,6004      "schemaVersion": "1.0",6005      "config": {6006        "pagesPerSeed": 1,6007        "seeds": [6008          {6009            "path": "/platforms/NintendoNES/37",6010            "categorySlug": "nintendo_games",6011            "brand": "Nintendo"6012          },6013          {6014            "path": "/platforms/SuperNintendo/36",6015            "categorySlug": "nintendo_games",6016            "brand": "Nintendo"6017          },6018          {6019            "path": "/platforms/Nintendo64/35",6020            "categorySlug": "nintendo_games",6021            "brand": "Nintendo"6022          },6023          {6024            "path": "/platforms/GameBoy/50",6025            "categorySlug": "nintendo_games",6026            "brand": "Nintendo"6027          },6028          {6029            "path": "/platforms/GameCube/31",6030            "categorySlug": "nintendo_games",6031            "brand": "Nintendo"6032          },6033          {6034            "path": "/platforms/SegaGenesis/40",6035            "categorySlug": "sega_games",6036            "brand": "Sega"6037          },6038          {6039            "path": "/platforms/SegaSaturn/39",6040            "categorySlug": "sega_games",6041            "brand": "Sega"6042          },6043          {6044            "path": "/platforms/SegaDreamcast/38",6045            "categorySlug": "sega_games",6046            "brand": "Sega"6047          },6048          {6049            "path": "/platforms/Playstation/34",6050            "categorySlug": "playstation_games",6051            "brand": "Sony"6052          },6053          {6054            "path": "/platforms/Playstation2/9",6055            "categorySlug": "playstation_games",6056            "brand": "Sony"6057          },6058          {6059            "path": "/platforms/XBox/13",6060            "categorySlug": "xbox_games",6061            "brand": "Microsoft"6062          },6063          {6064            "path": "/platforms/Atari2600/47",6065            "categorySlug": "atari_retro_games",6066            "brand": "Atari"6067          },6068          {6069            "path": "/platforms/TurboGrafx/59",6070            "categorySlug": "atari_retro_games",6071            "brand": "NEC"6072          },6073          {6074            "path": "/platforms/NeoGeo/95",6075            "categorySlug": "atari_retro_games",6076            "brand": "SNK"6077          }6078        ],6079        "exclude": "adapter|cable|cleaner|controller|memory card|charger|\\bcase\\b|stylus|replacement|repair|dust cover|power supply|av cord|rf switch"6080      },6081      "capabilities": [6082        "live_listings",6083        "images"6084      ],6085      "refreshClass": "normal",6086      "domain": "estarland.com",6087      "country": "US",6088      "requires": [6089        "SCRAPFLY_API_KEY"6090      ],6091      "acquisitionMethod": "Scrapfly (no JS) — public platform listing pages",6092      "historicalDepth": "none"6093    },6094    {6095      "id": "etsy",6096      "displayName": "Etsy Open API v3 (vintage & collectibles listings) — gated",6097      "sourceId": "etsy",6098      "sourceName": "Etsy",6099      "sourceType": "marketplace",6100      "sourceUrl": "https://www.etsy.com",6101      "module": "api/etsy",6102      "enginePriority": [6103        "api"6104      ],6105      "categories": [6106        "vintage_toys",6107        "cameras",6108        "pens",6109        "clocks",6110        "design_furniture",6111        "antiques",6112        "porcelain",6113        "glass_crystal",6114        "silver",6115        "jewelry",6116        "other_watches",6117        "movie_posters",6118        "music",6119        "books",6120        "postcards",6121        "advertising",6122        "pokemon",6123        "sports_cards",6124        "comics",6125        "typewriters",6126        "scientific_instruments"6127      ],6128      "regions": [6129        "US",6130        "GB",6131        "CA",6132        "DE",6133        "FR",6134        "AU"6135      ],6136      "languages": [6137        "en"6138      ],6139      "currency": [6140        "USD",6141        "GBP",6142        "EUR",6143        "CAD",6144        "AUD"6145      ],6146      "supportsListings": true,6147      "supportsSold": false,6148      "supportsAuctions": false,6149      "supportsImages": true,6150      "supportsCatalog": false,6151      "supportsPopulation": false,6152      "supportsLookup": true,6153      "refreshFrequencyMinutes": 360,6154      "priority": "medium",6155      "trustScore": 0.7,6156      "attributionRequired": true,6157      "termsUrl": "https://www.etsy.com/legal/api",6158      "accessNotes": "Official Etsy Open API v3 (developers.etsy.com/documentation, OpenAPI contract at etsy.com/openapi/generated/oas/3.0.0.json). Auth: the application keystring in the x-api-key header (Etsy's request guide shows the 'keystring:shared_secret' form; either value works in ETSY_API_KEY — we send it verbatim). No OAuth is needed for the application-scoped read endpoints we use: GET /v3/application/listings/active (findAllListingsActive: keywords, taxonomy_id, min_price/max_price, sort_on=created, sort_order=desc, limit ≤ 100, offset), GET /v3/application/listings/batch?listing_ids=…&includes=Images,Shop (one call per page to attach images and the public shop name/country/review score) and GET /v3/application/seller-taxonomy/nodes (taxonomy ids resolved by node-name path and cached in the cursor). Prices are Money {amount, divisor, currency_code} in each shop's own currency → native currency listings; images url_fullxfull; created/ending epoch timestamps → listedAt/endsAt. Etsy publishes no sold prices, so this is a listings-only source; supplies, made-to-order and non-active listings are skipped and 'when_made' eras are kept as metadata. Rate limits (Etsy default): 10 requests/second and 10,000 requests/day per app — a run uses ≤ 8 queries × (1 search + 1 batch) calls every 6 h. Credentials: register at https://www.etsy.com/developers/register, create an app (personal-access apps are approved instantly; commercial access requires Etsy's review under the API Terms of Use https://www.etsy.com/legal/api) and copy the keystring into ETSY_API_KEY. Until then the framework reports the connector DISABLED (requires) and the crawler exits with a missing_credentials anomaly. Fixtures are synthesised from the official OpenAPI schema (ShopListing, Money, ListingImage), not live captures — see the fixture note. Category slugs come from the configured query seeds (keywords + taxonomy path), confidence 0.7 (title-level identification only).",6159      "enabled": true,6160      "schemaVersion": "1.0",6161      "config": {6162        "limit": 100,6163        "pagesPerQuery": 1,6164        "backfillPages": 5,6165        "queriesPerRun": 8,6166        "fetchImages": true,6167        "sortOn": "created",6168        "sortOrder": "desc",6169        "queries": [6170          {6171            "keywords": "vintage pokemon card",6172            "taxonomyPath": [6173              "Toys & Games",6174              "Games & Puzzles",6175              "Card Games"6176            ],6177            "categorySlug": "pokemon"6178          },6179          {6180            "keywords": "vintage baseball card",6181            "taxonomyPath": [6182              "Art & Collectibles",6183              "Collectibles"6184            ],6185            "categorySlug": "sports_cards"6186          },6187          {6188            "keywords": "vintage comic book",6189            "taxonomyPath": [6190              "Books, Movies & Music",6191              "Books",6192              "Comics & Graphic Novels"6193            ],6194            "categorySlug": "comics"6195          },6196          {6197            "keywords": "vintage film camera",6198            "taxonomyPath": [6199              "Electronics & Accessories",6200              "Cameras & Equipment"6201            ],6202            "categorySlug": "cameras"6203          },6204          {6205            "keywords": "vintage fountain pen",6206            "categorySlug": "pens"6207          },6208          {6209            "keywords": "antique mantel clock",6210            "categorySlug": "clocks"6211          },6212          {6213            "keywords": "mid century modern chair",6214            "taxonomyPath": [6215              "Home & Living",6216              "Furniture"6217            ],6218            "categorySlug": "design_furniture"6219          },6220          {6221            "keywords": "antique porcelain vase",6222            "categorySlug": "porcelain"6223          },6224          {6225            "keywords": "murano glass vase",6226            "categorySlug": "glass_crystal"6227          },6228          {6229            "keywords": "sterling silver antique",6230            "categorySlug": "silver"6231          },6232          {6233            "keywords": "vintage wristwatch",6234            "taxonomyPath": [6235              "Accessories",6236              "Watches"6237            ],6238            "categorySlug": "other_watches"6239          },6240          {6241            "keywords": "original movie poster",6242            "categorySlug": "movie_posters"6243          },6244          {6245            "keywords": "vintage vinyl record first pressing",6246            "categorySlug": "music"6247          },6248          {6249            "keywords": "first edition book",6250            "taxonomyPath": [6251              "Books, Movies & Music",6252              "Books"6253            ],6254            "categorySlug": "books"6255          },6256          {6257            "keywords": "antique postcard",6258            "categorySlug": "postcards"6259          },6260          {6261            "keywords": "vintage advertising sign",6262            "categorySlug": "advertising"6263          },6264          {6265            "keywords": "vintage typewriter",6266            "categorySlug": "typewriters"6267          },6268          {6269            "keywords": "antique microscope",6270            "categorySlug": "scientific_instruments"6271          },6272          {6273            "keywords": "vintage tin toy",6274            "taxonomyPath": [6275              "Toys & Games",6276              "Toys"6277            ],6278            "categorySlug": "vintage_toys"6279          }6280        ]6281      },6282      "capabilities": [6283        "live_listings",6284        "images",6285        "url_lookup"6286      ],6287      "refreshClass": "normal",6288      "domain": "etsy.com",6289      "country": "US",6290      "requires": [6291        "ETSY_API_KEY"6292      ],6293      "acquisitionMethod": "official API (x-api-key)",6294      "historicalDepth": "none"6295    },6296    {6297      "id": "european-watch-company",6298      "displayName": "European Watch Company (Boston dealer — inventory)",6299      "sourceId": "european-watch-company",6300      "sourceName": "European Watch Company",6301      "sourceType": "dealer",6302      "sourceUrl": "https://www.europeanwatch.com",6303      "module": "api/european-watch-company",6304      "enginePriority": [6305        "api",6306        "firecrawl"6307      ],6308      "categories": [6309        "watches",6310        "rolex",6311        "patek_philippe",6312        "audemars_piguet",6313        "omega",6314        "other_watches"6315      ],6316      "regions": [6317        "US"6318      ],6319      "languages": [6320        "en"6321      ],6322      "currency": [6323        "USD"6324      ],6325      "supportsListings": true,6326      "supportsSold": false,6327      "supportsAuctions": false,6328      "supportsImages": true,6329      "supportsCatalog": false,6330      "supportsPopulation": false,6331      "supportsLookup": true,6332      "refreshFrequencyMinutes": 720,6333      "priority": "medium",6334      "trustScore": 0.8,6335      "attributionRequired": true,6336      "termsUrl": "https://www.europeanwatch.com/terms-and-conditions",6337      "accessNotes": "One request per run: the public inventory grid `/all` (≈5 MB, server-rendered, ~750 watches) gives brand + model title, USD asking price, status badge (In Stock / New Arrival / Sale Pending), image and product URL (`/watch/<slug>-<id>`); parsed with cheerio from the card markup, no JS. Product pages (schema.org Product with sku, mpn = reference, price, availability, condition) are fetched only for URL lookup. robots.txt disallows only /private/, /api/, /app/, /profile/ (verified 2026-09-08); the sitemap `sitemap-products.xml` mirrors the same 750 URLs. Asking prices are listings, never sales; 'Sale Pending' is kept as metadata. No account, cart or customer pages are touched. 3 s between requests, concurrency 1.",6338      "enabled": true,6339      "schemaVersion": "1.0",6340      "config": {6341        "pages": [6342          "/all"6343        ]6344      },6345      "capabilities": [6346        "live_listings",6347        "images",6348        "url_lookup"6349      ],6350      "refreshClass": "normal",6351      "domain": "europeanwatch.com",6352      "country": "US",6353      "requires": [],6354      "acquisitionMethod": "server-rendered inventory grid + schema.org Product JSON-LD, direct HTTP",6355      "historicalDepth": "none"6356    },6357    {6358      "id": "everything-games",6359      "displayName": "Everything Games (Canadian TCG & board-game store, CAD)",6360      "sourceId": "everything-games",6361      "sourceName": "Everything Games",6362      "sourceType": "dealer",6363      "sourceUrl": "https://www.everythinggames.ca",6364      "module": "api/everything-games",6365      "enginePriority": [6366        "api"6367      ],6368      "categories": [6369        "magic_the_gathering",6370        "pokemon",6371        "other_tcg",6372        "flesh_and_blood",6373        "weiss_schwarz",6374        "board_games"6375      ],6376      "regions": [6377        "CA"6378      ],6379      "languages": [6380        "en"6381      ],6382      "currency": [6383        "CAD"6384      ],6385      "supportsListings": true,6386      "supportsSold": false,6387      "supportsAuctions": false,6388      "supportsImages": true,6389      "supportsCatalog": false,6390      "supportsPopulation": false,6391      "supportsLookup": true,6392      "refreshFrequencyMinutes": 720,6393      "priority": "medium",6394      "trustScore": 0.75,6395      "attributionRequired": true,6396      "termsUrl": "https://www.everythinggames.ca/policies/terms-of-service",6397      "accessNotes": "Everything Games (everythinggames.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 8 configured collections (mtg-singles, pokemon-singles-instock, grand-archive-1, flesh-and-blood-singles, weiss-singles, riftbound-singles, shadowverse, board-games) and /products/<handle>.json for URL lookups (~20k MTG singles, 3k Pokémon, Grand Archive/FaB/Weiß singles). 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 — Warhammer/miniature ranges, paints, dice, RPG books, supplies. No personal data is collected; seller = the store itself.",6398      "enabled": true,6399      "schemaVersion": "1.0",6400      "config": {6401        "currency": "CAD",6402        "market": "CA",6403        "seller": "Everything Games",6404        "location": "Winnipeg, MB, Canada",6405        "collections": [6406          {6407            "handle": "mtg-singles",6408            "categorySlug": "magic_the_gathering",6409            "franchise": "Magic: The Gathering"6410          },6411          {6412            "handle": "pokemon-singles-instock",6413            "categorySlug": "pokemon",6414            "franchise": "Pokémon"6415          },6416          {6417            "handle": "grand-archive-1",6418            "categorySlug": "other_tcg",6419            "franchise": "Grand Archive"6420          },6421          {6422            "handle": "flesh-and-blood-singles",6423            "categorySlug": "flesh_and_blood",6424            "franchise": "Flesh and Blood"6425          },6426          {6427            "handle": "weiss-singles",6428            "categorySlug": "weiss_schwarz",6429            "franchise": "Weiß Schwarz"6430          },6431          {6432            "handle": "riftbound-singles",6433            "categorySlug": "other_tcg",6434            "franchise": "Riftbound"6435          },6436          {6437            "handle": "shadowverse",6438            "categorySlug": "other_tcg",6439            "franchise": "Shadowverse Evolve"6440          },6441          {6442            "handle": "board-games",6443            "categorySlug": "board_games"6444          }6445        ],6446        "rules": [],6447        "defaultCategory": null,6448        "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",6449        "keepOutOfStock": true,6450        "fetchBarcodes": false,6451        "wholeShop": false,6452        "pageSize": 250,6453        "titlePattern": "^(?<name>.+?) \\[(?<set>[A-Z0-9]+)(?: - (?<number>\\S+))?\\]$"6454      },6455      "capabilities": [6456        "live_listings",6457        "images",6458        "url_lookup"6459      ],6460      "refreshClass": "normal",6461      "domain": "everythinggames.ca",6462      "country": "CA",6463      "requires": [],6464      "acquisitionMethod": "Shopify storefront products.json",6465      "historicalDepth": "none"6466    },6467    {6468      "id": "face-to-face-games",6469      "displayName": "Face to Face Games (Canadian TCG store, CAD)",6470      "sourceId": "face-to-face-games",6471      "sourceName": "Face to Face Games",6472      "sourceType": "dealer",6473      "sourceUrl": "https://www.facetofacegames.com",6474      "module": "api/face-to-face-games",6475      "enginePriority": [6476        "api"6477      ],6478      "categories": [6479        "magic_the_gathering",6480        "pokemon",6481        "disney_lorcana",6482        "yugioh",6483        "one_piece_card_game",6484        "star_wars_tcg",6485        "other_tcg"6486      ],6487      "regions": [6488        "CA"6489      ],6490      "languages": [6491        "en",6492        "fr"6493      ],6494      "currency": [6495        "CAD"6496      ],6497      "supportsListings": true,6498      "supportsSold": false,6499      "supportsAuctions": false,6500      "supportsImages": true,6501      "supportsCatalog": false,6502      "supportsPopulation": false,6503      "supportsLookup": true,6504      "refreshFrequencyMinutes": 720,6505      "priority": "medium",6506      "trustScore": 0.75,6507      "attributionRequired": true,6508      "termsUrl": "https://www.facetofacegames.com/policies/terms-of-service",6509      "accessNotes": "Face to Face Games (facetofacegames.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 12 configured collections (magic-the-gathering-singles, magic-the-gathering-high-end, magic-the-gathering-sealed, pokemon-singles, pokemon-high-end, pokemon-sealed, lorcana-singles, lorcana-sealed … (+4 more, see config.collections)) and /products/<handle>.json for URL lookups (~290k singles; MTG 168k, Pokémon 40k, high-end/graded 15k). 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 — events/WPN tickets, supplies (sleeves, deck boxes, playmats), the giant \"single\"/\"archive\"/flash-sale umbrella collections (duplicates of the per-game ones). No personal data is collected; seller = the store itself.",6510      "enabled": true,6511      "schemaVersion": "1.0",6512      "config": {6513        "currency": "CAD",6514        "market": "CA",6515        "seller": "Face to Face Games",6516        "location": "Toronto / Montréal, Canada",6517        "collections": [6518          {6519            "handle": "magic-the-gathering-singles",6520            "categorySlug": "magic_the_gathering",6521            "franchise": "Magic: The Gathering"6522          },6523          {6524            "handle": "magic-the-gathering-high-end",6525            "categorySlug": "magic_the_gathering",6526            "franchise": "Magic: The Gathering"6527          },6528          {6529            "handle": "magic-the-gathering-sealed",6530            "categorySlug": "magic_the_gathering",6531            "franchise": "Magic: The Gathering"6532          },6533          {6534            "handle": "pokemon-singles",6535            "categorySlug": "pokemon",6536            "franchise": "Pokémon"6537          },6538          {6539            "handle": "pokemon-high-end",6540            "categorySlug": "pokemon",6541            "franchise": "Pokémon"6542          },6543          {6544            "handle": "pokemon-sealed",6545            "categorySlug": "pokemon",6546            "franchise": "Pokémon"6547          },6548          {6549            "handle": "lorcana-singles",6550            "categorySlug": "disney_lorcana",6551            "franchise": "Disney Lorcana"6552          },6553          {6554            "handle": "lorcana-sealed",6555            "categorySlug": "disney_lorcana",6556            "franchise": "Disney Lorcana"6557          },6558          {6559            "handle": "yu-gi-oh-premium",6560            "categorySlug": "yugioh",6561            "franchise": "Yu-Gi-Oh!"6562          },6563          {6564            "handle": "one-piece",6565            "categorySlug": "one_piece_card_game",6566            "franchise": "One Piece"6567          },6568          {6569            "handle": "star-wars-sealed",6570            "categorySlug": "star_wars_tcg",6571            "franchise": "Star Wars Unlimited"6572          },6573          {6574            "handle": "riftbound-singles",6575            "categorySlug": "other_tcg",6576            "franchise": "Riftbound"6577          }6578        ],6579        "rules": [],6580        "defaultCategory": null,6581        "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",6582        "keepOutOfStock": true,6583        "fetchBarcodes": false,6584        "wholeShop": false,6585        "pageSize": 250,6586        "titlePattern": "^(?<name>.+?) - (?<number>[^\\s\\[]+) - [^\\[]*\\[(?<set>[a-z0-9]+)(?:-[^\\]]*)?\\]"6587      },6588      "capabilities": [6589        "live_listings",6590        "images",6591        "url_lookup"6592      ],6593      "refreshClass": "normal",6594      "domain": "facetofacegames.com",6595      "country": "CA",6596      "requires": [],6597      "acquisitionMethod": "Shopify storefront products.json",6598      "historicalDepth": "none"6599    },6600    {6601      "id": "fanatics-collect",6602      "displayName": "Fanatics Collect (sold results)",6603      "sourceId": "fanatics-collect",6604      "sourceName": "Fanatics Collect",6605      "sourceType": "marketplace",6606      "sourceUrl": "https://www.fanaticscollect.com",6607      "module": "api/fanatics-collect",6608      "enginePriority": [6609        "api"6610      ],6611      "categories": [6612        "baseball_cards",6613        "basketball_cards",6614        "football_cards",6615        "hockey_cards",6616        "soccer_cards",6617        "other_sports_cards",6618        "pokemon",6619        "magic_the_gathering",6620        "yugioh",6621        "one_piece_card_game",6622        "non_sport_cards",6623        "sports_memorabilia"6624      ],6625      "regions": [6626        "US"6627      ],6628      "languages": [6629        "en"6630      ],6631      "currency": [6632        "USD"6633      ],6634      "supportsListings": false,6635      "supportsSold": true,6636      "supportsAuctions": false,6637      "supportsImages": true,6638      "supportsCatalog": false,6639      "supportsPopulation": false,6640      "supportsLookup": true,6641      "refreshFrequencyMinutes": 360,6642      "priority": "high",6643      "trustScore": 0.9,6644      "attributionRequired": true,6645      "termsUrl": "https://help.fanaticscollect.com/hc/en-us/articles/18433319094045-Terms-of-Use",6646      "accessNotes": "Plain HTTPS with the RareIndex user agent (site is behind Cloudflare but serves the bot UA normally; no challenge seen). robots.txt (User-agent *) disallows only /login, /join, /i-am-not-a-robot, /share/ and /email/verify/* — none of which we touch. Discovery: /sitemap.xml (index) → sitemap/sales-history-weekly-auction-N.xml.gz and sitemap/sales-history-fixed-price-N.xml.gz (gzip url sets of ~50 000 URLs each with <lastmod>; 63 children in total, higher N = newer). Each public item page (/weekly/<uuid>, /fixed/<uuid>/<slug>) embeds the listing in its Next.js RSC payload (prefetchedItemData: title, listingType, status, bidCount, currentBid, collectSales[{soldDate, soldFor}], auction name/shortName/endsAt, lotString, images) plus a Product JSON-LD block; we read that HTML only — no GraphQL/API calls, no login, no bidding pages. A sale is recorded only when collectSales is non-empty; its soldFor INCLUDES the buyer's premium (observed: winning bid $230.00 → soldFor $276.00, +20 %), so buyerPremiumIncluded=true for auction listings with the hammer (currentBid) and derived premium % kept in metadata; fixed-price/best-offer sales have no premium concept (null). saleDate = collectSales.soldDate (never fetch time). Pages without a sale are skipped (anomaly if >30 % of a run). The Terms of Use are published on a client-rendered Zendesk page whose text is not readable over plain HTTP, so no automated-access clause could be verified — flagged here for legal review. 1.5 s politeness delay, 0 credits.",6647      "enabled": true,6648      "schemaVersion": "1.0",6649      "config": {6650        "pagesPerRun": 300,6651        "probePages": 36652      },6653      "capabilities": [6654        "sold_listings",6655        "images",6656        "url_lookup",6657        "historical_backfill"6658      ],6659      "refreshClass": "normal",6660      "domain": "fanaticscollect.com",6661      "country": "US",6662      "requires": [],6663      "acquisitionMethod": "sitemap + embedded RSC JSON on public item pages",6664      "historicalDepth": "years"6665    },6666    {6667      "id": "fashionphile",6668      "displayName": "FASHIONPHILE (pre-owned luxury listings & sold items)",6669      "sourceId": "fashionphile",6670      "sourceName": "FASHIONPHILE",6671      "sourceType": "marketplace",6672      "sourceUrl": "https://www.fashionphile.com",6673      "module": "api/fashionphile",6674      "enginePriority": [6675        "api"6676      ],6677      "categories": [6678        "luxury_handbags",6679        "watches",6680        "other_watches",6681        "rolex",6682        "jewelry",6683        "fashion_streetwear"6684      ],6685      "regions": [6686        "US"6687      ],6688      "languages": [6689        "en"6690      ],6691      "currency": [6692        "USD"6693      ],6694      "supportsListings": true,6695      "supportsSold": false,6696      "supportsAuctions": false,6697      "supportsImages": true,6698      "supportsCatalog": false,6699      "supportsPopulation": false,6700      "supportsLookup": true,6701      "refreshFrequencyMinutes": 720,6702      "priority": "medium",6703      "trustScore": 0.8,6704      "attributionRequired": true,6705      "termsUrl": "https://www.fashionphile.com/terms-of-use",6706      "accessNotes": "Public Shopify storefront feed (www.fashionphile.com/collections/<brand>/products.json) fetched over plain HTTPS with the RareIndex user agent; robots.txt allows /collections/ (only sort/filter permutations, cart, account and checkout paths are disallowed). Each product is one authenticated pre-owned item priced in USD; `available:false` on a still-published product means the item shows SOLD on the site, which is recorded as a listing with availability=sold (the last asking price is not asserted as the transaction price). Condition ratings are only on HTML product pages and are not fetched. 1.5 s between requests, 250 products per page.",6707      "enabled": true,6708      "schemaVersion": "1.0",6709      "config": {6710        "seeds": [6711          "hermes",6712          "chanel",6713          "louis-vuitton",6714          "dior",6715          "gucci",6716          "goyard",6717          "fendi",6718          "bottega-veneta",6719          "prada",6720          "celine",6721          "loewe",6722          "saint-laurent",6723          "rolex",6724          "cartier",6725          "van-cleef-arpels"6726        ],6727        "pagesPerSeed": 26728      },6729      "capabilities": [6730        "live_listings",6731        "images",6732        "url_lookup"6733      ],6734      "refreshClass": "normal",6735      "domain": "fashionphile.com",6736      "country": "US",6737      "requires": [],6738      "historicalDepth": "none"6739    },6740    {6741      "id": "flagshipgames",6742      "displayName": "Flagship Games",6743      "sourceId": "flagshipgames",6744      "sourceName": "Flagship Games",6745      "sourceType": "dealer",6746      "sourceUrl": "https://www.flagshipgames.sg",6747      "module": "api/flagshipgames",6748      "enginePriority": [6749        "api"6750      ],6751      "categories": [6752        "pokemon",6753        "magic_the_gathering",6754        "one_piece_card_game",6755        "disney_lorcana",6756        "final_fantasy_tcg"6757      ],6758      "regions": [6759        "SG"6760      ],6761      "languages": [6762        "en"6763      ],6764      "currency": [6765        "SGD"6766      ],6767      "supportsListings": true,6768      "supportsSold": false,6769      "supportsAuctions": false,6770      "supportsImages": true,6771      "supportsCatalog": false,6772      "supportsPopulation": false,6773      "supportsLookup": true,6774      "refreshFrequencyMinutes": 720,6775      "priority": "medium",6776      "trustScore": 0.65,6777      "attributionRequired": true,6778      "termsUrl": "https://www.flagshipgames.sg/policies/terms-of-service",6779      "accessNotes": "Flagship Games (flagshipgames.sg) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (english-pokemon-1, japanese-pokemon-1, pokemon-25th-anniversary-celebrations, mystery-booster, final-fantasy, final-fantasy-commander, marvel-super-heroes-commander, foundations, aetherdrift, edge-of-eternities, lorwyn-eclipsed, bloomburrow, duskmourn-house-of-horror, modern-horizons-3, commander-masters, avatar-the-last-airbender, ice-age, fourth-edition, alpha-limited-edition, mtg-sealed-products, one-piece-card-game, lorcana-sealed-products). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency SGD (/meta.json currency SGD, country SG, Shopify.currency rate 1.0), GST included. Variants are condition + finish (Near Mint Foil…); a 0.00 price marks an unstocked condition and is dropped. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",6780      "enabled": true,6781      "schemaVersion": "1.0",6782      "config": {6783        "currency": "SGD",6784        "seller": "Flagship Games",6785        "location": null,6786        "collections": [6787          {6788            "handle": "english-pokemon-1",6789            "categorySlug": "pokemon",6790            "franchise": "Pokémon"6791          },6792          {6793            "handle": "japanese-pokemon-1",6794            "categorySlug": "pokemon",6795            "franchise": "Pokémon"6796          },6797          {6798            "handle": "pokemon-25th-anniversary-celebrations",6799            "categorySlug": "pokemon",6800            "franchise": "Pokémon"6801          },6802          {6803            "handle": "mystery-booster",6804            "categorySlug": "magic_the_gathering",6805            "franchise": "Magic: The Gathering"6806          },6807          {6808            "handle": "final-fantasy",6809            "categorySlug": null6810          },6811          {6812            "handle": "final-fantasy-commander",6813            "categorySlug": "magic_the_gathering",6814            "franchise": "Magic: The Gathering"6815          },6816          {6817            "handle": "marvel-super-heroes-commander",6818            "categorySlug": "magic_the_gathering",6819            "franchise": "Magic: The Gathering"6820          },6821          {6822            "handle": "foundations",6823            "categorySlug": "magic_the_gathering",6824            "franchise": "Magic: The Gathering"6825          },6826          {6827            "handle": "aetherdrift",6828            "categorySlug": "magic_the_gathering",6829            "franchise": "Magic: The Gathering"6830          },6831          {6832            "handle": "edge-of-eternities",6833            "categorySlug": "magic_the_gathering",6834            "franchise": "Magic: The Gathering"6835          },6836          {6837            "handle": "lorwyn-eclipsed",6838            "categorySlug": "magic_the_gathering",6839            "franchise": "Magic: The Gathering"6840          },6841          {6842            "handle": "bloomburrow",6843            "categorySlug": "magic_the_gathering",6844            "franchise": "Magic: The Gathering"6845          },6846          {6847            "handle": "duskmourn-house-of-horror",6848            "categorySlug": "magic_the_gathering",6849            "franchise": "Magic: The Gathering"6850          },6851          {6852            "handle": "modern-horizons-3",6853            "categorySlug": "magic_the_gathering",6854            "franchise": "Magic: The Gathering"6855          },6856          {6857            "handle": "commander-masters",6858            "categorySlug": "magic_the_gathering",6859            "franchise": "Magic: The Gathering"6860          },6861          {6862            "handle": "avatar-the-last-airbender",6863            "categorySlug": "magic_the_gathering",6864            "franchise": "Magic: The Gathering"6865          },6866          {6867            "handle": "ice-age",6868            "categorySlug": "magic_the_gathering",6869            "franchise": "Magic: The Gathering"6870          },6871          {6872            "handle": "fourth-edition",6873            "categorySlug": "magic_the_gathering",6874            "franchise": "Magic: The Gathering"6875          },6876          {6877            "handle": "alpha-limited-edition",6878            "categorySlug": "magic_the_gathering",6879            "franchise": "Magic: The Gathering"6880          },6881          {6882            "handle": "mtg-sealed-products",6883            "categorySlug": "magic_the_gathering",6884            "franchise": "Magic: The Gathering"6885          },6886          {6887            "handle": "one-piece-card-game",6888            "categorySlug": "one_piece_card_game",6889            "franchise": "One Piece"6890          },6891          {6892            "handle": "lorcana-sealed-products",6893            "categorySlug": "disney_lorcana",6894            "franchise": "Disney Lorcana"6895          }6896        ],6897        "rules": [6898          {6899            "match": "\\| mtg single \\||\\| mtg sealed \\||magic: the gathering",6900            "categorySlug": "magic_the_gathering",6901            "franchise": "Magic: The Gathering"6902          },6903          {6904            "match": "final fantasy (tcg|trading card)|\\| ff-?tcg|\\bopus\\b",6905            "categorySlug": "final_fantasy_tcg",6906            "franchise": "Final Fantasy"6907          }6908        ],6909        "defaultCategory": null,6910        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|mystery pack|1 card mystery|\\btoken\\b|art series|art card|singapore shipping only",6911        "keepOutOfStock": true,6912        "titlePattern": "^(?<name>.+?)(?:\\s*\\((?<number>\\d+/\\d+)\\))?\\s*\\[(?<set>[^\\]]+)\\]\\s*$",6913        "pageSize": 250,6914        "fetchBarcodes": false,6915        "wholeShop": false6916      },6917      "capabilities": [6918        "live_listings",6919        "images",6920        "url_lookup"6921      ],6922      "refreshClass": "normal",6923      "domain": "flagshipgames.sg",6924      "country": "SG",6925      "requires": [],6926      "acquisitionMethod": "Shopify storefront products.json (public JSON)",6927      "historicalDepth": "none"6928    },6929    {6930      "id": "flight-club",6931      "displayName": "Flight Club (sneaker lowest asks & retail)",6932      "sourceId": "flight-club",6933      "sourceName": "Flight Club",6934      "sourceType": "marketplace",6935      "sourceUrl": "https://www.flightclub.com",6936      "module": "firecrawl/flight-club",6937      "enginePriority": [6938        "firecrawl",6939        "scrapfly"6940      ],6941      "categories": [6942        "sneakers",6943        "nike_jordan",6944        "adidas_yeezy",6945        "new_balance_asics_other"6946      ],6947      "regions": [6948        "US"6949      ],6950      "languages": [6951        "en"6952      ],6953      "currency": [6954        "USD"6955      ],6956      "supportsListings": true,6957      "supportsSold": false,6958      "supportsAuctions": false,6959      "supportsImages": true,6960      "supportsCatalog": true,6961      "supportsPopulation": false,6962      "supportsLookup": false,6963      "refreshFrequencyMinutes": 1440,6964      "priority": "medium",6965      "trustScore": 0.75,6966      "attributionRequired": true,6967      "termsUrl": "https://www.flightclub.com/terms",6968      "accessNotes": "Plain HTTPS requests receive 403 (robots.txt itself is not served to non-browser agents); Firecrawl's standard fetch returns the public category pages (flightclub.com/air-jordans?page=N …) whose __NEXT_DATA__ holds the search grid: product id, name, brand, image, lowest price, retail price and a slug ending with the style code. 1 Firecrawl credit per page of 30 products; 2 s between pages. Listings/asks only — Flight Club does not publish sale history publicly.",6969      "enabled": true,6970      "schemaVersion": "1.0",6971      "config": {6972        "seeds": [6973          "air-jordans",6974          "nike",6975          "adidas/adidas-yeezy",6976          "adidas",6977          "new-balance",6978          "asics"6979        ],6980        "pagesPerSeed": 26981      },6982      "capabilities": [6983        "live_listings",6984        "images",6985        "catalog"6986      ],6987      "refreshClass": "normal",6988      "domain": "flightclub.com",6989      "country": "US",6990      "requires": [],6991      "historicalDepth": "none"6992    },6993    {6994      "id": "footdistrict",6995      "displayName": "FOOTDISTRICT",6996      "sourceId": "footdistrict",6997      "sourceName": "FOOTDISTRICT",6998      "sourceType": "dealer",6999      "sourceUrl": "https://footdistrict.com",7000      "module": "api/footdistrict",7001      "enginePriority": [7002        "api"7003      ],7004      "categories": [7005        "sneakers",7006        "nike_jordan",7007        "adidas_yeezy",7008        "new_balance_asics_other",7009        "designer_toys"7010      ],7011      "regions": [7012        "ES"7013      ],7014      "languages": [7015        "es",7016        "en"7017      ],7018      "currency": [7019        "EUR"7020      ],7021      "supportsListings": true,7022      "supportsSold": false,7023      "supportsAuctions": false,7024      "supportsImages": true,7025      "supportsCatalog": false,7026      "supportsPopulation": false,7027      "supportsLookup": true,7028      "refreshFrequencyMinutes": 720,7029      "priority": "medium",7030      "trustScore": 0.7,7031      "attributionRequired": true,7032      "termsUrl": "https://footdistrict.com/policies/terms-of-service",7033      "accessNotes": "FOOTDISTRICT (footdistrict.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (sneakers, sneakers-jordan, sneakers-nike-dunk, sneakers-adidas-samba, sneakers-new-balance-made-in-usa, art-toys). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency EUR (/meta.json currency EUR, Shopify.currency rate 1.0), Spanish VAT included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",7034      "enabled": true,7035      "schemaVersion": "1.0",7036      "config": {7037        "currency": "EUR",7038        "seller": "FOOTDISTRICT",7039        "location": null,7040        "collections": [7041          {7042            "handle": "sneakers",7043            "categorySlug": "sneakers"7044          },7045          {7046            "handle": "sneakers-jordan",7047            "categorySlug": "nike_jordan",7048            "brand": "Jordan"7049          },7050          {7051            "handle": "sneakers-nike-dunk",7052            "categorySlug": "nike_jordan",7053            "brand": "Nike"7054          },7055          {7056            "handle": "sneakers-adidas-samba",7057            "categorySlug": "adidas_yeezy",7058            "brand": "adidas"7059          },7060          {7061            "handle": "sneakers-new-balance-made-in-usa",7062            "categorySlug": "new_balance_asics_other",7063            "brand": "New Balance"7064          },7065          {7066            "handle": "art-toys",7067            "categorySlug": "designer_toys",7068            "brand": "Medicom Toy"7069          }7070        ],7071        "rules": [7072          {7073            "match": "jordan",7074            "categorySlug": "nike_jordan",7075            "brand": "Jordan"7076          },7077          {7078            "match": "\\bnike\\b|air max|air force|\\bdunk\\b|\\bsb\\b|blazer|vapormax|huarache|cortez|p-6000|vomero|pegasus|\\bshox\\b|\\bkobe\\b|lebron|\\bnocta\\b|\\bacg\\b|sacai|off-white|travis scott",7079            "categorySlug": "nike_jordan",7080            "brand": "Nike"7081          },7082          {7083            "match": "yeezy",7084            "categorySlug": "adidas_yeezy",7085            "brand": "adidas Yeezy"7086          },7087          {7088            "match": "adidas|\\bsamba\\b|gazelle|spezial|superstar|\\bcampus\\b|\\bforum\\b|ultraboost|\\bnmd\\b|stan smith|adizero|\\by-3\\b|climacool|\\bzx\\b|\\beqt\\b|\\bsl ?72\\b|adistar|megaride|taekwondo|wales bonner",7089            "categorySlug": "adidas_yeezy",7090            "brand": "adidas"7091          },7092          {7093            "match": "new balance|asics|puma|reebok|saucony|salomon|converse|\\bvans\\b|\\bhoka\\b|karhu|mizuno|autry|diadora|\\bveja\\b|clarks|timberland|dr\\.? ?martens|\\bugg\\b|mallet|cleens|umbro|le coq|kangaroos|\\bfila\\b|k-swiss|lacoste|golden goose|balenciaga|\\bdior\\b|gucci|louis vuitton|prada|amiri|herm[eè]s|rick owens|margiela|mcqueen|common projects|axel arigato|represent|loewe|bottega|valentino|givenchy|fendi|burberry|chanel|celine|saint laurent|versace|moncler|birkenstock|\\bon\\b (cloud|running)|cloudmonster|cloudtilt|merrell|keen\\b|ewing|ellesse|kappa|hi-tec|etnies|\\bdc shoes|gola|onitsuka|norda|novesta|stepney|sunnei|camper|mschf|maison mihara|\\bbape\\b|\\bsta\\b",7094            "categorySlug": "new_balance_asics_other"7095          }7096        ],7097        "defaultCategory": null,7098        "exclude": "t-shirt|\\btee\\b|\\btees\\b|hoodie|sweatshirt|crewneck|jacket|\\bcoat\\b|tracksuit|track pants|track jacket|sweatpants|joggers|shorts|jeans|trousers|\\bpants\\b|cargo|\\bcap\\b|\\bhat\\b|beanie|balaclava|socks|\\bbag\\b|backpack|tote|wallet|card holder|\\bbelt\\b|sunglasses|fragrance|perfume|cologne|keyring|lanyard|cleaner|crep protect|protector spray|laces|insole|shoe tree|gift card|jersey|\\bpolo\\b|\\bshirt\\b|knitwear|cardigan|\\bvest\\b|gilet|puffer|scarf|gloves|jewellery|jewelry|\\bchain\\b|bracelet|necklace|\\bring\\b|umbrella|towel|doormat|\\brug\\b|candle|\\bmug\\b|phone case|airpods|dress\\b|skirt|leggings|bodysuit|swim|bikini|underwear|boxers|slippers|flip[- ]?flops?|sandals?\\b|\\bslides?\\b|\\bmules?\\b|crocs|clog|camiseta|sudadera|chaqueta|abrigo|pantal|gorra|calcet|bolso|cartera|cintur|mochila|sandalia|chancla|zapatilla de casa|\\bropa\\b|riñonera|bufanda|guantes|vestido|falda|plumas|chaleco|cardigan|polo\\b|camisa|jersey|\\| ropa|\\| accesorios",7099        "keepOutOfStock": true,7100        "pageSize": 250,7101        "fetchBarcodes": false,7102        "wholeShop": false7103      },7104      "capabilities": [7105        "live_listings",7106        "images",7107        "url_lookup"7108      ],7109      "refreshClass": "normal",7110      "domain": "footdistrict.com",7111      "country": "ES",7112      "requires": [],7113      "acquisitionMethod": "Shopify storefront products.json (public JSON)",7114      "historicalDepth": "none"7115    },7116    {7117      "id": "fossilera",7118      "displayName": "FossilEra (fossils, minerals & meteorites dealer, USD)",7119      "sourceId": "fossilera",7120      "sourceName": "FossilEra",7121      "sourceType": "dealer",7122      "sourceUrl": "https://www.fossilera.com",7123      "module": "api/fossilera",7124      "enginePriority": [7125        "api",7126        "firecrawl"7127      ],7128      "categories": [7129        "fossils",7130        "minerals",7131        "meteorites"7132      ],7133      "regions": [7134        "US"7135      ],7136      "languages": [7137        "en"7138      ],7139      "currency": [7140        "USD"7141      ],7142      "supportsListings": true,7143      "supportsSold": false,7144      "supportsAuctions": false,7145      "supportsImages": true,7146      "supportsCatalog": false,7147      "supportsPopulation": false,7148      "supportsLookup": true,7149      "refreshFrequencyMinutes": 1440,7150      "priority": "low",7151      "trustScore": 0.85,7152      "attributionRequired": true,7153      "termsUrl": "https://www.fossilera.com/pages/terms-of-service",7154      "accessNotes": "Public category pages (fossilera.com/fossils-for-sale/<category>?page=N) and specimen pages fetched over plain HTTPS with the RareIndex user agent (robots.txt only disallows gift-card/checkout helpers). Each card gives the specimen title, price (and previous price when reduced), image and the FossilEra item number; specimen pages add species, geological age, location, formation, size and category. Every specimen is unique, so each becomes its own asset with one fixed-price listing (available or, when the page states it, sold — no sale date is published, so sold items are listings with availability=sold, never transactions). Compliance: fossilera states all items are legally collected; locality is kept in attributes.country/region so jurisdiction flags (taxonomy compliance 'jurisdiction_check') can be applied downstream.",7155      "enabled": true,7156      "schemaVersion": "1.0",7157      "config": {7158        "seeds": [7159          {7160            "path": "/fossils-for-sale/dinosaur-teeth",7161            "categorySlug": "fossils"7162          },7163          {7164            "path": "/fossils-for-sale/megalodon-teeth",7165            "categorySlug": "fossils"7166          },7167          {7168            "path": "/fossils-for-sale/ammonites",7169            "categorySlug": "fossils"7170          },7171          {7172            "path": "/fossils-for-sale/trilobites",7173            "categorySlug": "fossils"7174          },7175          {7176            "path": "/minerals-for-sale",7177            "categorySlug": "minerals"7178          },7179          {7180            "path": "/meteorites-for-sale",7181            "categorySlug": "meteorites"7182          }7183        ],7184        "pagesPerSeed": 17185      },7186      "capabilities": [7187        "live_listings",7188        "images",7189        "url_lookup"7190      ],7191      "refreshClass": "normal",7192      "domain": "fossilera.com",7193      "country": "US",7194      "requires": [],7195      "historicalDepth": "none"7196    },7197    {7198      "id": "fusion-gaming",7199      "displayName": "Fusion Gaming (Canadian TCG & board-game store, CAD)",7200      "sourceId": "fusion-gaming",7201      "sourceName": "Fusion Gaming",7202      "sourceType": "dealer",7203      "sourceUrl": "https://www.fusiongamingonline.com",7204      "module": "api/fusion-gaming",7205      "enginePriority": [7206        "api"7207      ],7208      "categories": [7209        "magic_the_gathering",7210        "pokemon",7211        "star_wars_tcg",7212        "disney_lorcana",7213        "one_piece_card_game",7214        "other_tcg",7215        "board_games"7216      ],7217      "regions": [7218        "CA"7219      ],7220      "languages": [7221        "en"7222      ],7223      "currency": [7224        "CAD"7225      ],7226      "supportsListings": true,7227      "supportsSold": false,7228      "supportsAuctions": false,7229      "supportsImages": true,7230      "supportsCatalog": false,7231      "supportsPopulation": false,7232      "supportsLookup": true,7233      "refreshFrequencyMinutes": 720,7234      "priority": "medium",7235      "trustScore": 0.75,7236      "attributionRequired": true,7237      "termsUrl": "https://www.fusiongamingonline.com/policies/terms-of-service",7238      "accessNotes": "Fusion Gaming (fusiongamingonline.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 10 configured collections (mtg-singles, mtg-sealed-products, pokemon-singles, pokemon-all-sealed, star-wars-unlimited-singles, lorcana-singles-1, one-piece-singles, riftbound-singles-in-stock … (+2 more, see config.collections)) and /products/<handle>.json for URL lookups (~256k products; MTG singles 52k, Pokémon singles 9k+). 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 — accessories/playmats/sleeves/dice collections, event tickets, \"items-with-noprice\" collection. No personal data is collected; seller = the store itself.",7239      "enabled": true,7240      "schemaVersion": "1.0",7241      "config": {7242        "currency": "CAD",7243        "market": "CA",7244        "seller": "Fusion Gaming",7245        "location": "Winnipeg, MB, Canada",7246        "collections": [7247          {7248            "handle": "mtg-singles",7249            "categorySlug": "magic_the_gathering",7250            "franchise": "Magic: The Gathering"7251          },7252          {7253            "handle": "mtg-sealed-products",7254            "categorySlug": "magic_the_gathering",7255            "franchise": "Magic: The Gathering"7256          },7257          {7258            "handle": "pokemon-singles",7259            "categorySlug": "pokemon",7260            "franchise": "Pokémon"7261          },7262          {7263            "handle": "pokemon-all-sealed",7264            "categorySlug": "pokemon",7265            "franchise": "Pokémon"7266          },7267          {7268            "handle": "star-wars-unlimited-singles",7269            "categorySlug": "star_wars_tcg",7270            "franchise": "Star Wars Unlimited"7271          },7272          {7273            "handle": "lorcana-singles-1",7274            "categorySlug": "disney_lorcana",7275            "franchise": "Disney Lorcana"7276          },7277          {7278            "handle": "one-piece-singles",7279            "categorySlug": "one_piece_card_game",7280            "franchise": "One Piece"7281          },7282          {7283            "handle": "riftbound-singles-in-stock",7284            "categorySlug": "other_tcg",7285            "franchise": "Riftbound"7286          },7287          {7288            "handle": "riftbound-sealed-product",7289            "categorySlug": "other_tcg",7290            "franchise": "Riftbound"7291          },7292          {7293            "handle": "board-games-all",7294            "categorySlug": "board_games"7295          }7296        ],7297        "rules": [],7298        "defaultCategory": null,7299        "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",7300        "keepOutOfStock": true,7301        "fetchBarcodes": false,7302        "wholeShop": false,7303        "pageSize": 250,7304        "titlePattern": "^(?<name>.+?) \\[(?<set>[^\\]]+)\\]$"7305      },7306      "capabilities": [7307        "live_listings",7308        "images",7309        "url_lookup"7310      ],7311      "refreshClass": "normal",7312      "domain": "fusiongamingonline.com",7313      "country": "CA",7314      "requires": [],7315      "acquisitionMethod": "Shopify storefront products.json",7316      "historicalDepth": "none"7317    },7318    {7319      "id": "gameology",7320      "displayName": "Gameology",7321      "sourceId": "gameology",7322      "sourceName": "Gameology",7323      "sourceType": "dealer",7324      "sourceUrl": "https://www.gameology.com.au",7325      "module": "api/gameology",7326      "enginePriority": [7327        "api"7328      ],7329      "categories": [7330        "magic_the_gathering",7331        "pokemon",7332        "one_piece_card_game",7333        "disney_lorcana",7334        "yugioh",7335        "weiss_schwarz",7336        "digimon_tcg",7337        "star_wars_tcg",7338        "flesh_and_blood",7339        "dragon_ball_tcg",7340        "other_tcg",7341        "funko",7342        "action_figures",7343        "other_sports_cards",7344        "basketball_cards",7345        "final_fantasy_tcg",7346        "football_cards",7347        "soccer_cards",7348        "baseball_cards",7349        "hockey_cards",7350        "f1_cards"7351      ],7352      "regions": [7353        "AU"7354      ],7355      "languages": [7356        "en"7357      ],7358      "currency": [7359        "AUD"7360      ],7361      "supportsListings": true,7362      "supportsSold": false,7363      "supportsAuctions": false,7364      "supportsImages": true,7365      "supportsCatalog": false,7366      "supportsPopulation": false,7367      "supportsLookup": true,7368      "refreshFrequencyMinutes": 720,7369      "priority": "medium",7370      "trustScore": 0.65,7371      "attributionRequired": true,7372      "termsUrl": "https://www.gameology.com.au/policies/terms-of-service",7373      "accessNotes": "Gameology (gameology.com.au) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (magic-the-gathering-singles, pokemon-tcg-single-cards, japanese-pokemon-singles, pokemon-collection, one-piece-tcg-single-cards, lorcana-tcg-singles, yugioh, weiss-schwarz, digimon-card-game, star-wars-unlimited, flesh-and-blood-tcg, dragon-ball-super, graded-card, pop-vinyl-figures, statues-figures, sports-collectables, topps-sports-cards). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency AUD (/meta.json currency AUD, Shopify.currency rate 1.0), GST included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",7374      "enabled": true,7375      "schemaVersion": "1.0",7376      "config": {7377        "currency": "AUD",7378        "seller": "Gameology",7379        "location": null,7380        "collections": [7381          {7382            "handle": "magic-the-gathering-singles",7383            "categorySlug": "magic_the_gathering",7384            "franchise": "Magic: The Gathering"7385          },7386          {7387            "handle": "pokemon-tcg-single-cards",7388            "categorySlug": "pokemon",7389            "franchise": "Pokémon"7390          },7391          {7392            "handle": "japanese-pokemon-singles",7393            "categorySlug": "pokemon",7394            "franchise": "Pokémon"7395          },7396          {7397            "handle": "pokemon-collection",7398            "categorySlug": "pokemon",7399            "franchise": "Pokémon"7400          },7401          {7402            "handle": "one-piece-tcg-single-cards",7403            "categorySlug": "one_piece_card_game",7404            "franchise": "One Piece"7405          },7406          {7407            "handle": "lorcana-tcg-singles",7408            "categorySlug": "disney_lorcana",7409            "franchise": "Disney Lorcana"7410          },7411          {7412            "handle": "yugioh",7413            "categorySlug": "yugioh",7414            "franchise": "Yu-Gi-Oh!"7415          },7416          {7417            "handle": "weiss-schwarz",7418            "categorySlug": "weiss_schwarz"7419          },7420          {7421            "handle": "digimon-card-game",7422            "categorySlug": "digimon_tcg",7423            "franchise": "Digimon"7424          },7425          {7426            "handle": "star-wars-unlimited",7427            "categorySlug": "star_wars_tcg",7428            "franchise": "Star Wars"7429          },7430          {7431            "handle": "flesh-and-blood-tcg",7432            "categorySlug": "flesh_and_blood",7433            "franchise": "Flesh and Blood"7434          },7435          {7436            "handle": "dragon-ball-super",7437            "categorySlug": "dragon_ball_tcg",7438            "franchise": "Dragon Ball"7439          },7440          {7441            "handle": "graded-card",7442            "categorySlug": "other_tcg"7443          },7444          {7445            "handle": "pop-vinyl-figures",7446            "categorySlug": "funko",7447            "brand": "Funko"7448          },7449          {7450            "handle": "statues-figures",7451            "categorySlug": "action_figures"7452          },7453          {7454            "handle": "sports-collectables",7455            "categorySlug": "other_sports_cards"7456          },7457          {7458            "handle": "topps-sports-cards",7459            "categorySlug": "other_sports_cards",7460            "brand": "Topps"7461          }7462        ],7463        "rules": [7464          {7465            "match": "graded card game: one piece",7466            "categorySlug": "one_piece_card_game",7467            "franchise": "One Piece"7468          },7469          {7470            "match": "graded card game: (pokemon|japanese pokemon)",7471            "categorySlug": "pokemon",7472            "franchise": "Pokémon"7473          },7474          {7475            "match": "graded card game: (magic|mtg)",7476            "categorySlug": "magic_the_gathering",7477            "franchise": "Magic: The Gathering"7478          },7479          {7480            "match": "graded card game: yu-?gi-?oh",7481            "categorySlug": "yugioh",7482            "franchise": "Yu-Gi-Oh!"7483          },7484          {7485            "match": "graded card game: lorcana",7486            "categorySlug": "disney_lorcana",7487            "franchise": "Disney Lorcana"7488          },7489          {7490            "match": "graded card game: (nba|basketball)",7491            "categorySlug": "basketball_cards"7492          },7493          {7494            "match": "\\| graded cards \\|",7495            "categorySlug": "other_tcg"7496          },7497          {7498            "match": "funko|pop! ?vinyl|pop vinyl|\\bpop!\\b|pop! games|pop! animation|pop! movies",7499            "categorySlug": "funko",7500            "brand": "Funko"7501          },7502          {7503            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:star wars:? unlimited))",7504            "categorySlug": "star_wars_tcg",7505            "franchise": "Star Wars"7506          },7507          {7508            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:lorcana))",7509            "categorySlug": "disney_lorcana",7510            "franchise": "Disney Lorcana"7511          },7512          {7513            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:one piece (card|tcg|ccg|single|promo|sealed|booster|starter)|\\bop\\d{2}\\b|one-piece-(single|tcg|card)|\\| one piece single))",7514            "categorySlug": "one_piece_card_game",7515            "franchise": "One Piece"7516          },7517          {7518            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:dragon ?ball (super |z )?(card|tcg|ccg|fusion world)|fusion world|dragonball-super|dragon-ball-super))",7519            "categorySlug": "dragon_ball_tcg",7520            "franchise": "Dragon Ball"7521          },7522          {7523            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:digimon))",7524            "categorySlug": "digimon_tcg",7525            "franchise": "Digimon"7526          },7527          {7528            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:flesh (and|&) blood|\\bfab\\b))",7529            "categorySlug": "flesh_and_blood",7530            "franchise": "Flesh and Blood"7531          },7532          {7533            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:wei(ss|ß) schwarz))",7534            "categorySlug": "weiss_schwarz"7535          },7536          {7537            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:final fantasy (tcg|trading card|opus)|\\bopus (i{1,3}|iv|v|vi{0,3}|ix|x{1,2}|xi{1,3}|xiv|xv)\\b|\\bfftcg\\b))",7538            "categorySlug": "final_fantasy_tcg",7539            "franchise": "Final Fantasy"7540          },7541          {7542            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:yu-?gi-?oh|\\bygo\\b|yugioh))",7543            "categorySlug": "yugioh",7544            "franchise": "Yu-Gi-Oh!"7545          },7546          {7547            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:pok[eé]mon|\\bpkm\\b))",7548            "categorySlug": "pokemon",7549            "franchise": "Pokémon"7550          },7551          {7552            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:magic:? the gathering|\\bmtg\\b|magic single|secret lair|\\bcommander\\b|universes beyond|planeswalker))",7553            "categorySlug": "magic_the_gathering",7554            "franchise": "Magic: The Gathering"7555          },7556          {7557            "match": "^(?!.*\\| statues & figures \\|)(?=.*(?:cardfight|vanguard|battle spirits|union arena|riftbound|grand archive|gundam (card|tcg)|hololive (official )?card|shadowverse|sorcery:? contested|\\baltered\\b|elestrals|alpha clash|universus|my hero academia (ccg|tcg|single)|akora|kryptik|cyberpunk tcg|neuroscape|beyblade x (tcg|card)))",7558            "categorySlug": "other_tcg"7559          },7560          {7561            "match": "\\bnba\\b|basketball|wnba",7562            "categorySlug": "basketball_cards"7563          },7564          {7565            "match": "\\bnfl\\b|american football",7566            "categorySlug": "football_cards"7567          },7568          {7569            "match": "soccer|premier league|uefa|champions league|world cup|\\bepl\\b|bundesliga|la liga|serie a|match attax|\\bfifa\\b|road to (world cup|euro)",7570            "categorySlug": "soccer_cards"7571          },7572          {7573            "match": "\\bmlb\\b|baseball",7574            "categorySlug": "baseball_cards"7575          },7576          {7577            "match": "\\bnhl\\b|hockey",7578            "categorySlug": "hockey_cards"7579          },7580          {7581            "match": "\\bf1\\b|formula (1|one)|grand prix",7582            "categorySlug": "f1_cards"7583          },7584          {7585            "match": "\\bufc\\b|wrestling|\\bwwe\\b|\\baew\\b|\\bafl\\b|\\bnrl\\b|tennis|\\bgolf\\b|cricket|rugby|boxing|nascar|racing|olympic",7586            "categorySlug": "other_sports_cards"7587          }7588        ],7589        "defaultCategory": null,7590        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|deck case|puzzle|jigsaw|board game|crystal ball|\\| deck boxes \\||\\| board games \\|",7591        "keepOutOfStock": true,7592        "pageSize": 250,7593        "fetchBarcodes": false,7594        "wholeShop": false7595      },7596      "capabilities": [7597        "live_listings",7598        "images",7599        "url_lookup"7600      ],7601      "refreshClass": "normal",7602      "domain": "gameology.com.au",7603      "country": "AU",7604      "requires": [],7605      "acquisitionMethod": "Shopify storefront products.json (public JSON)",7606      "historicalDepth": "none"7607    },7608    {7609      "id": "gamesportal",7610      "displayName": "Games Portal",7611      "sourceId": "gamesportal",7612      "sourceName": "Games Portal",7613      "sourceType": "dealer",7614      "sourceUrl": "https://gamesportal.com.au",7615      "module": "api/gamesportal",7616      "enginePriority": [7617        "api"7618      ],7619      "categories": [7620        "magic_the_gathering",7621        "one_piece_card_game",7622        "disney_lorcana",7623        "digimon_tcg",7624        "flesh_and_blood",7625        "star_wars_tcg",7626        "dragon_ball_tcg",7627        "other_tcg"7628      ],7629      "regions": [7630        "AU"7631      ],7632      "languages": [7633        "en"7634      ],7635      "currency": [7636        "AUD"7637      ],7638      "supportsListings": true,7639      "supportsSold": false,7640      "supportsAuctions": false,7641      "supportsImages": true,7642      "supportsCatalog": false,7643      "supportsPopulation": false,7644      "supportsLookup": true,7645      "refreshFrequencyMinutes": 720,7646      "priority": "medium",7647      "trustScore": 0.65,7648      "attributionRequired": true,7649      "termsUrl": "https://gamesportal.com.au/policies/terms-of-service",7650      "accessNotes": "Games Portal (gamesportal.com.au) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (magic-singles-instock, sealed-magic-products, one-piece-ccg-singles, one-piece-card-game, disney-lorcana-singles, disney-lorcana-sealed, digimon-singles, flesh-and-blood-singles, star-wars-unlimited-sealed, dragon-ball-super-fusion-world-sealed, gundam-card-game-sealed, hololive-card-game-sealed). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency AUD (/meta.json currency AUD, Shopify.currency rate 1.0), GST included. SKUs follow BinderPOS \"SET-number-lang-finish-condition\" (e.g. WAR-94-EN-NF-1). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",7651      "enabled": true,7652      "schemaVersion": "1.0",7653      "config": {7654        "currency": "AUD",7655        "seller": "Games Portal",7656        "location": null,7657        "collections": [7658          {7659            "handle": "magic-singles-instock",7660            "categorySlug": "magic_the_gathering",7661            "franchise": "Magic: The Gathering"7662          },7663          {7664            "handle": "sealed-magic-products",7665            "categorySlug": "magic_the_gathering",7666            "franchise": "Magic: The Gathering"7667          },7668          {7669            "handle": "one-piece-ccg-singles",7670            "categorySlug": "one_piece_card_game",7671            "franchise": "One Piece"7672          },7673          {7674            "handle": "one-piece-card-game",7675            "categorySlug": "one_piece_card_game",7676            "franchise": "One Piece"7677          },7678          {7679            "handle": "disney-lorcana-singles",7680            "categorySlug": "disney_lorcana",7681            "franchise": "Disney Lorcana"7682          },7683          {7684            "handle": "disney-lorcana-sealed",7685            "categorySlug": "disney_lorcana",7686            "franchise": "Disney Lorcana"7687          },7688          {7689            "handle": "digimon-singles",7690            "categorySlug": "digimon_tcg",7691            "franchise": "Digimon"7692          },7693          {7694            "handle": "flesh-and-blood-singles",7695            "categorySlug": "flesh_and_blood",7696            "franchise": "Flesh and Blood"7697          },7698          {7699            "handle": "star-wars-unlimited-sealed",7700            "categorySlug": "star_wars_tcg",7701            "franchise": "Star Wars"7702          },7703          {7704            "handle": "dragon-ball-super-fusion-world-sealed",7705            "categorySlug": "dragon_ball_tcg",7706            "franchise": "Dragon Ball"7707          },7708          {7709            "handle": "gundam-card-game-sealed",7710            "categorySlug": "other_tcg",7711            "franchise": "Gundam"7712          },7713          {7714            "handle": "hololive-card-game-sealed",7715            "categorySlug": "other_tcg"7716          }7717        ],7718        "rules": [],7719        "defaultCategory": null,7720        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|prerelease ticket|event ticket|\\| accessories \\||ultimate guard|gamegenic|dragon shield",7721        "keepOutOfStock": true,7722        "titlePattern": "^(?<name>.+?)(?:\\s*\\((?<number>\\d+/\\d+)\\))?\\s*\\[(?<set>[^\\]]+)\\]\\s*$",7723        "pageSize": 250,7724        "fetchBarcodes": false,7725        "wholeShop": false7726      },7727      "capabilities": [7728        "live_listings",7729        "images",7730        "url_lookup"7731      ],7732      "refreshClass": "normal",7733      "domain": "gamesportal.com.au",7734      "country": "AU",7735      "requires": [],7736      "acquisitionMethod": "Shopify storefront products.json (public JSON)",7737      "historicalDepth": "none"7738    },7739    {7740      "id": "gamezilla",7741      "displayName": "GameZilla (Canadian TCG & collector-toy store, CAD)",7742      "sourceId": "gamezilla",7743      "sourceName": "GameZilla",7744      "sourceType": "dealer",7745      "sourceUrl": "https://www.gamezilla.ca",7746      "module": "api/gamezilla",7747      "enginePriority": [7748        "api"7749      ],7750      "categories": [7751        "magic_the_gathering",7752        "gundam",7753        "action_figures",7754        "disney_lorcana",7755        "other_tcg"7756      ],7757      "regions": [7758        "CA"7759      ],7760      "languages": [7761        "en"7762      ],7763      "currency": [7764        "CAD"7765      ],7766      "supportsListings": true,7767      "supportsSold": false,7768      "supportsAuctions": false,7769      "supportsImages": true,7770      "supportsCatalog": false,7771      "supportsPopulation": false,7772      "supportsLookup": true,7773      "refreshFrequencyMinutes": 720,7774      "priority": "medium",7775      "trustScore": 0.75,7776      "attributionRequired": true,7777      "termsUrl": "https://www.gamezilla.ca/policies/terms-of-service",7778      "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.",7779      "enabled": true,7780      "schemaVersion": "1.0",7781      "config": {7782        "currency": "CAD",7783        "market": "CA",7784        "seller": "GameZilla",7785        "location": "Moncton / Bathurst / Saint John, NB, Canada",7786        "collections": [7787          {7788            "handle": "mtg-commander-masters",7789            "categorySlug": "magic_the_gathering",7790            "franchise": "Magic: The Gathering"7791          },7792          {7793            "handle": "mtg-commander-legends-battle-for-baldurs-gat",7794            "categorySlug": "magic_the_gathering",7795            "franchise": "Magic: The Gathering"7796          },7797          {7798            "handle": "mtg-avatar-the-last-airbender",7799            "categorySlug": "magic_the_gathering",7800            "franchise": "Magic: The Gathering"7801          },7802          {7803            "handle": "mtg-foundations",7804            "categorySlug": "magic_the_gathering",7805            "franchise": "Magic: The Gathering"7806          },7807          {7808            "handle": "mtg-final-fantasy-commander",7809            "categorySlug": "magic_the_gathering",7810            "franchise": "Magic: The Gathering"7811          },7812          {7813            "handle": "mtg-commander-legends",7814            "categorySlug": "magic_the_gathering",7815            "franchise": "Magic: The Gathering"7816          },7817          {7818            "handle": "mtg-modern-horizons-3-commander",7819            "categorySlug": "magic_the_gathering",7820            "franchise": "Magic: The Gathering"7821          },7822          {7823            "handle": "mtg-edge-of-eternities",7824            "categorySlug": "magic_the_gathering",7825            "franchise": "Magic: The Gathering"7826          },7827          {7828            "handle": "mtg-aetherdrift",7829            "categorySlug": "magic_the_gathering",7830            "franchise": "Magic: The Gathering"7831          },7832          {7833            "handle": "mtg-final-fantasy",7834            "categorySlug": "magic_the_gathering",7835            "franchise": "Magic: The Gathering"7836          },7837          {7838            "handle": "mtg-dominaria-united",7839            "categorySlug": "magic_the_gathering",7840            "franchise": "Magic: The Gathering"7841          },7842          {7843            "handle": "mtg-double-masters-2022",7844            "categorySlug": "magic_the_gathering",7845            "franchise": "Magic: The Gathering"7846          },7847          {7848            "handle": "mtg-bloomburrow",7849            "categorySlug": "magic_the_gathering",7850            "franchise": "Magic: The Gathering"7851          },7852          {7853            "handle": "mtg-duskmourn-house-of-horror",7854            "categorySlug": "magic_the_gathering",7855            "franchise": "Magic: The Gathering"7856          },7857          {7858            "handle": "gundam",7859            "categorySlug": "gundam",7860            "brand": "Bandai",7861            "franchise": "Gundam"7862          },7863          {7864            "handle": "gundam-high-grade",7865            "categorySlug": "gundam",7866            "brand": "Bandai",7867            "franchise": "Gundam",7868            "series": "High Grade"7869          },7870          {7871            "handle": "gundam-master-grade",7872            "categorySlug": "gundam",7873            "brand": "Bandai",7874            "franchise": "Gundam",7875            "series": "Master Grade"7876          },7877          {7878            "handle": "gundam-real-grade",7879            "categorySlug": "gundam",7880            "brand": "Bandai",7881            "franchise": "Gundam",7882            "series": "Real Grade"7883          },7884          {7885            "handle": "gundam-perfect-grade",7886            "categorySlug": "gundam",7887            "brand": "Bandai",7888            "franchise": "Gundam",7889            "series": "Perfect Grade"7890          },7891          {7892            "handle": "anime-statue",7893            "categorySlug": "action_figures"7894          },7895          {7896            "handle": "one-piece-figures",7897            "categorySlug": "action_figures",7898            "franchise": "One Piece"7899          },7900          {7901            "handle": "dragon-ball-figures",7902            "categorySlug": "action_figures",7903            "franchise": "Dragon Ball"7904          },7905          {7906            "handle": "naruto-figures",7907            "categorySlug": "action_figures",7908            "franchise": "Naruto"7909          },7910          {7911            "handle": "demon-slayer-figures",7912            "categorySlug": "action_figures",7913            "franchise": "Demon Slayer"7914          },7915          {7916            "handle": "disney-lorcana",7917            "categorySlug": "disney_lorcana",7918            "franchise": "Disney Lorcana"7919          },7920          {7921            "handle": "gundam-tcg",7922            "categorySlug": "other_tcg",7923            "franchise": "Gundam Card Game"7924          }7925        ],7926        "rules": [],7927        "defaultCategory": null,7928        "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",7929        "keepOutOfStock": true,7930        "fetchBarcodes": false,7931        "wholeShop": false,7932        "pageSize": 250,7933        "titlePattern": "^(?<name>.+?) \\[(?<set>[^\\]]+)\\]$"7934      },7935      "capabilities": [7936        "live_listings",7937        "images",7938        "url_lookup"7939      ],7940      "refreshClass": "normal",7941      "domain": "gamezilla.ca",7942      "country": "CA",7943      "requires": [],7944      "acquisitionMethod": "Shopify storefront products.json",7945      "historicalDepth": "none"7946    },7947    {7948      "id": "gcd",7949      "displayName": "Grand Comics Database (comics.org catalog)",7950      "sourceId": "gcd",7951      "sourceName": "Grand Comics Database",7952      "sourceType": "catalog",7953      "sourceUrl": "https://www.comics.org",7954      "module": "api/gcd",7955      "enginePriority": [7956        "api"7957      ],7958      "categories": [7959        "comics",7960        "marvel_comics",7961        "dc_comics",7962        "independent_comics",7963        "manga"7964      ],7965      "regions": [7966        "US",7967        "GB",7968        "CA",7969        "FR",7970        "DE",7971        "IT",7972        "ES",7973        "NL",7974        "SE",7975        "JP",7976        "BR"7977      ],7978      "languages": [7979        "en",7980        "fr",7981        "de",7982        "it",7983        "es",7984        "nl",7985        "sv",7986        "ja",7987        "pt"7988      ],7989      "currency": [7990        "USD"7991      ],7992      "supportsListings": false,7993      "supportsSold": false,7994      "supportsAuctions": false,7995      "supportsImages": false,7996      "supportsCatalog": true,7997      "supportsPopulation": false,7998      "supportsLookup": true,7999      "refreshFrequencyMinutes": 60,8000      "priority": "high",8001      "trustScore": 0.9,8002      "attributionRequired": true,8003      "termsUrl": "https://www.comics.org/about/",8004      "accessNotes": "Reads only the public, unauthenticated JSON REST API of the Grand Comics Database: https://www.comics.org/api/series/?format=json&page=N (50 series per page, 232,658 series → ~4,650 pages), /api/series/<id>/, /api/issue/<id>/ and /api/publisher/<id>/ (publisher names are cached per run). No login, no cookies; the API root advertises only `series` and `publisher` list endpoints and ignores filter parameters, so discovery is a resumable page walk (cursor = {page, index}). robots.txt (Cloudflare managed): `User-agent: *` Allow: / with Content-Signal search=yes, ai-train=no — we index catalog facts and link back; the HTML pages and the /download/ SQL dumps sit behind a Cloudflare managed challenge and a GCD account and are NOT fetched. GCD data is CC-BY-SA: every record carries the licence in metadata and links to its comics.org issue page. Rate limit (verified live 2026-09-08, twice): the API throttles per client at roughly 60 requests per hour (HTTP 429 with Retry-After up to ~1,741 s; a second burst of 7 requests 30 min later was refused again), so each hourly run is capped at maxRequestsPerRun (30) requests spaced 2.5 s apart, stops cleanly at its last checkpoint on the first 429 (anomaly 'rate_limited'; the comics.org domain policy sets maxRetries 0 so the engine never sleeps on Retry-After) and resumes from the cursor next run. Cover prices are stored as originalMsrp only when GCD prints an ISO currency (e.g. '0.12 USD'); dates with unknown day/month (GCD '00') are kept as year only, never completed.",8005      "enabled": true,8006      "schemaVersion": "1.0",8007      "config": {8008        "seriesPerRun": 5,8009        "backfillSeriesPerRun": 5,8010        "issuesPerSeries": 6,8011        "maxRequestsPerRun": 308012      },8013      "capabilities": [8014        "catalog",8015        "url_lookup",8016        "historical_backfill"8017      ],8018      "refreshClass": "active",8019      "domain": "comics.org",8020      "country": "US",8021      "requires": [],8022      "acquisitionMethod": "official JSON API (comics.org/api, no key)",8023      "historicalDepth": "decades"8024    },8025    {8026      "id": "goblingames-nz",8027      "displayName": "Goblin Games NZ",8028      "sourceId": "goblingames-nz",8029      "sourceName": "Goblin Games NZ",8030      "sourceType": "dealer",8031      "sourceUrl": "https://goblingames.co.nz",8032      "module": "api/goblingames-nz",8033      "enginePriority": [8034        "api"8035      ],8036      "categories": [8037        "magic_the_gathering",8038        "pokemon",8039        "yugioh",8040        "one_piece_card_game",8041        "flesh_and_blood",8042        "star_wars_tcg",8043        "disney_lorcana",8044        "digimon_tcg"8045      ],8046      "regions": [8047        "NZ"8048      ],8049      "languages": [8050        "en"8051      ],8052      "currency": [8053        "NZD"8054      ],8055      "supportsListings": true,8056      "supportsSold": false,8057      "supportsAuctions": false,8058      "supportsImages": true,8059      "supportsCatalog": false,8060      "supportsPopulation": false,8061      "supportsLookup": true,8062      "refreshFrequencyMinutes": 720,8063      "priority": "medium",8064      "trustScore": 0.65,8065      "attributionRequired": true,8066      "termsUrl": "https://goblingames.co.nz/policies/terms-of-service",8067      "accessNotes": "Goblin Games NZ (goblingames.co.nz) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (mtg-singles-in-stock, secret-lair-singles, magic-the-gathering-sealed, pokemon-tcg-single-cards, japanese-pokemon-singles, pokemon-tcg-sealed-packs, yugioh-single-cards, one-piece-single-cards, flesh-and-blood-single-cards, star-wars-unlimited-single-cards, disney-lorcana-single-cards, digimon-single-cards). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency NZD (Shopify.currency active NZD with rate 1.0; the shop /meta.json endpoint returns 500), GST included. Titles mix BinderPOS \"Name [Set]\" and \"Name 088/111 - Set Printing\" styles; only the bracket style yields set extraction. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",8068      "enabled": true,8069      "schemaVersion": "1.0",8070      "config": {8071        "currency": "NZD",8072        "seller": "Goblin Games NZ",8073        "location": null,8074        "collections": [8075          {8076            "handle": "mtg-singles-in-stock",8077            "categorySlug": "magic_the_gathering",8078            "franchise": "Magic: The Gathering"8079          },8080          {8081            "handle": "secret-lair-singles",8082            "categorySlug": "magic_the_gathering",8083            "franchise": "Magic: The Gathering"8084          },8085          {8086            "handle": "magic-the-gathering-sealed",8087            "categorySlug": "magic_the_gathering",8088            "franchise": "Magic: The Gathering"8089          },8090          {8091            "handle": "pokemon-tcg-single-cards",8092            "categorySlug": "pokemon",8093            "franchise": "Pokémon"8094          },8095          {8096            "handle": "japanese-pokemon-singles",8097            "categorySlug": "pokemon",8098            "franchise": "Pokémon"8099          },8100          {8101            "handle": "pokemon-tcg-sealed-packs",8102            "categorySlug": "pokemon",8103            "franchise": "Pokémon"8104          },8105          {8106            "handle": "yugioh-single-cards",8107            "categorySlug": "yugioh",8108            "franchise": "Yu-Gi-Oh!"8109          },8110          {8111            "handle": "one-piece-single-cards",8112            "categorySlug": "one_piece_card_game",8113            "franchise": "One Piece"8114          },8115          {8116            "handle": "flesh-and-blood-single-cards",8117            "categorySlug": "flesh_and_blood",8118            "franchise": "Flesh and Blood"8119          },8120          {8121            "handle": "star-wars-unlimited-single-cards",8122            "categorySlug": "star_wars_tcg",8123            "franchise": "Star Wars"8124          },8125          {8126            "handle": "disney-lorcana-single-cards",8127            "categorySlug": "disney_lorcana",8128            "franchise": "Disney Lorcana"8129          },8130          {8131            "handle": "digimon-single-cards",8132            "categorySlug": "digimon_tcg",8133            "franchise": "Digimon"8134          }8135        ],8136        "rules": [],8137        "defaultCategory": null,8138        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|\\| accessories \\||plush|dragon shield|ultimate guard|gamegenic|chessex",8139        "keepOutOfStock": true,8140        "titlePattern": "^(?<name>.+?)\\s*(?:\\|\\s*)?(?:\\((?<number>\\d+/\\d+)\\)\\s*)?\\[(?<set>[^\\]]+)\\]",8141        "pageSize": 250,8142        "fetchBarcodes": false,8143        "wholeShop": false8144      },8145      "capabilities": [8146        "live_listings",8147        "images",8148        "url_lookup"8149      ],8150      "refreshClass": "normal",8151      "domain": "goblingames.co.nz",8152      "country": "NZ",8153      "requires": [],8154      "acquisitionMethod": "Shopify storefront products.json (public JSON)",8155      "historicalDepth": "none"8156    },8157    {8158      "id": "goldin",8159      "displayName": "Goldin (sold auction results)",8160      "sourceId": "goldin",8161      "sourceName": "Goldin",8162      "sourceType": "auction_house",8163      "sourceUrl": "https://goldin.co",8164      "module": "scrapfly/goldin",8165      "enginePriority": [8166        "scrapfly"8167      ],8168      "categories": [8169        "pokemon",8170        "magic_the_gathering",8171        "yugioh",8172        "one_piece_card_game",8173        "basketball_cards",8174        "baseball_cards",8175        "football_cards",8176        "hockey_cards",8177        "soccer_cards",8178        "f1_cards",8179        "sports_memorabilia",8180        "marvel_comics",8181        "nintendo_games",8182        "non_sport_cards"8183      ],8184      "regions": [8185        "US"8186      ],8187      "languages": [8188        "en"8189      ],8190      "currency": [8191        "USD"8192      ],8193      "supportsListings": false,8194      "supportsSold": true,8195      "supportsAuctions": false,8196      "supportsImages": true,8197      "supportsCatalog": false,8198      "supportsPopulation": false,8199      "supportsLookup": true,8200      "refreshFrequencyMinutes": 360,8201      "priority": "high",8202      "trustScore": 0.9,8203      "attributionRequired": true,8204      "termsUrl": "https://goldin.co/useragreement",8205      "accessNotes": "Public 'Sold Items' result grids (https://goldin.co/buy/sc/<subcategory>?show_only=Sold%20Items&sort=Most_Recent_Bids&number_of_lots=240) rendered through Scrapfly (asp + JS rendering, ~6 credits per page of 240 sold lots). goldin.co/robots.txt allows /buy/ and /item/ and disallows /api/; we never call goldin.co/api ourselves — the lot data is read from the XHR (lots_v2 on their CloudFront search endpoint) that the public page performs during rendering, exactly what a browser does. Plain HTTP and Firecrawl return the empty SPA shell / an Akamai challenge. Prices: the grid shows the final price INCLUDING buyer's premium (current_price × (1 + buyer_premium%)); we store that as the sale price with buyerPremiumIncluded=true and keep the hammer price and BP % in metadata. Sale date = lot end_timestamp; lots whose end_timestamp is in the future (placeholder private-sale dates like 2235-06-04) are skipped and counted as anomalies. Cert numbers appear only in item-page descriptions (lookup).",8206      "enabled": true,8207      "schemaVersion": "1.0",8208      "config": {8209        "seeds": [8210          {8211            "path": "/buy/sc/pokemon",8212            "categorySlug": "pokemon"8213          },8214          {8215            "path": "/buy/sc/Magic_The_Gathering",8216            "categorySlug": "magic_the_gathering"8217          },8218          {8219            "path": "/buy/sc/Yu-Gi-Oh!",8220            "categorySlug": "yugioh"8221          },8222          {8223            "path": "/buy/sc/One_Piece",8224            "categorySlug": "one_piece_card_game"8225          },8226          {8227            "path": "/buy/sc/Basketball",8228            "categorySlug": "basketball_cards",8229            "sport": "basketball"8230          },8231          {8232            "path": "/buy/sc/Baseball",8233            "categorySlug": "baseball_cards",8234            "sport": "baseball"8235          },8236          {8237            "path": "/buy/sc/Football",8238            "categorySlug": "football_cards",8239            "sport": "football"8240          },8241          {8242            "path": "/buy/sc/Hockey",8243            "categorySlug": "hockey_cards",8244            "sport": "hockey"8245          },8246          {8247            "path": "/buy/sc/Soccer",8248            "categorySlug": "soccer_cards",8249            "sport": "soccer"8250          },8251          {8252            "path": "/buy/sc/Racing",8253            "categorySlug": "f1_cards",8254            "sport": "racing"8255          },8256          {8257            "path": "/buy/sc/Marvel",8258            "categorySlug": "marvel_comics"8259          },8260          {8261            "path": "/buy/sc/Nintendo",8262            "categorySlug": "nintendo_games"8263          }8264        ],8265        "pageSize": 240,8266        "maxPagesPerSeed": 40,8267        "renderingWaitMs": 60008268      },8269      "capabilities": [8270        "sold_listings",8271        "images",8272        "url_lookup"8273      ],8274      "refreshClass": "normal",8275      "domain": "goldin.co",8276      "country": "US",8277      "requires": [],8278      "historicalDepth": "none"8279    },8280    {8281      "id": "goodgames",8282      "displayName": "Good Games",8283      "sourceId": "goodgames",8284      "sourceName": "Good Games",8285      "sourceType": "dealer",8286      "sourceUrl": "https://www.goodgames.com.au",8287      "module": "api/goodgames",8288      "enginePriority": [8289        "api"8290      ],8291      "categories": [8292        "pokemon",8293        "magic_the_gathering",8294        "yugioh",8295        "one_piece_card_game",8296        "digimon_tcg",8297        "flesh_and_blood",8298        "dragon_ball_tcg",8299        "disney_lorcana",8300        "star_wars_tcg",8301        "other_tcg",8302        "other_sports_cards",8303        "funko",8304        "action_figures",8305        "designer_toys",8306        "gundam",8307        "plush",8308        "basketball_cards",8309        "football_cards",8310        "soccer_cards",8311        "baseball_cards",8312        "hockey_cards",8313        "f1_cards"8314      ],8315      "regions": [8316        "AU"8317      ],8318      "languages": [8319        "en"8320      ],8321      "currency": [8322        "AUD"8323      ],8324      "supportsListings": true,8325      "supportsSold": false,8326      "supportsAuctions": false,8327      "supportsImages": true,8328      "supportsCatalog": false,8329      "supportsPopulation": false,8330      "supportsLookup": true,8331      "refreshFrequencyMinutes": 1440,8332      "priority": "medium",8333      "trustScore": 0.65,8334      "attributionRequired": true,8335      "termsUrl": "https://www.goodgames.com.au/policies/terms-of-service",8336      "accessNotes": "Good Games (goodgames.com.au) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (pokemon, magic-the-gathering, yu-gi-oh, one-piece-card-game, digimon, flesh-blood, dragonball-super, disney-lorcana-tcg, star-wars-unlimited, gundam-card-game, sports-cards, funko, anime-figure, action-toy-figures, blind-boxes, gundam, plush). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency AUD (/meta.json currency AUD, Shopify.currency rate 1.0), GST included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",8337      "enabled": true,8338      "schemaVersion": "1.0",8339      "config": {8340        "currency": "AUD",8341        "seller": "Good Games",8342        "location": null,8343        "collections": [8344          {8345            "handle": "pokemon",8346            "categorySlug": "pokemon",8347            "franchise": "Pokémon"8348          },8349          {8350            "handle": "magic-the-gathering",8351            "categorySlug": "magic_the_gathering",8352            "franchise": "Magic: The Gathering"8353          },8354          {8355            "handle": "yu-gi-oh",8356            "categorySlug": "yugioh",8357            "franchise": "Yu-Gi-Oh!"8358          },8359          {8360            "handle": "one-piece-card-game",8361            "categorySlug": "one_piece_card_game",8362            "franchise": "One Piece"8363          },8364          {8365            "handle": "digimon",8366            "categorySlug": "digimon_tcg",8367            "franchise": "Digimon"8368          },8369          {8370            "handle": "flesh-blood",8371            "categorySlug": "flesh_and_blood",8372            "franchise": "Flesh and Blood"8373          },8374          {8375            "handle": "dragonball-super",8376            "categorySlug": "dragon_ball_tcg",8377            "franchise": "Dragon Ball"8378          },8379          {8380            "handle": "disney-lorcana-tcg",8381            "categorySlug": "disney_lorcana",8382            "franchise": "Disney Lorcana"8383          },8384          {8385            "handle": "star-wars-unlimited",8386            "categorySlug": "star_wars_tcg",8387            "franchise": "Star Wars"8388          },8389          {8390            "handle": "gundam-card-game",8391            "categorySlug": "other_tcg",8392            "franchise": "Gundam"8393          },8394          {8395            "handle": "sports-cards",8396            "categorySlug": "other_sports_cards"8397          },8398          {8399            "handle": "funko",8400            "categorySlug": "funko",8401            "brand": "Funko"8402          },8403          {8404            "handle": "anime-figure",8405            "categorySlug": "action_figures"8406          },8407          {8408            "handle": "action-toy-figures",8409            "categorySlug": "action_figures"8410          },8411          {8412            "handle": "blind-boxes",8413            "categorySlug": "designer_toys"8414          },8415          {8416            "handle": "gundam",8417            "categorySlug": "gundam",8418            "brand": "Bandai",8419            "franchise": "Gundam"8420          },8421          {8422            "handle": "plush",8423            "categorySlug": "plush"8424          }8425        ],8426        "rules": [8427          {8428            "match": "\\bnba\\b|basketball|wnba",8429            "categorySlug": "basketball_cards"8430          },8431          {8432            "match": "\\bnfl\\b|american football",8433            "categorySlug": "football_cards"8434          },8435          {8436            "match": "soccer|premier league|uefa|champions league|world cup|\\bepl\\b|bundesliga|la liga|serie a|match attax|\\bfifa\\b|road to (world cup|euro)",8437            "categorySlug": "soccer_cards"8438          },8439          {8440            "match": "\\bmlb\\b|baseball",8441            "categorySlug": "baseball_cards"8442          },8443          {8444            "match": "\\bnhl\\b|hockey",8445            "categorySlug": "hockey_cards"8446          },8447          {8448            "match": "\\bf1\\b|formula (1|one)|grand prix",8449            "categorySlug": "f1_cards"8450          },8451          {8452            "match": "\\bufc\\b|wrestling|\\bwwe\\b|\\baew\\b|\\bafl\\b|\\bnrl\\b|tennis|\\bgolf\\b|cricket|rugby|boxing|nascar|racing|olympic",8453            "categorySlug": "other_sports_cards"8454          }8455        ],8456        "defaultCategory": null,8457        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|folder|board game|jigsaw|puzzle|\\| board games \\||\\| zz - other \\|",8458        "keepOutOfStock": true,8459        "pageSize": 250,8460        "fetchBarcodes": false,8461        "wholeShop": false8462      },8463      "capabilities": [8464        "live_listings",8465        "images",8466        "url_lookup"8467      ],8468      "refreshClass": "normal",8469      "domain": "goodgames.com.au",8470      "country": "AU",8471      "requires": [],8472      "acquisitionMethod": "Shopify storefront products.json (public JSON)",8473      "historicalDepth": "none"8474    },8475    {8476      "id": "gooding",8477      "displayName": "Gooding & Company (prices realized)",8478      "sourceId": "gooding",8479      "sourceName": "Gooding & Company",8480      "sourceType": "auction_house",8481      "sourceUrl": "https://www.goodingco.com",8482      "module": "api/gooding",8483      "enginePriority": [8484        "api"8485      ],8486      "categories": [8487        "automobiles",8488        "motorcycles",8489        "automotive_memorabilia"8490      ],8491      "regions": [8492        "US",8493        "GB",8494        "FR"8495      ],8496      "languages": [8497        "en"8498      ],8499      "currency": [8500        "USD",8501        "GBP",8502        "EUR"8503      ],8504      "supportsListings": false,8505      "supportsSold": true,8506      "supportsAuctions": false,8507      "supportsImages": true,8508      "supportsCatalog": false,8509      "supportsPopulation": false,8510      "supportsLookup": true,8511      "refreshFrequencyMinutes": 1440,8512      "priority": "medium",8513      "trustScore": 0.9,8514      "attributionRequired": true,8515      "termsUrl": "https://www.goodingco.com/terms-of-use",8516      "accessNotes": "Gooding & Company's public 'Prices Realized' pages are a Gatsby site; each realized auction page ships its full lot list as static JSON at /page-data/auction/realized/<slug>/page-data.json (one plain HTTPS request per auction, 0 credits; robots.txt has no disallow rules). Each lot carries salePrice (auction currency), lotNumber, title, model year, make, model and Cloudinary image ids (cloud 'goodingco'). Sale date = the last ContentfulSubEventAuction end date of the auction. Lots without a salePrice (unsold/withdrawn) and private-sale prices are skipped. The page does not state whether salePrice includes the buyer's premium, so buyer_premium_included is null (Gooding's published totals are customarily quoted inclusive of premium). Auction slugs come from config.seeds plus /auction/realized/ links found on the homepage; lookup() handles /lot/<slug> pages via their page-data JSON.",8517      "enabled": true,8518      "schemaVersion": "1.0",8519      "config": {8520        "seeds": [8521          "pebble-beach-auctions-2026",8522          "amelia-island-auctions-2026",8523          "retromobile-paris-2026",8524          "retromobile-new-york-auctions-2026",8525          "pebble-beach-auctions-2025",8526          "pebble-beach-auctions-2024",8527          "london-auction-2024",8528          "pebble-beach-auctions-2023",8529          "london-auction-2023"8530        ],8531        "auctionsPerRun": 38532      },8533      "capabilities": [8534        "sold_listings",8535        "images",8536        "url_lookup"8537      ],8538      "refreshClass": "normal",8539      "domain": "goodingco.com",8540      "country": "US",8541      "requires": [],8542      "historicalDepth": "none"8543    },8544    {8545      "id": "grand-archive",8546      "displayName": "Grand Archive Index (official card API)",8547      "sourceId": "grand-archive",8548      "sourceName": "Grand Archive TCG Index",8549      "sourceType": "manufacturer",8550      "sourceUrl": "https://index.gatcg.com",8551      "module": "api/grand-archive",8552      "enginePriority": [8553        "api"8554      ],8555      "categories": [8556        "other_tcg"8557      ],8558      "regions": [8559        "US"8560      ],8561      "languages": [8562        "en"8563      ],8564      "currency": [],8565      "supportsListings": false,8566      "supportsSold": false,8567      "supportsAuctions": false,8568      "supportsImages": true,8569      "supportsCatalog": true,8570      "supportsPopulation": true,8571      "supportsLookup": false,8572      "refreshFrequencyMinutes": 10080,8573      "priority": "low",8574      "trustScore": 0.85,8575      "attributionRequired": true,8576      "termsUrl": "https://index.gatcg.com",8577      "accessNotes": "Official Grand Archive card index API (https://api.gatcg.com/cards/search, paginated, no key). Emits one catalog_item per edition × circulation (non-foil / foil) with the publisher's declared print run in `productionQuantity` when the operator is exact ('=') and in metadata when approximate ('≈') — a rare case of manufacturer-published production counts. No prices (TCGCSV supplies Grand Archive prices via tcgplayer_id when available).",8578      "enabled": true,8579      "schemaVersion": "1.0",8580      "config": {8581        "pageSize": 508582      },8583      "capabilities": [8584        "images",8585        "catalog",8586        "grading_population"8587      ],8588      "refreshClass": "archive",8589      "domain": "index.gatcg.com",8590      "country": "US",8591      "requires": [],8592      "historicalDepth": "none"8593    },8594    {8595      "id": "hakes",8596      "displayName": "Hake's Auctions (pop culture catalogs)",8597      "sourceId": "hakes",8598      "sourceName": "Hake's Auctions",8599      "sourceType": "auction_house",8600      "sourceUrl": "https://www.hakes.com",8601      "module": "api/hakes",8602      "enginePriority": [8603        "api"8604      ],8605      "categories": [8606        "vintage_toys",8607        "star_wars",8608        "marvel_comics",8609        "dc_comics",8610        "independent_comics",8611        "political_memorabilia",8612        "pins",8613        "non_sport_cards",8614        "disney_collectibles",8615        "advertising",8616        "animation_art",8617        "movie_posters",8618        "music_memorabilia",8619        "sports_memorabilia",8620        "autographs"8621      ],8622      "regions": [8623        "US"8624      ],8625      "languages": [8626        "en"8627      ],8628      "currency": [8629        "USD"8630      ],8631      "supportsListings": false,8632      "supportsSold": true,8633      "supportsAuctions": true,8634      "supportsImages": true,8635      "supportsCatalog": false,8636      "supportsPopulation": false,8637      "supportsLookup": false,8638      "refreshFrequencyMinutes": 720,8639      "priority": "medium",8640      "trustScore": 0.85,8641      "attributionRequired": true,8642      "termsUrl": "https://www.hakes.com/terms",8643      "accessNotes": "Plain HTTPS on the public Bidsquare-hosted site (robots.txt disallows /search, account pages and filtered/sorted query URLs; we only load /auctions and unfiltered catalog pages with ?page=N, 2 s politeness). Hake's hides its past-auction list, so upcoming catalogs are crawled for auction lots (estimate, current bid, countdown end) and their URLs are remembered in the connector cursor; after an event closes the same catalog pages report status 'past' with 'Sold for $X' → sales dated by the lot/event end. AFA/CAS toy grades are kept in metadata (not graders). Whether 'Sold for' includes the buyer's premium is not stated on the page → null. 0 credits.",8644      "enabled": true,8645      "schemaVersion": "1.0",8646      "config": {8647        "eventsPerRun": 2,8648        "pagesPerEvent": 6,8649        "includeUpcoming": true8650      },8651      "capabilities": [8652        "sold_listings",8653        "auction_results",8654        "images"8655      ],8656      "refreshClass": "normal",8657      "domain": "hakes.com",8658      "country": "US",8659      "requires": [],8660      "historicalDepth": "none"8661    },8662    {8663      "id": "hareruya",8664      "displayName": "Hareruya (晴れる屋) MTG singles",8665      "sourceId": "hareruya",8666      "sourceName": "Hareruya",8667      "sourceType": "dealer",8668      "sourceUrl": "https://www.hareruyamtg.com/en/",8669      "module": "api/hareruya",8670      "enginePriority": [8671        "api"8672      ],8673      "categories": [8674        "magic_the_gathering"8675      ],8676      "regions": [8677        "JP"8678      ],8679      "languages": [8680        "en",8681        "ja"8682      ],8683      "currency": [8684        "JPY"8685      ],8686      "supportsListings": true,8687      "supportsSold": false,8688      "supportsAuctions": false,8689      "supportsImages": true,8690      "supportsCatalog": false,8691      "supportsPopulation": false,8692      "supportsLookup": false,8693      "refreshFrequencyMinutes": 1440,8694      "priority": "medium",8695      "trustScore": 0.8,8696      "attributionRequired": true,8697      "termsUrl": "https://www.hareruyamtg.com/en/help/agreement",8698      "accessNotes": "Hareruya is Japan's largest Magic retailer with an English storefront (EC-CUBE). The HTML search page renders its results through a public, unauthenticated JSON endpoint — GET https://www.hareruyamtg.com/en/products/search/unisearch_api?fq.category_id=1&fq.cardset=<id>&fq.price=1~*&rows=60&page=<n> — which we call exactly as the page does (60 docs per page, capped by the site at 4 000 results per query): product id, English/Japanese product name (《Card》[SET]), card_name, language code (1 JP, 2 EN, 3 CS, 4 CT, 5 FR, 6 DE, 7 IT, 8 KO …), JPY price incl. tax, foil flag, stock, weekly_sales, product_class (per language/condition/foil offer), card_condition code and image. Card-set ids/names are read once per run from the <select name=cardset> of the public search form (https://www.hareruyamtg.com/en/products/search, no query parameters). robots.txt allows / and disallows only /en/products/search?*page=* | *sort=* | *order=* (the HTML result pages), /*.csv$, deck downloads, purchase forwards and news; we never request those HTML pages — only the JSON endpoint the page itself loads, ≥ 4 s apart, 1 concurrent, honest UA. Not fetched: buy-list (purchase) prices, product detail pages (only linked), carts, member areas. Prices are shop asking prices → listings, never sales. The numeric card_condition code is kept in metadata only (Hareruya's NM/EX/PL labels are not exposed by the endpoint, so condition is left null rather than guessed).",8699      "enabled": true,8700      "schemaVersion": "1.0",8701      "config": {8702        "setsPerRun": 12,8703        "maxPagesPerSet": 67,8704        "rows": 608705      },8706      "capabilities": [8707        "live_listings",8708        "images"8709      ],8710      "refreshClass": "normal",8711      "domain": "hareruyamtg.com",8712      "country": "JP",8713      "requires": [],8714      "acquisitionMethod": "the storefront's own search JSON endpoint (unisearch_api) per card set",8715      "historicalDepth": "none"8716    },8717    {8718      "id": "hdh-wine",8719      "displayName": "Hart Davis Hart Wine Co. (auction results)",8720      "sourceId": "hdh-wine",8721      "sourceName": "Hart Davis Hart Wine Co.",8722      "sourceType": "auction_house",8723      "sourceUrl": "https://hdhauctions.com",8724      "module": "firecrawl/hdh-wine",8725      "enginePriority": [8726        "firecrawl"8727      ],8728      "categories": [8729        "wine",8730        "whisky",8731        "cognac"8732      ],8733      "regions": [8734        "US"8735      ],8736      "languages": [8737        "en"8738      ],8739      "currency": [8740        "USD"8741      ],8742      "supportsListings": false,8743      "supportsSold": true,8744      "supportsAuctions": false,8745      "supportsImages": false,8746      "supportsCatalog": false,8747      "supportsPopulation": false,8748      "supportsLookup": false,8749      "refreshFrequencyMinutes": 10080,8750      "priority": "medium",8751      "trustScore": 0.95,8752      "attributionRequired": true,8753      "termsUrl": "https://hdhauctions.com/conditions-of-sale/",8754      "accessNotes": "Hart Davis Hart (Chicago; ~8 fine-wine auctions a year, 100% sold rates) publishes every auction's full prices-realized as a PDF linked from /auction-archives/ ('View auction results'). Plain HTTP is 403 for non-browser clients, so the archive page (1 credit) and each PDF (Firecrawl PDF parser, 1 credit per page, ≈130–140 pages for a 2,500-lot sale) are fetched with Firecrawl; config.pdfsPerRun caps spend and the cursor remembers processed PDFs. Table columns: Lot | Qty | Description | Estimate | Hammer | Aggregate — price = hammer (USD) with buyer_premium_included=false; the aggregate (hammer + 19.5% premium) is kept in metadata. Lots spanning several rows (mixed cases) are single sales flagged as bundles; quantity = bottle count of the first row. Sale date = the auction date range printed in the PDF header (first day). No images.",8755      "enabled": true,8756      "schemaVersion": "1.0",8757      "config": {8758        "archiveUrl": "https://hdhauctions.com/auction-archives/",8759        "pdfsPerRun": 18760      },8761      "capabilities": [8762        "sold_listings"8763      ],8764      "refreshClass": "archive",8765      "domain": "hdhauctions.com",8766      "country": "US",8767      "requires": [],8768      "historicalDepth": "none"8769    },8770    {8771      "id": "heffel",8772      "displayName": "Heffel Fine Art Auction House (auction results)",8773      "sourceId": "heffel",8774      "sourceName": "Heffel Fine Art Auction House",8775      "sourceType": "auction_house",8776      "sourceUrl": "https://www.heffel.com",8777      "module": "api/heffel",8778      "enginePriority": [8779        "api",8780        "firecrawl"8781      ],8782      "categories": [8783        "art",8784        "contemporary_art",8785        "photography",8786        "design_furniture"8787      ],8788      "regions": [8789        "CA"8790      ],8791      "languages": [8792        "en",8793        "fr"8794      ],8795      "currency": [8796        "CAD"8797      ],8798      "supportsListings": false,8799      "supportsSold": true,8800      "supportsAuctions": false,8801      "supportsImages": true,8802      "supportsCatalog": false,8803      "supportsPopulation": false,8804      "supportsLookup": false,8805      "refreshFrequencyMinutes": 1440,8806      "priority": "medium",8807      "trustScore": 0.9,8808      "attributionRequired": true,8809      "termsUrl": "https://www.heffel.com/Auction/Terms_Defined_E.pdf",8810      "accessNotes": "Plain HTTPS, 0 credits. heffel.com serves no robots.txt (404 → nothing disallowed). Sources: the public 'Auction Results' index (/Links/Results_Choose_E.aspx, ~16 recent live + online sales) and each results page (/Links/Results_E?Request=<token>) which lists lot number, thumbnail, title, artist and price for every sold lot. Heffel states on the page: 'Prices include Buyer's Premium' and prices are in Canadian dollars (CAD) → buyer_premium_included=true. Sale date parsed from the page's 'Sale date:' line; when a monthly online sale has no explicit date, the month named in the index is used (day 1, confidence 0.7). Artist is stored as brand. 2 s politeness delay.",8811      "enabled": true,8812      "schemaVersion": "1.0",8813      "config": {8814        "salesPerRun": 38815      },8816      "capabilities": [8817        "sold_listings",8818        "images"8819      ],8820      "refreshClass": "normal",8821      "domain": "heffel.com",8822      "country": "CA",8823      "requires": [],8824      "historicalDepth": "none"8825    },8826    {8827      "id": "hibid",8828      "displayName": "HiBid (past catalogs, prices realized)",8829      "sourceId": "hibid",8830      "sourceName": "HiBid",8831      "sourceType": "marketplace",8832      "sourceUrl": "https://hibid.com",8833      "module": "api/hibid",8834      "enginePriority": [8835        "api"8836      ],8837      "categories": [8838        "coins",8839        "banknotes",8840        "stamps",8841        "sports_memorabilia",8842        "baseball_cards",8843        "basketball_cards",8844        "football_cards",8845        "hockey_cards",8846        "other_sports_cards",8847        "pokemon",8848        "magic_the_gathering",8849        "yugioh",8850        "other_tcg",8851        "non_sport_cards",8852        "marvel_comics",8853        "dc_comics",8854        "independent_comics",8855        "video_games",8856        "vintage_toys",8857        "action_figures",8858        "dolls",8859        "model_trains",8860        "model_cars",8861        "other_watches",8862        "rolex",8863        "omega",8864        "jewelry",8865        "gemstones",8866        "advertising",8867        "militaria",8868        "medals",8869        "musical_instruments",8870        "music",8871        "cameras",8872        "clocks",8873        "books",8874        "maps",8875        "postcards",8876        "glass_crystal",8877        "porcelain",8878        "silver",8879        "art",8880        "antiques",8881        "fossils",8882        "minerals",8883        "meteorites",8884        "pens",8885        "lighters",8886        "arcade_pinball",8887        "casino_memorabilia",8888        "political_memorabilia",8889        "disney_collectibles",8890        "star_wars",8891        "board_games",8892        "license_plates",8893        "pins",8894        "automotive_memorabilia"8895      ],8896      "regions": [8897        "US",8898        "CA"8899      ],8900      "languages": [8901        "en"8902      ],8903      "currency": [8904        "USD",8905        "CAD"8906      ],8907      "supportsListings": false,8908      "supportsSold": true,8909      "supportsAuctions": false,8910      "supportsImages": true,8911      "supportsCatalog": false,8912      "supportsPopulation": false,8913      "supportsLookup": false,8914      "refreshFrequencyMinutes": 720,8915      "priority": "medium",8916      "trustScore": 0.75,8917      "attributionRequired": true,8918      "termsUrl": "https://hibid.com/terms-and-conditions",8919      "accessNotes": "Plain HTTPS with the RareIndex user agent on hibid.com (Cloudflare in front; the bot UA is served normally). Pages read: the public past-auction list /auctions/past?apage=N (25 archived auctions per page, current month window, ~1 300 auctions) and catalog pages /catalog/<id>/<slug>?apage=N (100 lots per page). The lot data is taken from the Apollo state the public Angular page embeds in <script id=\"hibid-state\">; we never call hibid.com/graphql ourselves. robots.txt (User-agent *) disallows */livecatalog/, */webcast/, /auctioneer/, */account/, */catalog/print/, /error/, /auctions/current/map/, /hibiddemo/ and the keyword search /auctions/past/*?q=* — none of these are fetched; bingbot gets Crawl-delay 5, we wait 3 s between requests. The Terms & Conditions page is client-rendered and its text could not be read over plain HTTP (recorded here, to be re-checked). Sales: closed lots whose auctioneer publishes 'price realized' (many auctioneers hide it → 0 lots, skipped); the figure is the hammer/high bid — the buyer's premium (text like 'Buyers Premium 18%' kept in metadata) is charged separately → buyerPremiumIncluded=false. Sale date = auction bidCloseDateTime (zone-less local time treated as UTC, an approximation of a few hours). Currency = the auction's currencyAbbreviation (USD/CAD; others skipped). Only lots whose HiBid category maps to the collectibles taxonomy are kept — real estate, vehicles, farm/construction equipment, household, tools, business liquidations are filtered; firearms and ammunition are never emitted. Auction house name = the auctioneer's public business name + '(HiBid)'; auctioneer contact details (email, phone, address) are never stored. 0 credits.",8920      "enabled": true,8921      "schemaVersion": "1.0",8922      "config": {8923        "pastPagesPerRun": 3,8924        "auctionsPerRun": 6,8925        "pagesPerAuction": 108926      },8927      "capabilities": [8928        "sold_listings",8929        "images",8930        "historical_backfill"8931      ],8932      "refreshClass": "normal",8933      "domain": "hibid.com",8934      "country": "US",8935      "requires": [],8936      "acquisitionMethod": "embedded Apollo state JSON on public catalog pages",8937      "historicalDepth": "months"8938    },8939    {8940      "id": "hifishark",8941      "displayName": "HiFiShark (second-hand hi-fi aggregator)",8942      "sourceId": "hifishark",8943      "sourceName": "HiFiShark",8944      "sourceType": "analytics_provider",8945      "sourceUrl": "https://www.hifishark.com",8946      "module": "api/hifishark",8947      "enginePriority": [8948        "api",8949        "firecrawl"8950      ],8951      "categories": [8952        "audio_equipment"8953      ],8954      "regions": [8955        "EU",8956        "US",8957        "GB",8958        "JP"8959      ],8960      "languages": [8961        "en"8962      ],8963      "currency": [8964        "EUR",8965        "USD",8966        "GBP",8967        "JPY",8968        "CHF",8969        "SEK",8970        "DKK",8971        "NOK",8972        "PLN",8973        "CAD",8974        "AUD"8975      ],8976      "supportsListings": true,8977      "supportsSold": false,8978      "supportsAuctions": false,8979      "supportsImages": true,8980      "supportsCatalog": false,8981      "supportsPopulation": false,8982      "supportsLookup": false,8983      "refreshFrequencyMinutes": 1440,8984      "priority": "low",8985      "trustScore": 0.6,8986      "attributionRequired": true,8987      "termsUrl": "https://www.hifishark.com/terms",8988      "accessNotes": "Search pages (hifishark.com/search?q=<model>) are fetched over plain HTTPS with the RareIndex user agent, 2 s apart; robots.txt allows /search for generic agents. Only the server-rendered 'For Sale' tab is used (title, asking price in the seller's currency, marketplace, country, listing date, image); the Sold/Expired tab and the /searchrt, /searchSlice and /api endpoints are disallowed by robots.txt and are not requested, so no transactions are recorded. Listings are attributed to HiFiShark and the originating marketplace (metadata.marketplace); the source URL is HiFiShark's redirect link, which is not crawled. Seeds are collectible hi-fi models (query = brand + model, used as the asset name).",8989      "enabled": true,8990      "schemaVersion": "1.0",8991      "config": {8992        "queries": [8993          "Marantz 2270",8994          "Marantz 2325",8995          "Marantz Model 7",8996          "McIntosh MC275",8997          "McIntosh MC240",8998          "McIntosh C22",8999          "Technics SL-1200",9000          "Technics SP-10",9001          "Nakamichi Dragon",9002          "Nakamichi 1000ZXL",9003          "JBL L100",9004          "JBL Paragon",9005          "JBL 4343",9006          "Klipschorn",9007          "Klipsch La Scala",9008          "Sansui 9090DB",9009          "Sansui AU-111",9010          "Pioneer SX-1980",9011          "Pioneer SX-1250",9012          "Revox B77",9013          "Revox A77",9014          "Studer A80",9015          "Linn LP12",9016          "Thorens TD124",9017          "Thorens TD160",9018          "Garrard 301",9019          "Garrard 401",9020          "Tannoy Monitor Gold",9021          "Tannoy Westminster",9022          "Quad ESL 57",9023          "Quad 405",9024          "Sennheiser HD800",9025          "Stax SR-009",9026          "Yamaha NS-1000",9027          "Luxman L-550",9028          "Accuphase E-303",9029          "Bang & Olufsen Beogram 4000",9030          "Bang & Olufsen Beomaster 1900",9031          "Naim NAP 250",9032          "Rega Planar 3",9033          "Denon DP-3000",9034          "Micro Seiki RX-5000",9035          "Kenwood L-07",9036          "Leak Stereo 20",9037          "Marantz 10B"9038        ]9039      },9040      "capabilities": [9041        "live_listings",9042        "images"9043      ],9044      "refreshClass": "normal",9045      "domain": "hifishark.com",9046      "country": "EU",9047      "requires": [],9048      "historicalDepth": "none"9049    },9050    {9051      "id": "historics",9052      "displayName": "Historics Auctioneers (results)",9053      "sourceId": "historics",9054      "sourceName": "Historics Auctioneers",9055      "sourceType": "auction_house",9056      "sourceUrl": "https://www.historics.co.uk",9057      "module": "api/historics",9058      "enginePriority": [9059        "api"9060      ],9061      "categories": [9062        "automobiles",9063        "motorcycles",9064        "automotive_memorabilia",9065        "license_plates"9066      ],9067      "regions": [9068        "GB"9069      ],9070      "languages": [9071        "en"9072      ],9073      "currency": [9074        "GBP"9075      ],9076      "supportsListings": false,9077      "supportsSold": true,9078      "supportsAuctions": false,9079      "supportsImages": true,9080      "supportsCatalog": false,9081      "supportsPopulation": false,9082      "supportsLookup": false,9083      "refreshFrequencyMinutes": 1440,9084      "priority": "low",9085      "trustScore": 0.85,9086      "attributionRequired": true,9087      "termsUrl": "https://www.historics.co.uk/terms-and-conditions",9088      "accessNotes": "Historics (UK classic-car auctions, Ascot/Windsor/Brooklands + online automobilia & registration sales) lists past sales at /auction-results (title, sale number, end date) and renders each sale's 'Past lots' server-side at /auction/details/<slug>?au=<id>&pp=96&pn=<page> with 'Sold £X' per lot card (plain HTTPS, 0 credits). robots.txt sets crawl-delay 10, so the connector waits 10 s between requests and caps pages per run. 'Sold £X' is the hammer price (Historics adds a buyer's premium + VAT on top) → buyer_premium_included=false; lots 'sold for an undisclosed fee' and unsold lots are skipped. Sale numbers starting with A = vehicle sales (cars/motorcycles from the title), W = online automobilia/registration sales (automotive_memorabilia; registration plates → license_plates). Sale date = the end date printed on the results list.",9089      "enabled": true,9090      "schemaVersion": "1.0",9091      "config": {9092        "auctionsPerRun": 1,9093        "pagesPerRun": 39094      },9095      "capabilities": [9096        "sold_listings",9097        "images"9098      ],9099      "refreshClass": "normal",9100      "domain": "historics.co.uk",9101      "country": "GB",9102      "requires": [],9103      "historicalDepth": "none"9104    },9105    {9106      "id": "hobbiesville",9107      "displayName": "Hobbiesville (Canadian TCG & collector-toy store, CAD)",9108      "sourceId": "hobbiesville",9109      "sourceName": "Hobbiesville",9110      "sourceType": "dealer",9111      "sourceUrl": "https://www.hobbiesville.com",9112      "module": "api/hobbiesville",9113      "enginePriority": [9114        "api"9115      ],9116      "categories": [9117        "magic_the_gathering",9118        "flesh_and_blood",9119        "disney_lorcana",9120        "other_tcg",9121        "pokemon",9122        "yugioh",9123        "funko",9124        "lego_sets",9125        "action_figures",9126        "lego_minifigures"9127      ],9128      "regions": [9129        "CA"9130      ],9131      "languages": [9132        "en"9133      ],9134      "currency": [9135        "CAD"9136      ],9137      "supportsListings": true,9138      "supportsSold": false,9139      "supportsAuctions": false,9140      "supportsImages": true,9141      "supportsCatalog": false,9142      "supportsPopulation": false,9143      "supportsLookup": true,9144      "refreshFrequencyMinutes": 720,9145      "priority": "medium",9146      "trustScore": 0.75,9147      "attributionRequired": true,9148      "termsUrl": "https://www.hobbiesville.com/policies/terms-of-service",9149      "accessNotes": "Hobbiesville (hobbiesville.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 10 configured collections (magic-singles, fab-singles, disney-lorcana-singles, gundam-card-game-singles, japanese-pokemon, bf-yugioh, funko-pop, lego … (+2 more, see config.collections)) and /products/<handle>.json for URL lookups (~200k products; 21k singles, 8.4k MTG singles). 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; extra merchant rules only target Nutch (Disallow: /) and Ahrefs/MJ12 (Crawl-delay: 10), not User-agent *. 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 — gift-guide/sale umbrella collections, board games, blind boxes, supplies. No personal data is collected; seller = the store itself.",9150      "enabled": true,9151      "schemaVersion": "1.0",9152      "config": {9153        "currency": "CAD",9154        "market": "CA",9155        "seller": "Hobbiesville",9156        "location": "Toronto, ON, Canada",9157        "collections": [9158          {9159            "handle": "magic-singles",9160            "categorySlug": "magic_the_gathering",9161            "franchise": "Magic: The Gathering"9162          },9163          {9164            "handle": "fab-singles",9165            "categorySlug": "flesh_and_blood",9166            "franchise": "Flesh and Blood"9167          },9168          {9169            "handle": "disney-lorcana-singles",9170            "categorySlug": "disney_lorcana",9171            "franchise": "Disney Lorcana"9172          },9173          {9174            "handle": "gundam-card-game-singles",9175            "categorySlug": "other_tcg",9176            "franchise": "Gundam Card Game"9177          },9178          {9179            "handle": "japanese-pokemon",9180            "categorySlug": "pokemon",9181            "franchise": "Pokémon"9182          },9183          {9184            "handle": "bf-yugioh",9185            "categorySlug": "yugioh",9186            "franchise": "Yu-Gi-Oh!"9187          },9188          {9189            "handle": "funko-pop",9190            "categorySlug": "funko",9191            "brand": "Funko"9192          },9193          {9194            "handle": "lego",9195            "categorySlug": "lego_sets",9196            "brand": "LEGO"9197          },9198          {9199            "handle": "lego-star-wars",9200            "categorySlug": "lego_sets",9201            "brand": "LEGO",9202            "franchise": "Star Wars"9203          },9204          {9205            "handle": "banpresto-one-piece",9206            "categorySlug": "action_figures",9207            "brand": "Banpresto",9208            "franchise": "One Piece"9209          }9210        ],9211        "rules": [9212          {9213            "match": "\\blego\\b[\\s\\S]*minifig|minifig[\\s\\S]*\\blego\\b",9214            "categorySlug": "lego_minifigures",9215            "brand": "LEGO"9216          }9217        ],9218        "defaultCategory": null,9219        "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",9220        "keepOutOfStock": true,9221        "fetchBarcodes": false,9222        "wholeShop": false,9223        "pageSize": 250,9224        "titlePattern": "^(?<name>.+?) \\((?<set>[A-Z0-9]{2,6})-(?<number>[A-Za-z0-9]+)\\)"9225      },9226      "capabilities": [9227        "live_listings",9228        "images",9229        "url_lookup"9230      ],9231      "refreshClass": "normal",9232      "domain": "hobbiesville.com",9233      "country": "CA",9234      "requires": [],9235      "acquisitionMethod": "Shopify storefront products.json",9236      "historicalDepth": "none"9237    },9238    {9239      "id": "hobbysearch",9240      "displayName": "HobbySearch 1999.co.jp (Gunpla & model kits, JPY)",9241      "sourceId": "hobbysearch",9242      "sourceName": "HobbySearch",9243      "sourceType": "dealer",9244      "sourceUrl": "https://www.1999.co.jp",9245      "module": "firecrawl/hobbysearch",9246      "enginePriority": [9247        "firecrawl",9248        "scrapfly"9249      ],9250      "categories": [9251        "gundam",9252        "action_figures",9253        "model_cars"9254      ],9255      "regions": [9256        "JP"9257      ],9258      "languages": [9259        "en",9260        "ja"9261      ],9262      "currency": [9263        "JPY"9264      ],9265      "supportsListings": true,9266      "supportsSold": false,9267      "supportsAuctions": false,9268      "supportsImages": true,9269      "supportsCatalog": true,9270      "supportsPopulation": false,9271      "supportsLookup": true,9272      "refreshFrequencyMinutes": 1440,9273      "priority": "low",9274      "trustScore": 0.8,9275      "attributionRequired": true,9276      "termsUrl": "https://www.1999.co.jp/eng/guide/",9277      "accessNotes": "Public English search/list pages (1999.co.jp/eng/search?...; robots.txt allows all for generic agents) and item pages. Direct HTTPS returns 403 to non-browser clients, so pages go through Firecrawl (1 credit per page of 60 items). Parsed per card: HobbySearch item id, title, street price and list price (JPY), discount, stock state (In Stock / Sold Out / Pre-Order / Back-order), image. Emits catalog items (list price = manufacturer MSRP) and the retailer's fixed-price listing. Gundam categorisation is keyword-based on the seed + title; other kits fall back to the seed's category.",9278      "enabled": true,9279      "schemaVersion": "1.0",9280      "config": {9281        "seeds": [9282          {9283            "key": "Gundam MG",9284            "categorySlug": "gundam"9285          },9286          {9287            "key": "Gundam RG",9288            "categorySlug": "gundam"9289          },9290          {9291            "key": "Gundam PG",9292            "categorySlug": "gundam"9293          },9294          {9295            "key": "HGUC",9296            "categorySlug": "gundam"9297          },9298          {9299            "key": "Nendoroid",9300            "categorySlug": "action_figures"9301          },9302          {9303            "key": "figma",9304            "categorySlug": "action_figures"9305          }9306        ],9307        "pagesPerSeed": 19308      },9309      "capabilities": [9310        "live_listings",9311        "images",9312        "catalog",9313        "url_lookup"9314      ],9315      "refreshClass": "normal",9316      "domain": "1999.co.jp",9317      "country": "JP",9318      "requires": [],9319      "historicalDepth": "none"9320    },9321    {9322      "id": "hodinkee-shop",9323      "displayName": "HODINKEE Shop",9324      "sourceId": "hodinkee-shop",9325      "sourceName": "HODINKEE Shop",9326      "sourceType": "dealer",9327      "sourceUrl": "https://shop.hodinkee.com",9328      "module": "api/hodinkee-shop",9329      "enginePriority": [9330        "api"9331      ],9332      "categories": [9333        "rolex",9334        "omega",9335        "patek_philippe",9336        "audemars_piguet",9337        "other_watches"9338      ],9339      "regions": [9340        "US"9341      ],9342      "languages": [9343        "en"9344      ],9345      "currency": [9346        "USD"9347      ],9348      "supportsListings": true,9349      "supportsSold": false,9350      "supportsAuctions": false,9351      "supportsImages": true,9352      "supportsCatalog": false,9353      "supportsPopulation": false,9354      "supportsLookup": true,9355      "refreshFrequencyMinutes": 1440,9356      "priority": "medium",9357      "trustScore": 0.75,9358      "attributionRequired": true,9359      "termsUrl": "https://shop.hodinkee.com/policies/terms-of-service",9360      "accessNotes": "HODINKEE Shop (shop.hodinkee.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (vintage-watches, vintage-rolex, rolex-brand, omega-brand, vintage-omega-watches, cartier-brand, grand-seiko-brand, vintage-patek-philippe, vintage-audemars-piguet-watches, vintage-tudor-watches, vintage-tag-heuer-watches, vintage-universal-geneve-watches, vintage-zenith-watches, vintage-vacheron-constantin-watches, pre-owned-new-additions, dress-watches, chronograph-watches, aviation-watches, avant-garde-watches). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency USD (/meta.json currency USD, Shopify.currency rate 1.0). Sold vintage/pre-owned pieces stay published as out-of-stock products, so most watch listings arrive as availability \"ended\" with their last asking price — useful price history, but never treated as a realised sale. Only products whose product_type is \"Watches : …\" or \"… : New Watch\" are mapped; everything else in a watch collection (straps, pouches, books) is skipped. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",9361      "enabled": true,9362      "schemaVersion": "1.0",9363      "config": {9364        "currency": "USD",9365        "seller": "HODINKEE Shop",9366        "location": null,9367        "collections": [9368          {9369            "handle": "vintage-watches",9370            "categorySlug": null9371          },9372          {9373            "handle": "vintage-rolex",9374            "categorySlug": null9375          },9376          {9377            "handle": "rolex-brand",9378            "categorySlug": null9379          },9380          {9381            "handle": "omega-brand",9382            "categorySlug": null9383          },9384          {9385            "handle": "vintage-omega-watches",9386            "categorySlug": null9387          },9388          {9389            "handle": "cartier-brand",9390            "categorySlug": null9391          },9392          {9393            "handle": "grand-seiko-brand",9394            "categorySlug": null9395          },9396          {9397            "handle": "vintage-patek-philippe",9398            "categorySlug": null9399          },9400          {9401            "handle": "vintage-audemars-piguet-watches",9402            "categorySlug": null9403          },9404          {9405            "handle": "vintage-tudor-watches",9406            "categorySlug": null9407          },9408          {9409            "handle": "vintage-tag-heuer-watches",9410            "categorySlug": null9411          },9412          {9413            "handle": "vintage-universal-geneve-watches",9414            "categorySlug": null9415          },9416          {9417            "handle": "vintage-zenith-watches",9418            "categorySlug": null9419          },9420          {9421            "handle": "vintage-vacheron-constantin-watches",9422            "categorySlug": null9423          },9424          {9425            "handle": "pre-owned-new-additions",9426            "categorySlug": null9427          },9428          {9429            "handle": "dress-watches",9430            "categorySlug": null9431          },9432          {9433            "handle": "chronograph-watches",9434            "categorySlug": null9435          },9436          {9437            "handle": "aviation-watches",9438            "categorySlug": null9439          },9440          {9441            "handle": "avant-garde-watches",9442            "categorySlug": null9443          }9444        ],9445        "rules": [9446          {9447            "match": "^(?=.*(?:Watches : |New Watch))(?=.*\\brolex\\b)",9448            "categorySlug": "rolex",9449            "brand": "Rolex"9450          },9451          {9452            "match": "^(?=.*(?:Watches : |New Watch))(?=.*\\bomega\\b)",9453            "categorySlug": "omega",9454            "brand": "Omega"9455          },9456          {9457            "match": "^(?=.*(?:Watches : |New Watch))(?=.*patek)",9458            "categorySlug": "patek_philippe",9459            "brand": "Patek Philippe"9460          },9461          {9462            "match": "^(?=.*(?:Watches : |New Watch))(?=.*(audemars|royal oak))",9463            "categorySlug": "audemars_piguet",9464            "brand": "Audemars Piguet"9465          },9466          {9467            "match": "Watches : |New Watch",9468            "categorySlug": "other_watches"9469          }9470        ],9471        "defaultCategory": null,9472        "exclude": "apple watch|smartwatch|gift card|\\bstraps?\\b(?!.*Watches :)|watch roll|pouch|travel case|storage|tool kit|spring bar|magazine|\\bbook\\b|assouline|\\bpen\\b|candle|umbrella|t-shirt|\\bcap\\b|\\bhat\\b|\\bbag\\b|wallet|notebook|puzzle|blanket|glass\\b|loupe|winder|cufflink|sunglasses|camera|leica|\\bfilm\\b|poster|\\bprint\\b|bundle",9473        "keepOutOfStock": true,9474        "titlePattern": "^(?<name>.+?) Ref\\.? (?<number>[\\w./-]+)",9475        "pageSize": 250,9476        "fetchBarcodes": false,9477        "wholeShop": false9478      },9479      "capabilities": [9480        "live_listings",9481        "images",9482        "url_lookup"9483      ],9484      "refreshClass": "normal",9485      "domain": "shop.hodinkee.com",9486      "country": "US",9487      "requires": [],9488      "acquisitionMethod": "Shopify storefront products.json (public JSON)",9489      "historicalDepth": "none"9490    },9491    {9492      "id": "hypeboost",9493      "displayName": "Hypeboost (EU sneaker marketplace — lowest asks)",9494      "sourceId": "hypeboost",9495      "sourceName": "Hypeboost",9496      "sourceType": "marketplace",9497      "sourceUrl": "https://hypeboost.com",9498      "module": "firecrawl/hypeboost",9499      "enginePriority": [9500        "firecrawl",9501        "scrapfly"9502      ],9503      "categories": [9504        "sneakers",9505        "nike_jordan",9506        "adidas_yeezy",9507        "new_balance_asics_other"9508      ],9509      "regions": [9510        "NL",9511        "EU"9512      ],9513      "languages": [9514        "en"9515      ],9516      "currency": [9517        "EUR"9518      ],9519      "supportsListings": true,9520      "supportsSold": false,9521      "supportsAuctions": false,9522      "supportsImages": true,9523      "supportsCatalog": true,9524      "supportsPopulation": false,9525      "supportsLookup": true,9526      "refreshFrequencyMinutes": 1440,9527      "priority": "low",9528      "trustScore": 0.7,9529      "attributionRequired": true,9530      "termsUrl": "https://hypeboost.com/en/terms-and-conditions",9531      "accessNotes": "Plain HTTPS gets 403 (robots.txt not served to non-browser agents); Firecrawl's standard fetch returns the public category grid (hypeboost.com/en/category/sneakers/<brand>[?page=N]) with product name, EUR lowest price, brand/category data attributes and product id (36 per page, 1 credit). Product pages (lookup) expose the style code in schema.org Product sku. 2 s between pages.",9532      "enabled": true,9533      "schemaVersion": "1.0",9534      "config": {9535        "seeds": [9536          "air-jordan",9537          "nike",9538          "adidas",9539          "yeezy",9540          "new-balance",9541          "asics"9542        ],9543        "pagesPerSeed": 29544      },9545      "capabilities": [9546        "live_listings",9547        "images",9548        "catalog",9549        "url_lookup"9550      ],9551      "refreshClass": "normal",9552      "domain": "hypeboost.com",9553      "country": "NL",9554      "requires": [],9555      "historicalDepth": "none"9556    },9557    {9558      "id": "idealwine",9559      "displayName": "iDealwine Price Estimate (wine price index)",9560      "sourceId": "idealwine",9561      "sourceName": "iDealwine",9562      "sourceType": "pricing_guide",9563      "sourceUrl": "https://www.idealwine.com",9564      "module": "api/idealwine",9565      "enginePriority": [9566        "api",9567        "firecrawl",9568        "scrapfly"9569      ],9570      "categories": [9571        "wine"9572      ],9573      "regions": [9574        "FR",9575        "EU"9576      ],9577      "languages": [9578        "en",9579        "fr"9580      ],9581      "currency": [9582        "EUR"9583      ],9584      "supportsListings": false,9585      "supportsSold": false,9586      "supportsAuctions": false,9587      "supportsImages": true,9588      "supportsCatalog": true,9589      "supportsPopulation": false,9590      "supportsLookup": false,9591      "refreshFrequencyMinutes": 10080,9592      "priority": "medium",9593      "trustScore": 0.85,9594      "attributionRequired": true,9595      "termsUrl": "https://www.idealwine.com/en/cgv",9596      "accessNotes": "Public price-index pages (/en/cote/<region>?page=N) of iDealwine, the leading French wine auction house: each card lists a wine (region > appellation, colour, producer picture) with the iDealwine Price Estimate per vintage in EUR per 75 cl bottle. The estimate is computed by iDealwine from auction results (hammer price INCLUDING buyer's premium, updated weekly from 3M+ French auction prices since 1992) — we store it as a guide_value price observation, never as a transaction. Plain HTTPS with the RareIndex user agent; robots.txt disallows only /api/, account and login paths. No timestamp is published per estimate, so observationDate = fetch date (confidence 0.75). 2 s politeness delay; regions and pages per run are configurable.",9597      "enabled": true,9598      "schemaVersion": "1.0",9599      "config": {9600        "regions": [9601          "bordeaux",9602          "bourgogne",9603          "rhone",9604          "champagne",9605          "loire",9606          "italie",9607          "alsace",9608          "languedoc",9609          "provence",9610          "jura"9611        ],9612        "pagesPerRegion": 39613      },9614      "capabilities": [9615        "images",9616        "catalog"9617      ],9618      "refreshClass": "archive",9619      "domain": "idealwine.com",9620      "country": "FR",9621      "requires": [],9622      "historicalDepth": "none"9623    },9624    {9625      "id": "just-whisky",9626      "displayName": "Just Whisky (past auctions)",9627      "sourceId": "just-whisky",9628      "sourceName": "Just Whisky",9629      "sourceType": "auction_house",9630      "sourceUrl": "https://www.just-whisky.co.uk",9631      "module": "api/just-whisky",9632      "enginePriority": [9633        "api"9634      ],9635      "categories": [9636        "whisky",9637        "rum",9638        "cognac"9639      ],9640      "regions": [9641        "GB"9642      ],9643      "languages": [9644        "en"9645      ],9646      "currency": [9647        "GBP"9648      ],9649      "supportsListings": false,9650      "supportsSold": true,9651      "supportsAuctions": false,9652      "supportsImages": true,9653      "supportsCatalog": false,9654      "supportsPopulation": false,9655      "supportsLookup": true,9656      "refreshFrequencyMinutes": 1440,9657      "priority": "high",9658      "trustScore": 0.9,9659      "attributionRequired": true,9660      "termsUrl": "https://www.just-whisky.co.uk/terms-and-conditions",9661      "accessNotes": "Just Whisky (Scotland, monthly online whisky auctions since 2013) renders its Past Auctions page from a public JSON API that we read directly: GET /api/lots/?min_end_date=dd/mm/yyyy&max_end_date=dd/mm/yyyy&ordering=-price&page_size=200&page=N and GET /api/auctions/ (plain HTTPS, 0 credits; robots.txt disallows only /account/ and /checkout). A lot is a sale when reserve_met is true (hammer_price is then populated); price = hammer price in GBP, buyer's commission is charged separately → buyer_premium_included=false. Sale date = the lot's auction end_date (seller_sheet.auction). Item facts (strength, size, distillery/bottler when filled) go to attributes/metadata; titles are parsed with the shared whisky heuristics. Incremental runs read the last two auction windows; backfill walks auctions oldest→newest from /api/auctions/. 1.5 s politeness.",9662      "enabled": true,9663      "schemaVersion": "1.0",9664      "config": {9665        "pageSize": 200,9666        "pagesPerRun": 8,9667        "auctionsPerRun": 29668      },9669      "capabilities": [9670        "sold_listings",9671        "images",9672        "url_lookup"9673      ],9674      "refreshClass": "normal",9675      "domain": "just-whisky.co.uk",9676      "country": "GB",9677      "requires": [],9678      "historicalDepth": "none"9679    },9680    {9681      "id": "kanzen-games",9682      "displayName": "KanZen Games (Canadian TCG & sports-card store, CAD)",9683      "sourceId": "kanzen-games",9684      "sourceName": "KanZen Games",9685      "sourceType": "dealer",9686      "sourceUrl": "https://www.kanzengames.com",9687      "module": "api/kanzen-games",9688      "enginePriority": [9689        "api"9690      ],9691      "categories": [9692        "pokemon",9693        "magic_the_gathering",9694        "disney_lorcana",9695        "other_tcg",9696        "digimon_tcg",9697        "one_piece_card_game",9698        "dragon_ball_tcg",9699        "football_cards",9700        "basketball_cards",9701        "yugioh",9702        "weiss_schwarz"9703      ],9704      "regions": [9705        "CA"9706      ],9707      "languages": [9708        "en"9709      ],9710      "currency": [9711        "CAD"9712      ],9713      "supportsListings": true,9714      "supportsSold": false,9715      "supportsAuctions": false,9716      "supportsImages": true,9717      "supportsCatalog": false,9718      "supportsPopulation": false,9719      "supportsLookup": true,9720      "refreshFrequencyMinutes": 720,9721      "priority": "medium",9722      "trustScore": 0.75,9723      "attributionRequired": true,9724      "termsUrl": "https://www.kanzengames.com/policies/terms-of-service",9725      "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.",9726      "enabled": true,9727      "schemaVersion": "1.0",9728      "config": {9729        "currency": "CAD",9730        "market": "CA",9731        "seller": "KanZen Games",9732        "location": "Toronto, ON, Canada",9733        "collections": [9734          {9735            "handle": "slabs",9736            "categorySlug": "pokemon",9737            "franchise": "Pokémon"9738          },9739          {9740            "handle": "graded-card-in-stock",9741            "categorySlug": "pokemon",9742            "franchise": "Pokémon"9743          },9744          {9745            "handle": "ebay-pokemon-singles",9746            "categorySlug": "pokemon",9747            "franchise": "Pokémon"9748          },9749          {9750            "handle": "pokemon-tcg-mega-evolution",9751            "categorySlug": "pokemon",9752            "franchise": "Pokémon"9753          },9754          {9755            "handle": "japanese-sealed",9756            "categorySlug": "pokemon",9757            "franchise": "Pokémon"9758          },9759          {9760            "handle": "magic-the-gathering",9761            "categorySlug": "magic_the_gathering",9762            "franchise": "Magic: The Gathering"9763          },9764          {9765            "handle": "disney-lorcana-singles-1",9766            "categorySlug": "disney_lorcana",9767            "franchise": "Disney Lorcana"9768          },9769          {9770            "handle": "gundam-singles-all",9771            "categorySlug": "other_tcg",9772            "franchise": "Gundam Card Game"9773          },9774          {9775            "handle": "digimon-single",9776            "categorySlug": "digimon_tcg",9777            "franchise": "Digimon"9778          },9779          {9780            "handle": "digimon-sealed",9781            "categorySlug": "digimon_tcg",9782            "franchise": "Digimon"9783          },9784          {9785            "handle": "one-piece-tcg-singles-all",9786            "categorySlug": "one_piece_card_game",9787            "franchise": "One Piece"9788          },9789          {9790            "handle": "dragon-ball-tcg",9791            "categorySlug": "dragon_ball_tcg",9792            "franchise": "Dragon Ball Super"9793          },9794          {9795            "handle": "hololive-tcg-sealed",9796            "categorySlug": "other_tcg",9797            "franchise": "hololive"9798          },9799          {9800            "handle": "football-sealed",9801            "categorySlug": "football_cards"9802          },9803          {9804            "handle": "basketball-sealed-all",9805            "categorySlug": "basketball_cards"9806          }9807        ],9808        "rules": [9809          {9810            "match": "\\bone piece\\b|\\bOP\\d{2}\\b",9811            "categorySlug": "one_piece_card_game",9812            "franchise": "One Piece"9813          },9814          {9815            "match": "\\bmagic\\b|\\bmtg\\b",9816            "categorySlug": "magic_the_gathering",9817            "franchise": "Magic: The Gathering"9818          },9819          {9820            "match": "yu-?gi-?oh",9821            "categorySlug": "yugioh",9822            "franchise": "Yu-Gi-Oh!"9823          },9824          {9825            "match": "\\blorcana\\b",9826            "categorySlug": "disney_lorcana",9827            "franchise": "Disney Lorcana"9828          },9829          {9830            "match": "\\bdigimon\\b",9831            "categorySlug": "digimon_tcg",9832            "franchise": "Digimon"9833          },9834          {9835            "match": "\\bdragon ball\\b",9836            "categorySlug": "dragon_ball_tcg",9837            "franchise": "Dragon Ball Super"9838          },9839          {9840            "match": "\\bweiss\\b",9841            "categorySlug": "weiss_schwarz",9842            "franchise": "Weiß Schwarz"9843          }9844        ],9845        "defaultCategory": null,9846        "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",9847        "keepOutOfStock": true,9848        "fetchBarcodes": false,9849        "wholeShop": false,9850        "pageSize": 250,9851        "titlePattern": "^(?:PSA|BGS|CGC|TAG|ACE|SGC)\\s*[\\d.]+\\s*-\\s*(?<name>.+?)\\s*-\\s*(?<set>.+?)\\s*-\\s*#(?<number>\\S+)"9852      },9853      "capabilities": [9854        "live_listings",9855        "images",9856        "url_lookup"9857      ],9858      "refreshClass": "normal",9859      "domain": "kanzengames.com",9860      "country": "CA",9861      "requires": [],9862      "acquisitionMethod": "Shopify storefront products.json",9863      "historicalDepth": "none"9864    },9865    {9866      "id": "kapowtoys",9867      "displayName": "Kapow Toys",9868      "sourceId": "kapowtoys",9869      "sourceName": "Kapow Toys",9870      "sourceType": "dealer",9871      "sourceUrl": "https://www.kapowtoys.co.uk",9872      "module": "api/kapowtoys",9873      "enginePriority": [9874        "api"9875      ],9876      "categories": [9877        "action_figures",9878        "gundam",9879        "funko"9880      ],9881      "regions": [9882        "GB"9883      ],9884      "languages": [9885        "en"9886      ],9887      "currency": [9888        "GBP"9889      ],9890      "supportsListings": true,9891      "supportsSold": false,9892      "supportsAuctions": false,9893      "supportsImages": true,9894      "supportsCatalog": false,9895      "supportsPopulation": false,9896      "supportsLookup": false,9897      "refreshFrequencyMinutes": 1440,9898      "priority": "medium",9899      "trustScore": 0.65,9900      "attributionRequired": true,9901      "termsUrl": "https://www.kapowtoys.co.uk/policies/terms-of-service",9902      "accessNotes": "Kapow Toys (kapowtoys.co.uk) is a WooCommerce shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /wp-json/wc/store/v1/products?per_page=100&page=N&category=<id> (WooCommerce Store API shipped with WooCommerce Blocks, no key) for the configured categories, resolved by slug through /wp-json/wc/store/v1/products/categories (hot-toys, marvel-hot-toys, neca, mezco, marvel-legends-1, black-series-6-inch, masters-of-the-universe-1, teenage-mutant-ninja-turtles, g-i-joe, mcfarlane, medicon-mafex, masterpiece, 3rd-party-transformers, busts-statues, godzilla, gundam, good-smile-company, funko). robots.txt (checked 2026-09-08) only disallows /wp-admin/ (except admin-ajax.php), add-to-cart query strings and the WooCommerce upload/log folders; /wp-json/wc/store/v1/ is not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages of 100 per category per incremental run. Prices come from the Store API in minor units with an explicit currency_code (GBP, currency_minor_unit 2); the adapter uses that code when present. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",9903      "enabled": true,9904      "schemaVersion": "1.0",9905      "config": {9906        "currency": "GBP",9907        "seller": "Kapow Toys",9908        "location": null,9909        "collections": [9910          {9911            "handle": "hot-toys",9912            "categorySlug": "action_figures",9913            "brand": "Hot Toys"9914          },9915          {9916            "handle": "marvel-hot-toys",9917            "categorySlug": "action_figures",9918            "brand": "Hot Toys",9919            "franchise": "Marvel"9920          },9921          {9922            "handle": "neca",9923            "categorySlug": "action_figures",9924            "brand": "NECA"9925          },9926          {9927            "handle": "mezco",9928            "categorySlug": "action_figures",9929            "brand": "Mezco"9930          },9931          {9932            "handle": "marvel-legends-1",9933            "categorySlug": "action_figures",9934            "brand": "Hasbro",9935            "series": "Marvel Legends",9936            "franchise": "Marvel"9937          },9938          {9939            "handle": "black-series-6-inch",9940            "categorySlug": "action_figures",9941            "brand": "Hasbro",9942            "series": "Black Series",9943            "franchise": "Star Wars"9944          },9945          {9946            "handle": "masters-of-the-universe-1",9947            "categorySlug": "action_figures",9948            "franchise": "Masters of the Universe"9949          },9950          {9951            "handle": "teenage-mutant-ninja-turtles",9952            "categorySlug": "action_figures",9953            "franchise": "Teenage Mutant Ninja Turtles"9954          },9955          {9956            "handle": "g-i-joe",9957            "categorySlug": "action_figures",9958            "franchise": "G.I. Joe"9959          },9960          {9961            "handle": "mcfarlane",9962            "categorySlug": "action_figures",9963            "brand": "McFarlane Toys"9964          },9965          {9966            "handle": "medicon-mafex",9967            "categorySlug": "action_figures",9968            "brand": "Medicom Toy",9969            "series": "MAFEX"9970          },9971          {9972            "handle": "masterpiece",9973            "categorySlug": "action_figures",9974            "brand": "Takara Tomy",9975            "series": "Masterpiece",9976            "franchise": "Transformers"9977          },9978          {9979            "handle": "3rd-party-transformers",9980            "categorySlug": "action_figures",9981            "franchise": "Transformers"9982          },9983          {9984            "handle": "busts-statues",9985            "categorySlug": "action_figures"9986          },9987          {9988            "handle": "godzilla",9989            "categorySlug": "action_figures",9990            "franchise": "Godzilla"9991          },9992          {9993            "handle": "gundam",9994            "categorySlug": "gundam",9995            "brand": "Bandai",9996            "franchise": "Gundam"9997          },9998          {9999            "handle": "good-smile-company",10000            "categorySlug": "action_figures",10001            "brand": "Good Smile Company"10002          },10003          {10004            "handle": "funko",10005            "categorySlug": "funko",10006            "brand": "Funko"10007          }10008        ],10009        "rules": [10010          {10011            "match": "nendoroid",10012            "categorySlug": "action_figures",10013            "series": "Nendoroid"10014          },10015          {10016            "match": "\\bfigma\\b",10017            "categorySlug": "action_figures",10018            "series": "figma"10019          }10020        ],10021        "defaultCategory": null,10022        "exclude": "gift card|t-shirt|hoodie|\\bcap\\b|apparel|mug\\b|poster|\\bprint\\b|keyring|lanyard|display stand|stand only|protective case|\\bshelf\\b|riser|led light|sticker|pin badge|wallet|\\bbag\\b|backpack|sleeve|\\bbook\\b|art book|puzzle|calendar|voucher|deposit|payment plan|pre-order deposit",10023        "keepOutOfStock": true,10024        "perPage": 10010025      },10026      "capabilities": [10027        "live_listings",10028        "images"10029      ],10030      "refreshClass": "normal",10031      "domain": "kapowtoys.co.uk",10032      "country": "GB",10033      "requires": [],10034      "acquisitionMethod": "WooCommerce Store API (public JSON)",10035      "historicalDepth": "none"10036    },10037    {10038      "id": "kelleher",10039      "displayName": "Daniel F. Kelleher Auctions (prices realized via Stamp Auction Network)",10040      "sourceId": "kelleher",10041      "sourceName": "Daniel F. Kelleher Auctions",10042      "sourceType": "auction_house",10043      "sourceUrl": "https://stampauctionnetwork.com/kelleher.cfm",10044      "module": "api/kelleher",10045      "enginePriority": [10046        "api",10047        "firecrawl"10048      ],10049      "categories": [10050        "stamps",10051        "banknotes",10052        "coins"10053      ],10054      "regions": [10055        "US"10056      ],10057      "languages": [10058        "en"10059      ],10060      "currency": [10061        "USD"10062      ],10063      "supportsListings": false,10064      "supportsSold": true,10065      "supportsAuctions": false,10066      "supportsImages": true,10067      "supportsCatalog": false,10068      "supportsPopulation": false,10069      "supportsLookup": false,10070      "refreshFrequencyMinutes": 1440,10071      "priority": "medium",10072      "trustScore": 0.85,10073      "attributionRequired": true,10074      "termsUrl": "https://www.kelleherauctions.com/auction-rules/",10075      "accessNotes": "Plain HTTPS, 0 credits. Kelleher publishes its catalogues and prices realized on Stamp Auction Network (stampauctionnetwork.com; robots.txt has no disallow rules). Sources: the firm page (/Kelleher.cfm, 'Prices Realized' section) → cCatalog.cfm?SrchFirm=V&SrchSale=<sale> → major groups (cCatalog2.cfm) → category pages (cCatalog3.cfm) whose lot tables show Sale/Lot/Cat numbers, description, image, 'Sold...US$ X', 'Closed..Mon-DD-YYYY' and 'Sold For X'. 'Sold' = winning bid (hammer) → buyer_premium_included=false; unsold lots (no 'Sold For') are skipped. Sale date = the lot's own Closed date. Attribution: Kelleher via Stamp Auction Network. Only stamp/postal-history catalogues in the cCatalog format are crawled (coin sales use another layout and are skipped). 2 s politeness.",10076      "enabled": true,10077      "schemaVersion": "1.0",10078      "config": {10079        "salesPerRun": 1,10080        "categoryPagesPerRun": 3010081      },10082      "capabilities": [10083        "sold_listings",10084        "images"10085      ],10086      "refreshClass": "normal",10087      "domain": "stampauctionnetwork.com",10088      "country": "US",10089      "requires": [],10090      "historicalDepth": "none"10091    },10092    {10093      "id": "kickgame",10094      "displayName": "Kick Game",10095      "sourceId": "kickgame",10096      "sourceName": "Kick Game",10097      "sourceType": "dealer",10098      "sourceUrl": "https://www.kickgame.co.uk",10099      "module": "api/kickgame",10100      "enginePriority": [10101        "api"10102      ],10103      "categories": [10104        "sneakers",10105        "nike_jordan",10106        "adidas_yeezy",10107        "new_balance_asics_other",10108        "designer_toys",10109        "other_watches",10110        "rolex",10111        "omega",10112        "patek_philippe",10113        "audemars_piguet"10114      ],10115      "regions": [10116        "GB"10117      ],10118      "languages": [10119        "en"10120      ],10121      "currency": [10122        "GBP"10123      ],10124      "supportsListings": true,10125      "supportsSold": false,10126      "supportsAuctions": false,10127      "supportsImages": true,10128      "supportsCatalog": false,10129      "supportsPopulation": false,10130      "supportsLookup": true,10131      "refreshFrequencyMinutes": 720,10132      "priority": "medium",10133      "trustScore": 0.7,10134      "attributionRequired": true,10135      "termsUrl": "https://www.kickgame.co.uk/policies/terms-of-service",10136      "accessNotes": "Kick Game (kickgame.co.uk) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (sneakers, air-jordan-1, air-jordan-4, nike-dunk-low, adidas-yeezy, new-balance-550, bearbrick, kaws, labubu, watches). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency GBP: the storefront shows visitors a geo-converted presentment currency (Shopify.currency active USD, rate 1.38 from a North-American IP) but products.json and /meta.json (currency GBP, primary domain www.kickgame.co.uk) are GBP. The .com host redirects to .co.uk. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",10137      "enabled": true,10138      "schemaVersion": "1.0",10139      "config": {10140        "currency": "GBP",10141        "seller": "Kick Game",10142        "location": null,10143        "collections": [10144          {10145            "handle": "sneakers",10146            "categorySlug": "sneakers"10147          },10148          {10149            "handle": "air-jordan-1",10150            "categorySlug": "nike_jordan",10151            "brand": "Jordan"10152          },10153          {10154            "handle": "air-jordan-4",10155            "categorySlug": "nike_jordan",10156            "brand": "Jordan"10157          },10158          {10159            "handle": "nike-dunk-low",10160            "categorySlug": "nike_jordan",10161            "brand": "Nike"10162          },10163          {10164            "handle": "adidas-yeezy",10165            "categorySlug": "adidas_yeezy",10166            "brand": "adidas Yeezy"10167          },10168          {10169            "handle": "new-balance-550",10170            "categorySlug": "new_balance_asics_other",10171            "brand": "New Balance"10172          },10173          {10174            "handle": "bearbrick",10175            "categorySlug": "designer_toys",10176            "brand": "Medicom Toy"10177          },10178          {10179            "handle": "kaws",10180            "categorySlug": "designer_toys",10181            "brand": "KAWS"10182          },10183          {10184            "handle": "labubu",10185            "categorySlug": "designer_toys",10186            "brand": "Pop Mart"10187          },10188          {10189            "handle": "watches",10190            "categorySlug": "other_watches"10191          }10192        ],10193        "rules": [10194          {10195            "match": "swatch|moonswatch|scuba fifty",10196            "categorySlug": "other_watches",10197            "brand": "Swatch"10198          },10199          {10200            "match": "rolex",10201            "categorySlug": "rolex",10202            "brand": "Rolex"10203          },10204          {10205            "match": "omega",10206            "categorySlug": "omega",10207            "brand": "Omega"10208          },10209          {10210            "match": "patek",10211            "categorySlug": "patek_philippe",10212            "brand": "Patek Philippe"10213          },10214          {10215            "match": "audemars|royal oak",10216            "categorySlug": "audemars_piguet",10217            "brand": "Audemars Piguet"10218          },10219          {10220            "match": "jordan",10221            "categorySlug": "nike_jordan",10222            "brand": "Jordan"10223          },10224          {10225            "match": "\\bnike\\b|air max|air force|\\bdunk\\b|\\bsb\\b|blazer|vapormax|huarache|cortez|p-6000|vomero|pegasus|\\bshox\\b|\\bkobe\\b|lebron|\\bnocta\\b|\\bacg\\b|sacai|off-white|travis scott",10226            "categorySlug": "nike_jordan",10227            "brand": "Nike"10228          },10229          {10230            "match": "yeezy",10231            "categorySlug": "adidas_yeezy",10232            "brand": "adidas Yeezy"10233          },10234          {10235            "match": "adidas|\\bsamba\\b|gazelle|spezial|superstar|\\bcampus\\b|\\bforum\\b|ultraboost|\\bnmd\\b|stan smith|adizero|\\by-3\\b|climacool|\\bzx\\b|\\beqt\\b|\\bsl ?72\\b|adistar|megaride|taekwondo|wales bonner",10236            "categorySlug": "adidas_yeezy",10237            "brand": "adidas"10238          },10239          {10240            "match": "new balance|asics|puma|reebok|saucony|salomon|converse|\\bvans\\b|\\bhoka\\b|karhu|mizuno|autry|diadora|\\bveja\\b|clarks|timberland|dr\\.? ?martens|\\bugg\\b|mallet|cleens|umbro|le coq|kangaroos|\\bfila\\b|k-swiss|lacoste|golden goose|balenciaga|\\bdior\\b|gucci|louis vuitton|prada|amiri|herm[eè]s|rick owens|margiela|mcqueen|common projects|axel arigato|represent|loewe|bottega|valentino|givenchy|fendi|burberry|chanel|celine|saint laurent|versace|moncler|birkenstock|\\bon\\b (cloud|running)|cloudmonster|cloudtilt|merrell|keen\\b|ewing|ellesse|kappa|hi-tec|etnies|\\bdc shoes|gola|onitsuka|norda|novesta|stepney|sunnei|camper|mschf|maison mihara|\\bbape\\b|\\bsta\\b",10241            "categorySlug": "new_balance_asics_other"10242          }10243        ],10244        "defaultCategory": null,10245        "exclude": "t-shirt|\\btee\\b|\\btees\\b|hoodie|sweatshirt|crewneck|jacket|\\bcoat\\b|tracksuit|track pants|track jacket|sweatpants|joggers|shorts|jeans|trousers|\\bpants\\b|cargo|\\bcap\\b|\\bhat\\b|beanie|balaclava|socks|\\bbag\\b|backpack|tote|wallet|card holder|\\bbelt\\b|sunglasses|fragrance|perfume|cologne|keyring|lanyard|cleaner|crep protect|protector spray|laces|insole|shoe tree|gift card|jersey|\\bpolo\\b|\\bshirt\\b|knitwear|cardigan|\\bvest\\b|gilet|puffer|scarf|gloves|jewellery|jewelry|\\bchain\\b|bracelet|necklace|\\bring\\b|umbrella|towel|doormat|\\brug\\b|candle|\\bmug\\b|phone case|airpods|dress\\b|skirt|leggings|bodysuit|swim|bikini|underwear|boxers|slippers|flip[- ]?flops?|sandals?\\b|\\bslides?\\b|\\bmules?\\b|crocs|clog|\\| clothing \\||\\| accessories \\| (?!.*(watch|labubu|bearbrick|pop mart))",10246        "keepOutOfStock": true,10247        "pageSize": 250,10248        "fetchBarcodes": false,10249        "wholeShop": false10250      },10251      "capabilities": [10252        "live_listings",10253        "images",10254        "url_lookup"10255      ],10256      "refreshClass": "normal",10257      "domain": "kickgame.co.uk",10258      "country": "GB",10259      "requires": [],10260      "acquisitionMethod": "Shopify storefront products.json (public JSON)",10261      "historicalDepth": "none"10262    },10263    {10264      "id": "kidrobot",10265      "displayName": "Kidrobot (US collector-toy store, USD)",10266      "sourceId": "kidrobot",10267      "sourceName": "Kidrobot",10268      "sourceType": "dealer",10269      "sourceUrl": "https://www.kidrobot.com",10270      "module": "api/kidrobot",10271      "enginePriority": [10272        "api"10273      ],10274      "categories": [10275        "designer_toys",10276        "sanrio",10277        "disney_collectibles",10278        "plush"10279      ],10280      "regions": [10281        "US"10282      ],10283      "languages": [10284        "en"10285      ],10286      "currency": [10287        "USD"10288      ],10289      "supportsListings": true,10290      "supportsSold": false,10291      "supportsAuctions": false,10292      "supportsImages": true,10293      "supportsCatalog": false,10294      "supportsPopulation": false,10295      "supportsLookup": true,10296      "refreshFrequencyMinutes": 720,10297      "priority": "medium",10298      "trustScore": 0.75,10299      "attributionRequired": true,10300      "termsUrl": "https://www.kidrobot.com/policies/terms-of-service",10301      "accessNotes": "Kidrobot (kidrobot.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 10 configured collections (dunny, labbit, art-toys, art-toys-pop-culture, blind-boxes-mini-figures, limited-edition, kidrobot-com-exclusives, hello-kitty-and-friends … (+2 more, see config.collections)) and /products/<handle>.json for URL lookups (~1.9k live products; Dunny 430, limited editions 690, blind boxes 230). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — gift-guide/holiday umbrella collections, apparel, accessories, enamel pins, keychains, home goods. No personal data is collected; seller = the store itself.",10302      "enabled": true,10303      "schemaVersion": "1.0",10304      "config": {10305        "currency": "USD",10306        "market": "US",10307        "seller": "Kidrobot",10308        "location": "Boulder, CO, USA",10309        "collections": [10310          {10311            "handle": "dunny",10312            "categorySlug": "designer_toys",10313            "brand": "Kidrobot",10314            "series": "Dunny"10315          },10316          {10317            "handle": "labbit",10318            "categorySlug": "designer_toys",10319            "brand": "Kidrobot",10320            "series": "Labbit"10321          },10322          {10323            "handle": "art-toys",10324            "categorySlug": "designer_toys",10325            "brand": "Kidrobot"10326          },10327          {10328            "handle": "art-toys-pop-culture",10329            "categorySlug": "designer_toys",10330            "brand": "Kidrobot"10331          },10332          {10333            "handle": "blind-boxes-mini-figures",10334            "categorySlug": "designer_toys",10335            "brand": "Kidrobot"10336          },10337          {10338            "handle": "limited-edition",10339            "categorySlug": "designer_toys",10340            "brand": "Kidrobot"10341          },10342          {10343            "handle": "kidrobot-com-exclusives",10344            "categorySlug": "designer_toys",10345            "brand": "Kidrobot"10346          },10347          {10348            "handle": "hello-kitty-and-friends",10349            "categorySlug": "sanrio",10350            "brand": "Kidrobot",10351            "franchise": "Hello Kitty"10352          },10353          {10354            "handle": "disney",10355            "categorySlug": "disney_collectibles",10356            "brand": "Kidrobot",10357            "franchise": "Disney"10358          },10359          {10360            "handle": "hello-kitty-plush-toys-collectibles",10361            "categorySlug": "plush",10362            "brand": "Kidrobot",10363            "franchise": "Hello Kitty"10364          }10365        ],10366        "rules": [10367          {10368            "match": "\\| Plush \\||\\bplush\\b",10369            "categorySlug": "plush"10370          }10371        ],10372        "defaultCategory": null,10373        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b",10374        "keepOutOfStock": true,10375        "fetchBarcodes": false,10376        "wholeShop": false,10377        "pageSize": 25010378      },10379      "capabilities": [10380        "live_listings",10381        "images",10382        "url_lookup"10383      ],10384      "refreshClass": "normal",10385      "domain": "kidrobot.com",10386      "country": "US",10387      "requires": [],10388      "acquisitionMethod": "Shopify storefront products.json",10389      "historicalDepth": "none"10390    },10391    {10392      "id": "kingscomics",10393      "displayName": "Kings Comics",10394      "sourceId": "kingscomics",10395      "sourceName": "Kings Comics",10396      "sourceType": "dealer",10397      "sourceUrl": "https://kingscomics.com",10398      "module": "api/kingscomics",10399      "enginePriority": [10400        "api"10401      ],10402      "categories": [10403        "comics",10404        "non_sport_cards",10405        "pokemon",10406        "magic_the_gathering",10407        "one_piece_card_game",10408        "manga",10409        "action_figures",10410        "coins",10411        "basketball_cards",10412        "football_cards",10413        "soccer_cards",10414        "baseball_cards",10415        "hockey_cards",10416        "other_sports_cards",10417        "marvel_comics",10418        "dc_comics",10419        "independent_comics"10420      ],10421      "regions": [10422        "AU"10423      ],10424      "languages": [10425        "en"10426      ],10427      "currency": [10428        "AUD"10429      ],10430      "supportsListings": true,10431      "supportsSold": false,10432      "supportsAuctions": false,10433      "supportsImages": true,10434      "supportsCatalog": false,10435      "supportsPopulation": false,10436      "supportsLookup": true,10437      "refreshFrequencyMinutes": 1440,10438      "priority": "medium",10439      "trustScore": 0.65,10440      "attributionRequired": true,10441      "termsUrl": "https://kingscomics.com/policies/terms-of-service",10442      "accessNotes": "Kings Comics (kingscomics.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (cgc, psa, all-graded-comics, comics-black-white-color, trading-card-singles, pokemon-tcg, magic-the-gathering, one-piece-card-game, manga, action-figures, statues-busts, coins). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency AUD (/meta.json currency AUD, Shopify.currency rate 1.0), GST included. CGC comic grades written as \"(8.5)\" after the title are not parsed by parseGradeFromTitle (grader is, grade stays null); PSA grades (\"PSA 9.8\") are parsed. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",10443      "enabled": true,10444      "schemaVersion": "1.0",10445      "config": {10446        "currency": "AUD",10447        "seller": "Kings Comics",10448        "location": null,10449        "collections": [10450          {10451            "handle": "cgc",10452            "categorySlug": "comics"10453          },10454          {10455            "handle": "psa",10456            "categorySlug": "comics"10457          },10458          {10459            "handle": "all-graded-comics",10460            "categorySlug": "comics"10461          },10462          {10463            "handle": "comics-black-white-color",10464            "categorySlug": "comics"10465          },10466          {10467            "handle": "trading-card-singles",10468            "categorySlug": "non_sport_cards"10469          },10470          {10471            "handle": "pokemon-tcg",10472            "categorySlug": "pokemon",10473            "franchise": "Pokémon"10474          },10475          {10476            "handle": "magic-the-gathering",10477            "categorySlug": "magic_the_gathering",10478            "franchise": "Magic: The Gathering"10479          },10480          {10481            "handle": "one-piece-card-game",10482            "categorySlug": "one_piece_card_game",10483            "franchise": "One Piece"10484          },10485          {10486            "handle": "manga",10487            "categorySlug": "manga"10488          },10489          {10490            "handle": "action-figures",10491            "categorySlug": "action_figures"10492          },10493          {10494            "handle": "statues-busts",10495            "categorySlug": "action_figures"10496          },10497          {10498            "handle": "coins",10499            "categorySlug": "coins"10500          }10501        ],10502        "rules": [10503          {10504            "match": "pok[eé]mon|pokmeon",10505            "categorySlug": "pokemon",10506            "franchise": "Pokémon"10507          },10508          {10509            "match": "magic:? the gathering|\\bmtg\\b",10510            "categorySlug": "magic_the_gathering",10511            "franchise": "Magic: The Gathering"10512          },10513          {10514            "match": "one piece (card|tcg)|\\bop\\d{2}\\b",10515            "categorySlug": "one_piece_card_game",10516            "franchise": "One Piece"10517          },10518          {10519            "match": "\\| comics \\||\\bvar\\b.*\\| comics",10520            "categorySlug": "comics"10521          },10522          {10523            "match": "\\bnba\\b|basketball|wnba",10524            "categorySlug": "basketball_cards"10525          },10526          {10527            "match": "\\bnfl\\b|american football",10528            "categorySlug": "football_cards"10529          },10530          {10531            "match": "soccer|premier league|uefa|champions league|world cup|\\bepl\\b|bundesliga|la liga|serie a|match attax|\\bfifa\\b|road to (world cup|euro)",10532            "categorySlug": "soccer_cards"10533          },10534          {10535            "match": "\\bmlb\\b|baseball",10536            "categorySlug": "baseball_cards"10537          },10538          {10539            "match": "\\bnhl\\b|hockey",10540            "categorySlug": "hockey_cards"10541          },10542          {10543            "match": "\\bupper deck\\b|\\bfleer\\b|\\btopps\\b|\\bpanini\\b",10544            "categorySlug": "other_sports_cards"10545          },10546          {10547            "match": "^(?=.*\\| (?:comics|graded collectables))(?=.*(?:marvel comics|\\bmarvel\\b|spider-?man|x-men|avengers|wolverine|daredevil|hulk|iron man|captain america|deadpool|fantastic four|venom|punisher))",10548            "categorySlug": "marvel_comics",10549            "brand": "Marvel"10550          },10551          {10552            "match": "^(?=.*\\| (?:comics|graded collectables))(?=.*(?:dc comics|\\bdc\\b|batman|superman|wonder woman|justice league|\\bflash\\b|green lantern|aquaman|harley quinn|joker|nightwing))",10553            "categorySlug": "dc_comics",10554            "brand": "DC"10555          },10556          {10557            "match": "^(?=.*\\| (?:comics|graded collectables))(?=.*(?:image comics|dark horse|\\bidw\\b|boom! ?studios|dynamite|valiant|oni press|2000 ad|archie|spawn|invincible|walking dead|hellboy|tmnt|frew|phantom))",10558            "categorySlug": "independent_comics"10559          }10560        ],10561        "defaultCategory": null,10562        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|t-shirt|apparel|stationery|jewellery|magazine|poster|\\bprint\\b|calendar|supplies|\\bbag\\b|\\bmug\\b|keyring|card stock|toploader|bcw|ultra pro|coin cover|stamp and coin|damaged",10563        "keepOutOfStock": true,10564        "pageSize": 250,10565        "fetchBarcodes": false,10566        "wholeShop": false10567      },10568      "capabilities": [10569        "live_listings",10570        "images",10571        "url_lookup"10572      ],10573      "refreshClass": "normal",10574      "domain": "kingscomics.com",10575      "country": "AU",10576      "requires": [],10577      "acquisitionMethod": "Shopify storefront products.json (public JSON)",10578      "historicalDepth": "none"10579    },10580    {10581      "id": "kuenker",10582      "displayName": "Künker (Osnabrück) — hammer prices from the lot archive",10583      "sourceId": "kuenker",10584      "sourceName": "Fritz Rudolf Künker GmbH & Co. KG",10585      "sourceType": "auction_house",10586      "sourceUrl": "https://www.kuenker.de",10587      "module": "api/kuenker",10588      "enginePriority": [10589        "api",10590        "firecrawl"10591      ],10592      "categories": [10593        "coins",10594        "medals",10595        "banknotes"10596      ],10597      "regions": [10598        "DE",10599        "EU"10600      ],10601      "languages": [10602        "en",10603        "de"10604      ],10605      "currency": [10606        "EUR"10607      ],10608      "supportsListings": false,10609      "supportsSold": true,10610      "supportsAuctions": false,10611      "supportsImages": true,10612      "supportsCatalog": false,10613      "supportsPopulation": false,10614      "supportsLookup": true,10615      "refreshFrequencyMinutes": 1440,10616      "priority": "medium",10617      "trustScore": 0.92,10618      "attributionRequired": true,10619      "termsUrl": "https://www.kuenker.de/auction-terms-and-conditions",10620      "accessNotes": "Plain HTTPS with the RareIndex user agent, 0 credits, no login, no anti-bot (HTTP 200). robots.txt disallows /checkout/, /wishlist/, /account/, /store-api/, /widgets/ and Merkliste paths (and blocks Meta-ExternalAgent entirely); we never call /widgets/ (the JS lot listing) or /store-api/. Discovery: /sitemap.xml → seo/sitemaps/sitemap-products-<n>.xml (29 files × 25 000 lot URLs). Each lot URL is a static Shopware product page read once: h1 (issuer / description), 'Berlin Auction 400 · Lot 663', '1 Feb 2024 Finished', 'Estimated price: €750', 'Hammer price €1,100' (Zuschlag), properties table (Nominal/Year, Mint, Rarity, Weight, Condition incl. PCGS/NGC slab data, Quotes), JSON-LD Product (name, sku, images; its offers.price is always 0 and is ignored). Sales are hammer prices in EUR (buyer_premium_included=false); pages without a hammer price (unsold, withdrawn, running) yield nothing. Sale date = the date printed on the lot page. Cursor walks sitemap file / URL offsets (≈ 100 lots per run, 1.5 s apart); a full backfill is a multi-week campaign bounded by the domain policy. Images are S3 URLs, referenced only.",10621      "enabled": true,10622      "schemaVersion": "1.0",10623      "config": {10624        "lotsPerRun": 10010625      },10626      "capabilities": [10627        "sold_listings",10628        "images",10629        "url_lookup",10630        "historical_backfill"10631      ],10632      "refreshClass": "normal",10633      "domain": "kuenker.de",10634      "country": "DE",10635      "requires": [],10636      "acquisitionMethod": "Static HTML lot pages discovered through product sitemaps",10637      "historicalDepth": "decades"10638    },10639    {10640      "id": "laced",10641      "displayName": "Laced (UK sneaker marketplace — asks per size)",10642      "sourceId": "laced",10643      "sourceName": "Laced",10644      "sourceType": "marketplace",10645      "sourceUrl": "https://www.laced.com",10646      "module": "api/laced",10647      "enginePriority": [10648        "api",10649        "firecrawl"10650      ],10651      "categories": [10652        "sneakers",10653        "nike_jordan",10654        "adidas_yeezy",10655        "new_balance_asics_other"10656      ],10657      "regions": [10658        "GB",10659        "EU"10660      ],10661      "languages": [10662        "en"10663      ],10664      "currency": [10665        "GBP"10666      ],10667      "supportsListings": true,10668      "supportsSold": false,10669      "supportsAuctions": false,10670      "supportsImages": true,10671      "supportsCatalog": true,10672      "supportsPopulation": false,10673      "supportsLookup": true,10674      "refreshFrequencyMinutes": 720,10675      "priority": "medium",10676      "trustScore": 0.75,10677      "attributionRequired": true,10678      "termsUrl": "https://www.laced.com/pages/terms-and-conditions",10679      "accessNotes": "Public brand pages (laced.com/<brand>) list product slugs; each product page embeds a schema.org ProductGroup with the style code (sku), brand and one Product per size carrying the current lowest ask in GBP. Plain HTTPS with the RareIndex user agent; robots.txt allows everything except account/admin. New-condition marketplace (deadstock). 1.5 s between pages; productsPerSeed caps product-page fetches per run.",10680      "enabled": true,10681      "schemaVersion": "1.0",10682      "config": {10683        "seeds": [10684          "air-jordan",10685          "nike",10686          "adidas",10687          "yeezy",10688          "new-balance",10689          "asics"10690        ],10691        "productsPerSeed": 2410692      },10693      "capabilities": [10694        "live_listings",10695        "images",10696        "catalog",10697        "url_lookup"10698      ],10699      "refreshClass": "normal",10700      "domain": "laced.com",10701      "country": "GB",10702      "requires": [],10703      "historicalDepth": "none"10704    },10705    {10706      "id": "lama",10707      "displayName": "Los Angeles Modern Auctions (results)",10708      "sourceId": "lama",10709      "sourceName": "Los Angeles Modern Auctions",10710      "sourceType": "auction_house",10711      "sourceUrl": "https://www.lamodern.com",10712      "module": "api/lama",10713      "enginePriority": [10714        "api"10715      ],10716      "categories": [10717        "design_furniture",10718        "art",10719        "contemporary_art",10720        "photography",10721        "glass_crystal",10722        "porcelain",10723        "jewelry",10724        "other_watches",10725        "antiques",10726        "movie_posters"10727      ],10728      "regions": [10729        "US"10730      ],10731      "languages": [10732        "en"10733      ],10734      "currency": [10735        "USD"10736      ],10737      "supportsListings": false,10738      "supportsSold": true,10739      "supportsAuctions": true,10740      "supportsImages": true,10741      "supportsCatalog": false,10742      "supportsPopulation": false,10743      "supportsLookup": false,10744      "refreshFrequencyMinutes": 1440,10745      "priority": "medium",10746      "trustScore": 0.9,10747      "attributionRequired": true,10748      "termsUrl": "https://www.lamodern.com/buying/terms-of-sale/",10749      "accessNotes": "Same Rago/Wright platform and robots policy as wright20.com: Crawl-delay 10 honoured, Disallow /items/item/*, /auctions/view/*, /auctions/bid/*, /search/*, /catalogs/popup*, /*?cms=* never requested. We read only /sitemap-index.xml (215 session sitemaps back to 2007; child files not fetched), the session page /auctions/<yyyy>/<mm>/<slug> (Inertia data-page JSON with every lot: artist, title, lot number, estimate, price realized, bid count, image) and, for closed sales, /auctions/<yyyy>/<mm>/<slug>/info for the close time and the show_results_with_premium flag (→ buyerPremiumIncluded). Lot detail pages are never fetched. Prices in USD; sale date = ended_at (fallback: auction date). 0 credits.",10750      "enabled": true,10751      "schemaVersion": "1.0",10752      "config": {10753        "sessionsPerRun": 2,10754        "fetchInfoPage": true10755      },10756      "capabilities": [10757        "sold_listings",10758        "auction_results",10759        "images",10760        "historical_backfill"10761      ],10762      "refreshClass": "normal",10763      "domain": "lamodern.com",10764      "country": "US",10765      "requires": [],10766      "acquisitionMethod": "embedded Inertia JSON (data-page) on public session pages",10767      "historicalDepth": "decades"10768    },10769    {10770      "id": "lego-shop",10771      "displayName": "LEGO.com Shop (official retail price & availability)",10772      "sourceId": "lego-shop",10773      "sourceName": "LEGO Shop (official)",10774      "sourceType": "manufacturer",10775      "sourceUrl": "https://www.lego.com",10776      "module": "firecrawl/lego-shop",10777      "enginePriority": [10778        "firecrawl",10779        "scrapfly"10780      ],10781      "categories": [10782        "lego_sets",10783        "lego"10784      ],10785      "regions": [10786        "US"10787      ],10788      "languages": [10789        "en"10790      ],10791      "currency": [10792        "USD"10793      ],10794      "supportsListings": true,10795      "supportsSold": false,10796      "supportsAuctions": false,10797      "supportsImages": true,10798      "supportsCatalog": true,10799      "supportsPopulation": false,10800      "supportsLookup": true,10801      "refreshFrequencyMinutes": 1440,10802      "priority": "medium",10803      "trustScore": 0.95,10804      "attributionRequired": true,10805      "termsUrl": "https://www.lego.com/en-us/legal/notices-and-policies/terms-of-use",10806      "accessNotes": "Official manufacturer store. Public theme pages (lego.com/en-us/themes/<theme>?page=N) and product pages are rendered client-side and return 403 to plain non-browser clients, so they are fetched with Firecrawl (1 credit per page; ~22 products per theme page). Parsed per product leaf: set number (from the product URL), name, US retail price, badges (New / Retiring soon / Coming Soon / Exclusive / Hard to find / Sold out), image; product pages add availability, age and piece count. Emits catalog items (MSRP USD, identifiers.lego_set_number shared with PriceCharting/Brickset/BrickEconomy) and the official-store fixed-price listing. robots.txt only disallows account/checkout/identity paths.",10807      "enabled": true,10808      "schemaVersion": "1.0",10809      "config": {10810        "themes": [10811          "star-wars",10812          "icons",10813          "technic",10814          "ideas",10815          "harry-potter",10816          "marvel",10817          "architecture",10818          "ninjago",10819          "creator-expert",10820          "botanical-collection"10821        ],10822        "pagesPerTheme": 110823      },10824      "capabilities": [10825        "live_listings",10826        "images",10827        "catalog",10828        "url_lookup"10829      ],10830      "refreshClass": "normal",10831      "domain": "lego.com",10832      "country": "US",10833      "requires": [],10834      "historicalDepth": "none"10835    },10836    {10837      "id": "lelands",10838      "displayName": "Lelands (auction results)",10839      "sourceId": "lelands",10840      "sourceName": "Lelands",10841      "sourceType": "auction_house",10842      "sourceUrl": "https://auction.lelands.com",10843      "module": "firecrawl/lelands",10844      "enginePriority": [10845        "firecrawl"10846      ],10847      "categories": [10848        "sports_memorabilia",10849        "baseball_cards",10850        "basketball_cards",10851        "football_cards",10852        "hockey_cards",10853        "soccer_cards",10854        "other_sports_cards",10855        "olympic_collectibles"10856      ],10857      "regions": [10858        "US"10859      ],10860      "languages": [10861        "en"10862      ],10863      "currency": [10864        "USD"10865      ],10866      "supportsListings": false,10867      "supportsSold": true,10868      "supportsAuctions": false,10869      "supportsImages": true,10870      "supportsCatalog": false,10871      "supportsPopulation": false,10872      "supportsLookup": false,10873      "refreshFrequencyMinutes": 1440,10874      "priority": "medium",10875      "trustScore": 0.9,10876      "attributionRequired": true,10877      "termsUrl": "https://lelands.com/terms",10878      "accessNotes": "The public gallery auction.lelands.com/Lots/Gallery?size=250&page=N lists the currently displayed auction's lots with title, bids, opening bid, status and 'SOLD FOR $X'; the sidebar gives the auction start/end and states 'Prices Shown Include Buyer's Premium' → buyer_premium_included=true, sale date = auction end (records are emitted only once the end has passed). Direct HTTP requests receive a Cloudflare 403 (robots.txt itself allows 'User-agent: *'), so pages are rendered through Firecrawl at 1 credit per 250 lots — a browser render of the public page, no login, no bidding, no challenge solving. Past auctions sit behind a form postback and are not fetched; each auction is captured while it is the displayed one. 2.5 s politeness, ≤5 pages per run.",10879      "enabled": true,10880      "schemaVersion": "1.0",10881      "config": {10882        "pagesPerRun": 510883      },10884      "capabilities": [10885        "sold_listings",10886        "images"10887      ],10888      "refreshClass": "normal",10889      "domain": "auction.lelands.com",10890      "country": "US",10891      "requires": [],10892      "historicalDepth": "none"10893    },10894    {10895      "id": "lempertz",10896      "displayName": "Lempertz (auction results)",10897      "sourceId": "lempertz",10898      "sourceName": "Kunsthaus Lempertz",10899      "sourceType": "auction_house",10900      "sourceUrl": "https://www.lempertz.com",10901      "module": "api/lempertz",10902      "enginePriority": [10903        "api"10904      ],10905      "categories": [10906        "art",10907        "contemporary_art",10908        "photography",10909        "design_furniture",10910        "antiques",10911        "porcelain",10912        "silver",10913        "glass_crystal",10914        "jewelry",10915        "other_watches",10916        "rolex",10917        "patek_philippe",10918        "books",10919        "maps",10920        "antiques",10921        "clocks"10922      ],10923      "regions": [10924        "DE",10925        "BE"10926      ],10927      "languages": [10928        "de",10929        "en"10930      ],10931      "currency": [10932        "EUR"10933      ],10934      "supportsListings": false,10935      "supportsSold": true,10936      "supportsAuctions": true,10937      "supportsImages": false,10938      "supportsCatalog": false,10939      "supportsPopulation": false,10940      "supportsLookup": false,10941      "refreshFrequencyMinutes": 1440,10942      "priority": "medium",10943      "trustScore": 0.9,10944      "attributionRequired": true,10945      "termsUrl": "https://www.lempertz.com/de/kaufbedingungen.html",10946      "accessNotes": "Kunsthaus Lempertz (Köln, Berlin, Brussels; founded 1845). Public results index https://www.lempertz.com/de/auktionen/ergebnisse.html lists ~300 past auctions (number, title, 'DD.MM.YYYY HH:MM, City'). Each result page /de/auktionen/ergebnisse/detail/<sale>.html carries catalogue_uid; the page's own Vue widget loads the lot table from the unauthenticated JSON endpoint POST https://www.lempertz.com/de/?endpoint=catalogue {catalogue_uid, catalogue_type:'resultList'} (X-Requested-With) which returns every lot (number, title, subtitle, description, estimate range, hammerprice, state, public lot link). We call exactly those two URLs per sale, 2 s apart. Lempertz states 'Alle Ergebnisse beinhalten den Zuschlagspreis und das Aufgeld' → prices are premium-inclusive (buyer_premium_included=true, EUR). hammerprice 0 = unsold → auction_lot (ended). robots.txt disallows only /typo3/; Kaufbedingungen contain no clause on automated access. No images are collected (lot pages would need one request each). No login, no bidder data.",10947      "enabled": true,10948      "schemaVersion": "1.0",10949      "config": {10950        "resultsUrl": "https://www.lempertz.com/de/auktionen/ergebnisse.html",10951        "salesPerRun": 210952      },10953      "capabilities": [10954        "sold_listings",10955        "auction_results",10956        "historical_backfill"10957      ],10958      "refreshClass": "normal",10959      "domain": "lempertz.com",10960      "country": "DE",10961      "requires": [],10962      "acquisitionMethod": "site JSON endpoint (POST /de/?endpoint=catalogue) + results index HTML",10963      "historicalDepth": "decades"10964    },10965    {10966      "id": "leonard-joel",10967      "displayName": "Leonard Joel (Australia) — results",10968      "sourceId": "leonard-joel",10969      "sourceName": "Leonard Joel",10970      "sourceType": "auction_house",10971      "sourceUrl": "https://auctions.leonardjoel.com.au",10972      "module": "api/leonard-joel",10973      "enginePriority": [10974        "api"10975      ],10976      "categories": [10977        "jewelry",10978        "gemstones",10979        "other_watches",10980        "rolex",10981        "omega",10982        "patek_philippe",10983        "luxury_handbags",10984        "fashion_streetwear",10985        "art",10986        "contemporary_art",10987        "photography",10988        "design_furniture",10989        "antiques",10990        "porcelain",10991        "silver",10992        "glass_crystal",10993        "books",10994        "maps",10995        "wine",10996        "whisky",10997        "coins",10998        "stamps",10999        "vintage_toys",11000        "sports_memorabilia",11001        "music_memorabilia",11002        "cameras"11003      ],11004      "regions": [11005        "AU"11006      ],11007      "languages": [11008        "en"11009      ],11010      "currency": [11011        "AUD"11012      ],11013      "supportsListings": false,11014      "supportsSold": true,11015      "supportsAuctions": true,11016      "supportsImages": true,11017      "supportsCatalog": false,11018      "supportsPopulation": false,11019      "supportsLookup": false,11020      "refreshFrequencyMinutes": 1440,11021      "priority": "medium",11022      "trustScore": 0.88,11023      "attributionRequired": true,11024      "termsUrl": "https://www.leonardjoel.com.au/conditions-of-business/",11025      "accessNotes": "Leonard Joel (Melbourne, Sydney, Brisbane; Australia's largest independent auction house — jewels, watches, luxury, art, design, decorative arts, wine). Public pages read on auctions.leonardjoel.com.au: /auction-results (past sales: sale number, title, 'Monday 7 Sep 2026, 10:00am', venue) and /custom_asp/searchresults.asp?type=result&st=D&pg=N&ps=100&sale_no=<id> (100 lots per page: lot number, title, thumbnail, 'Estimate: $4,600 - 5,500', 'Sold for $8,500'; unsold lots carry no price). Prices are AUD and labelled 'Sold for' only — hammer vs premium is not stated on the page, so buyer_premium_included is null. Lot URLs keep the literal '+' padding of the salelot parameter (URL-encoding it breaks the page). robots.txt Allow / (blocks only SEO/AI-training bots); conditions of business contain no clause on automated access. 2.5 s politeness; salesPerRun caps incremental runs; resumable backfill over the results list. No login, no bidder data.",11026      "enabled": true,11027      "schemaVersion": "1.0",11028      "config": {11029        "resultsUrl": "https://auctions.leonardjoel.com.au/auction-results",11030        "salesPerRun": 211031      },11032      "capabilities": [11033        "sold_listings",11034        "auction_results",11035        "images",11036        "historical_backfill"11037      ],11038      "refreshClass": "normal",11039      "domain": "auctions.leonardjoel.com.au",11040      "country": "AU",11041      "requires": [],11042      "acquisitionMethod": "server-rendered HTML (classic ASP catalogue)",11043      "historicalDepth": "years"11044    },11045    {11046      "id": "limitless-tcg",11047      "displayName": "Limitless TCG (Pokémon card database)",11048      "sourceId": "limitless-tcg",11049      "sourceName": "Limitless TCG",11050      "sourceType": "collector_database",11051      "sourceUrl": "https://limitlesstcg.com/cards",11052      "module": "api/limitless-tcg",11053      "enginePriority": [11054        "api"11055      ],11056      "categories": [11057        "pokemon"11058      ],11059      "regions": [11060        "EU",11061        "US",11062        "JP"11063      ],11064      "languages": [11065        "en",11066        "ja"11067      ],11068      "currency": [11069        "USD",11070        "EUR"11071      ],11072      "supportsListings": false,11073      "supportsSold": false,11074      "supportsAuctions": false,11075      "supportsImages": true,11076      "supportsCatalog": true,11077      "supportsPopulation": false,11078      "supportsLookup": true,11079      "refreshFrequencyMinutes": 1440,11080      "priority": "medium",11081      "trustScore": 0.7,11082      "attributionRequired": true,11083      "termsUrl": "https://limitlesstcg.com/about",11084      "accessNotes": "Public, login-free card database. robots.txt is fully permissive (User-agent: * / Disallow: empty). Incremental runs read the set indexes https://limitlesstcg.com/cards (English, 150+ sets with release date and card count) and /cards/jp (Japanese, 260+ sets), then one list page per set (/cards/<CODE>?display=list, /cards/jp/<CODE>?display=list) whose table gives number, name, type, rarity, card image and — for English sets — the current TCGplayer (USD) and Cardmarket (EUR) prices that Limitless relays; Japanese sets carry no prices. Those relayed prices are stored as price_observations with metadata.provider = tcgplayer|cardmarket, confidence 0.6, dated by the fetch day (the page shows a live snapshot without its own timestamp). Backfill mode additionally opens card pages (/cards/<CODE>/<no>) to read the numeric cardId and calls /api/cards/<cardId>/prices — the exact XHR the public page performs for its price chart — which returns dated daily history ([epoch ms, cents]) per provider; bounded by config.historyCardsPerRun. No decklists, tournaments, player or account data are fetched. ~1 request / 1.5 s, 1 concurrent. There is no documented public API (probed /api/cards → 404); the sister databases for One Piece/Lorcana/Riftbound were not reachable (500 / DNS) at research time and are not crawled.",11085      "enabled": true,11086      "schemaVersion": "1.0",11087      "config": {11088        "languages": [11089          "en",11090          "jp"11091        ],11092        "maxSetsPerRun": 0,11093        "historyCardsPerRun": 60,11094        "historySetsNewestFirst": 611095      },11096      "capabilities": [11097        "catalog",11098        "price_guide",11099        "historical_backfill",11100        "url_lookup",11101        "images"11102      ],11103      "refreshClass": "normal",11104      "domain": "limitlesstcg.com",11105      "country": "DE",11106      "requires": [],11107      "acquisitionMethod": "public HTML set tables (?display=list) + the page's own /api/cards/<id>/prices history JSON",11108      "historicalDepth": "years"11109    },11110    {11111      "id": "livestock",11112      "displayName": "Livestock (Canadian sneaker store, CAD)",11113      "sourceId": "livestock",11114      "sourceName": "Livestock",11115      "sourceType": "dealer",11116      "sourceUrl": "https://www.deadstock.ca",11117      "module": "api/livestock",11118      "enginePriority": [11119        "api"11120      ],11121      "categories": [11122        "sneakers",11123        "adidas_yeezy",11124        "nike_jordan",11125        "new_balance_asics_other"11126      ],11127      "regions": [11128        "CA"11129      ],11130      "languages": [11131        "en"11132      ],11133      "currency": [11134        "CAD"11135      ],11136      "supportsListings": true,11137      "supportsSold": false,11138      "supportsAuctions": false,11139      "supportsImages": true,11140      "supportsCatalog": false,11141      "supportsPopulation": false,11142      "supportsLookup": true,11143      "refreshFrequencyMinutes": 1440,11144      "priority": "low",11145      "trustScore": 0.75,11146      "attributionRequired": true,11147      "termsUrl": "https://www.deadstock.ca/policies/terms-of-service",11148      "accessNotes": "Livestock (deadstock.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 5 configured collections (footwear, footwear-adidas, footwear-jordan, footwear-asics, footwear-converse) and /products/<handle>.json for URL lookups (~450 footwear SKUs (adidas Originals, ASICS, Jordan, Converse)). 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 — apparel, accessories (G-Shock, headwear, bags), lifestyle/home goods; non-sneaker footwear is dropped by the exclude regex (sandals, Birkenstock, boots). No personal data is collected; seller = the store itself.",11149      "enabled": true,11150      "schemaVersion": "1.0",11151      "config": {11152        "currency": "CAD",11153        "market": "CA",11154        "seller": "Livestock",11155        "location": "Vancouver / Toronto, Canada",11156        "collections": [11157          {11158            "handle": "footwear",11159            "categorySlug": "sneakers"11160          },11161          {11162            "handle": "footwear-adidas",11163            "categorySlug": "adidas_yeezy",11164            "brand": "adidas"11165          },11166          {11167            "handle": "footwear-jordan",11168            "categorySlug": "nike_jordan",11169            "brand": "Jordan"11170          },11171          {11172            "handle": "footwear-asics",11173            "categorySlug": "new_balance_asics_other",11174            "brand": "ASICS"11175          },11176          {11177            "handle": "footwear-converse",11178            "categorySlug": "new_balance_asics_other",11179            "brand": "Converse"11180          }11181        ],11182        "rules": [11183          {11184            "match": "\\b(air )?jordan\\b|\\bnike\\b",11185            "categorySlug": "nike_jordan"11186          },11187          {11188            "match": "\\badidas\\b|\\byeezy\\b",11189            "categorySlug": "adidas_yeezy"11190          },11191          {11192            "match": "new balance|\\basics\\b|\\bsalomon\\b|\\bhoka\\b|\\bpuma\\b|\\breebok\\b|\\bsaucony\\b|\\bconverse\\b|\\bvans\\b|\\bon running\\b|\\bmizuno\\b",11193            "categorySlug": "new_balance_asics_other"11194          }11195        ],11196        "defaultCategory": null,11197        "exclude": "gift card|^[^|]*\\|(?![^|]*Footwear \\|)[^|]*\\||birkenstock|\\bsandals?\\b|\\bslides?\\b|\\bclogs?\\b|\\bmules?\\b|\\bloafers?\\b|\\bboots?\\b|\\bugg\\b|\\bcrocs\\b|\\bsocks?\\b|\\blaces\\b|insoles?|cleaner|shoe trees?",11198        "keepOutOfStock": true,11199        "fetchBarcodes": false,11200        "wholeShop": false,11201        "pageSize": 25011202      },11203      "capabilities": [11204        "live_listings",11205        "images",11206        "url_lookup"11207      ],11208      "refreshClass": "normal",11209      "domain": "deadstock.ca",11210      "country": "CA",11211      "requires": [],11212      "acquisitionMethod": "Shopify storefront products.json",11213      "historicalDepth": "none"11214    },11215    {11216      "id": "lorcast",11217      "displayName": "Lorcast (Disney Lorcana)",11218      "sourceId": "lorcast",11219      "sourceName": "Lorcast",11220      "sourceType": "catalog",11221      "sourceUrl": "https://lorcast.com",11222      "module": "api/lorcast",11223      "enginePriority": [11224        "api"11225      ],11226      "categories": [11227        "disney_lorcana"11228      ],11229      "regions": [11230        "US",11231        "EU"11232      ],11233      "languages": [11234        "en"11235      ],11236      "currency": [11237        "USD"11238      ],11239      "supportsListings": false,11240      "supportsSold": false,11241      "supportsAuctions": false,11242      "supportsImages": true,11243      "supportsCatalog": true,11244      "supportsPopulation": false,11245      "supportsLookup": false,11246      "refreshFrequencyMinutes": 1440,11247      "priority": "medium",11248      "trustScore": 0.75,11249      "attributionRequired": true,11250      "termsUrl": "https://lorcast.com/docs/api",11251      "accessNotes": "Open Lorcast REST API (v0, no key): /sets then /cards/search?q=set:<code>&page=N. Cards carry TCGplayer ids and USD market prices (normal / foil) without a timestamp, so observations are dated by the fetch day with confidence 0.7. Enchanted cards are emitted as a single 'Enchanted' variant. ~4 req/s self-throttled.",11252      "enabled": true,11253      "schemaVersion": "1.0",11254      "config": {},11255      "capabilities": [11256        "images",11257        "catalog"11258      ],11259      "refreshClass": "normal",11260      "domain": "lorcast.com",11261      "country": "US",11262      "requires": [],11263      "historicalDepth": "none"11264    },11265    {11266      "id": "loupe-this",11267      "displayName": "Loupe This (watch auctions — results + live lots)",11268      "sourceId": "loupe-this",11269      "sourceName": "Loupe This",11270      "sourceType": "auction_house",11271      "sourceUrl": "https://loupethis.com",11272      "module": "api/loupe-this",11273      "enginePriority": [11274        "api"11275      ],11276      "categories": [11277        "watches",11278        "rolex",11279        "patek_philippe",11280        "audemars_piguet",11281        "omega",11282        "other_watches"11283      ],11284      "regions": [11285        "US",11286        "global"11287      ],11288      "languages": [11289        "en"11290      ],11291      "currency": [11292        "USD"11293      ],11294      "supportsListings": false,11295      "supportsSold": true,11296      "supportsAuctions": true,11297      "supportsImages": true,11298      "supportsCatalog": false,11299      "supportsPopulation": false,11300      "supportsLookup": true,11301      "refreshFrequencyMinutes": 60,11302      "priority": "high",11303      "trustScore": 0.9,11304      "attributionRequired": true,11305      "termsUrl": "https://loupethis.com/terms",11306      "accessNotes": "Reads the public, unauthenticated JSON:API that loupethis.com itself loads: `GET api.loupethis.com/api/v1/auctions?status=closed|live&per_page=100&page=N&include=brand` (title, lot, start/end, bids count, current bid, sold price, buyer's premium %, reserve-met flag, brand, image) and `GET /api/v1/auctions/<slug>` for URL lookup. robots.txt on both hosts allows everything (verified 2026-09-08). Closed lots are emitted as sales only when `sold_price_cents` is set; that figure is the winning bid plus the 10 % buyer's premium (`buyerPremiumIncluded: true`, hammer kept in `metadata.hammer_price`). Live/upcoming lots are auction_lot records with the current bid — never sales. Bidder/user ids, comments and the bid history included in single-auction responses are ignored; no login, no bidding endpoints. ~4 250 closed lots since 2021 (43 pages) — the backfill walks `status=closed` pages with progress. 1.5 s between requests, concurrency 1.",11307      "enabled": true,11308      "schemaVersion": "1.0",11309      "config": {11310        "livePages": 2,11311        "closedPages": 211312      },11313      "capabilities": [11314        "sold_listings",11315        "auction_results",11316        "images",11317        "url_lookup",11318        "historical_backfill"11319      ],11320      "refreshClass": "active",11321      "domain": "loupethis.com",11322      "country": "US",11323      "requires": [],11324      "acquisitionMethod": "public JSON:API used by the site (api.loupethis.com), direct HTTP",11325      "historicalDepth": "years"11326    },11327    {11328      "id": "lukie-games",11329      "displayName": "Lukie Games (retro video-game dealer, USD)",11330      "sourceId": "lukie-games",11331      "sourceName": "Lukie Games",11332      "sourceType": "dealer",11333      "sourceUrl": "https://www.lukiegames.com",11334      "module": "api/lukie-games",11335      "enginePriority": [11336        "api"11337      ],11338      "categories": [11339        "nintendo_games",11340        "playstation_games",11341        "xbox_games",11342        "sega_games",11343        "atari_retro_games"11344      ],11345      "regions": [11346        "US"11347      ],11348      "languages": [11349        "en"11350      ],11351      "currency": [11352        "USD"11353      ],11354      "supportsListings": true,11355      "supportsSold": false,11356      "supportsAuctions": false,11357      "supportsImages": true,11358      "supportsCatalog": false,11359      "supportsPopulation": false,11360      "supportsLookup": false,11361      "refreshFrequencyMinutes": 1440,11362      "priority": "low",11363      "trustScore": 0.75,11364      "attributionRequired": true,11365      "termsUrl": "https://www.lukiegames.com/terms.html",11366      "accessNotes": "Lukie's category pages render products through SearchSpring; the connector calls the same public JSON feed the storefront uses (dytuzo.a.searchspring.io/api/search/search.json, filtered by platform via bgfilter.extrafield5, 100 results/page, sorted by price desc). No login or key; 1.5 s between requests. Only games are kept (systems/accessories filtered by name and SKU); completeness defaults to 'loose' unless the product name says complete/sealed, and the platform is mapped to the PriceCharting console vocabulary (attributes.set) so the dealer asks attach to the same assets as PriceCharting sales. Prices are Lukie asking prices (USD), never transactions.",11367      "enabled": true,11368      "schemaVersion": "1.0",11369      "config": {11370        "perPage": 100,11371        "pagesPerPlatform": 2,11372        "backfillPages": 10,11373        "platforms": [11374          "Nintendo 64",11375          "Super Nintendo",11376          "Nintendo NES",11377          "Gamecube",11378          "Gameboy",11379          "Gameboy Color",11380          "Gameboy Advance",11381          "Nintendo DS",11382          "Playstation",11383          "Playstation 2",11384          "Playstation 3",11385          "PSP",11386          "Xbox",11387          "Xbox 360",11388          "Sega Genesis",11389          "Sega Dreamcast",11390          "Sega Saturn",11391          "Sega Game Gear",11392          "Atari 2600",11393          "Nintendo Wii"11394        ]11395      },11396      "capabilities": [11397        "live_listings",11398        "images"11399      ],11400      "refreshClass": "normal",11401      "domain": "lukiegames.com",11402      "country": "US",11403      "requires": [],11404      "historicalDepth": "none"11405    },11406    {11407      "id": "lyon-turnbull",11408      "displayName": "Lyon & Turnbull (auction results)",11409      "sourceId": "lyon-turnbull",11410      "sourceName": "Lyon & Turnbull",11411      "sourceType": "auction_house",11412      "sourceUrl": "https://www.lyonandturnbull.com",11413      "module": "api/lyon-turnbull",11414      "enginePriority": [11415        "api",11416        "firecrawl",11417        "scrapfly"11418      ],11419      "categories": [11420        "art",11421        "contemporary_art",11422        "photography",11423        "design_furniture",11424        "antiques",11425        "jewelry",11426        "silver",11427        "watches",11428        "other_watches",11429        "books",11430        "whisky",11431        "porcelain",11432        "glass_crystal",11433        "clocks",11434        "scientific_instruments"11435      ],11436      "regions": [11437        "GB"11438      ],11439      "languages": [11440        "en"11441      ],11442      "currency": [11443        "GBP"11444      ],11445      "supportsListings": false,11446      "supportsSold": true,11447      "supportsAuctions": true,11448      "supportsImages": true,11449      "supportsCatalog": false,11450      "supportsPopulation": false,11451      "supportsLookup": false,11452      "refreshFrequencyMinutes": 1440,11453      "priority": "medium",11454      "trustScore": 0.9,11455      "attributionRequired": true,11456      "termsUrl": "https://www.lyonandturnbull.com/auctions/buy-sell/buy",11457      "accessNotes": "Edinburgh/London/Glasgow auction house. Past auctions are listed in the public /auctions/past-auctions page (Next.js __NEXT_DATA__: title, sale number, date, link); each auction page embeds the full lot list as JSON (lot number, title, sub-title, estimate, hammer_price, status sold/unsold, images, buyer's premium tiers). Plain HTTPS with the RareIndex user agent; robots.txt disallows only /account, /auth, /search and collection_* paths. We store the HAMMER price (buyer_premium_included=false) and record the published premium tiers in metadata; sale date = auction session date. No login, no bidder data. 2 s politeness delay.",11458      "enabled": true,11459      "schemaVersion": "1.0",11460      "config": {11461        "pastAuctionsUrl": "https://www.lyonandturnbull.com/auctions/past-auctions",11462        "auctionsPerRun": 311463      },11464      "capabilities": [11465        "sold_listings",11466        "auction_results",11467        "images"11468      ],11469      "refreshClass": "normal",11470      "domain": "lyonandturnbull.com",11471      "country": "GB",11472      "requires": [],11473      "historicalDepth": "none"11474    },11475    {11476      "id": "ma-shops",11477      "displayName": "MA-Shops (European coin, banknote & militaria dealer network)",11478      "sourceId": "ma-shops",11479      "sourceName": "MA-Shops",11480      "sourceType": "marketplace",11481      "sourceUrl": "https://www.ma-shops.com",11482      "module": "api/ma-shops",11483      "enginePriority": [11484        "api",11485        "firecrawl"11486      ],11487      "categories": [11488        "coins",11489        "banknotes",11490        "medals",11491        "militaria"11492      ],11493      "regions": [11494        "DE",11495        "EU"11496      ],11497      "languages": [11498        "en",11499        "de"11500      ],11501      "currency": [11502        "EUR",11503        "USD",11504        "CAD"11505      ],11506      "supportsListings": true,11507      "supportsSold": false,11508      "supportsAuctions": false,11509      "supportsImages": true,11510      "supportsCatalog": false,11511      "supportsPopulation": false,11512      "supportsLookup": false,11513      "refreshFrequencyMinutes": 1440,11514      "priority": "low",11515      "trustScore": 0.75,11516      "attributionRequired": true,11517      "termsUrl": "https://www.ma-shops.com/shops/help.php?id=1",11518      "accessNotes": "Public search gallery pages (ma-shops.com/search.php?keywords=…, 45 items per page; category landing pages only show a handful of featured items) fetched over plain HTTPS with the RareIndex user agent; robots.txt is fully permissive. Each gallery cell gives the dealer's item URL, title, price with the displayed currency (the site picks a currency per visitor — CAN$, US$ or EUR — which is parsed and stored as-is), the dealer name and the primary image. Emits dealer asks (fixed-price listings). Militaria items carry the taxonomy compliance flags (jurisdiction_check, restricted_symbols_review) and are presented neutrally.",11519      "enabled": true,11520      "schemaVersion": "1.0",11521      "config": {11522        "seeds": [11523          {11524            "path": "/search.php?keywords=denarius",11525            "categorySlug": "coins",11526            "label": "Roman denarius"11527          },11528          {11529            "path": "/search.php?keywords=thaler",11530            "categorySlug": "coins",11531            "label": "Thaler"11532          },11533          {11534            "path": "/search.php?keywords=tetradrachm",11535            "categorySlug": "coins",11536            "label": "Greek tetradrachm"11537          },11538          {11539            "path": "/search.php?keywords=20+mark+gold",11540            "categorySlug": "coins",11541            "label": "German 20 Mark gold"11542          },11543          {11544            "path": "/search.php?keywords=sovereign",11545            "categorySlug": "coins",11546            "label": "Sovereign"11547          },11548          {11549            "path": "/search.php?keywords=banknote",11550            "categorySlug": "banknotes",11551            "label": "Banknotes"11552          },11553          {11554            "path": "/search.php?keywords=medaille",11555            "categorySlug": "medals",11556            "label": "Medals"11557          }11558        ],11559        "pagesPerSeed": 111560      },11561      "capabilities": [11562        "live_listings",11563        "images"11564      ],11565      "refreshClass": "normal",11566      "domain": "ma-shops.com",11567      "country": "DE",11568      "requires": [],11569      "historicalDepth": "none"11570    },11571    {11572      "id": "magi",11573      "displayName": "magi (Japanese card marketplace)",11574      "sourceId": "magi",11575      "sourceName": "magi",11576      "sourceType": "marketplace",11577      "sourceUrl": "https://magi.camp",11578      "module": "api/magi",11579      "enginePriority": [11580        "api"11581      ],11582      "categories": [11583        "pokemon",11584        "yugioh",11585        "magic_the_gathering",11586        "one_piece_card_game",11587        "other_tcg"11588      ],11589      "regions": [11590        "JP"11591      ],11592      "languages": [11593        "ja"11594      ],11595      "currency": [11596        "JPY"11597      ],11598      "supportsListings": true,11599      "supportsSold": false,11600      "supportsAuctions": false,11601      "supportsImages": true,11602      "supportsCatalog": false,11603      "supportsPopulation": false,11604      "supportsLookup": true,11605      "refreshFrequencyMinutes": 720,11606      "priority": "medium",11607      "trustScore": 0.65,11608      "attributionRequired": true,11609      "termsUrl": "https://magi.camp/terms/use",11610      "accessNotes": "magi is a Japanese C2C/B2C marketplace for trading cards (PSA-graded singles, sealed boxes). Public, login-free browse pages per game series — https://magi.camp/series/<id>/items?page=<n> (31 Pokémon, 34 Yu-Gi-Oh!, 32 Magic, 20 Duel Masters, 100148 One Piece; 96 items per page) — list each item's title, JPY price (tax incl.) and a SOLD marker for items that already sold. Item pages (/items/<id>) expose a schema.org Product JSON-LD (name, description, image, offers.price JPY, availability InStock/OutOfStock) and are used only for URL lookups. robots.txt: `User-Agent: * Disallow:` (everything allowed) except that /items/search and /products/search are disallowed for named AI crawlers because the faceted search is expensive for them — we therefore never call the search endpoints at all and only paginate the series browse pages, ≥ 4 s apart, 1 concurrent, honest UA. Prices are asking prices → listings (availability 'sold' when the SOLD marker is present; magi shows no sale date, so sold items are NOT emitted as sales). Seller usernames are personal data of private sellers and are never stored; only the 'certified seller' badge is kept as a boolean. Mystery packs (オリパ), grab bags (福袋), lots and supplies are skipped; multi-card listings (N枚 > 1) are flagged isBundle via quantity.",11611      "enabled": true,11612      "schemaVersion": "1.0",11613      "config": {11614        "seeds": [11615          {11616            "series": "31",11617            "categorySlug": "pokemon",11618            "name": "ポケモンカードゲーム",11619            "franchise": "Pokémon"11620          },11621          {11622            "series": "34",11623            "categorySlug": "yugioh",11624            "name": "遊戯王",11625            "franchise": "Yu-Gi-Oh!"11626          },11627          {11628            "series": "32",11629            "categorySlug": "magic_the_gathering",11630            "name": "マジック:ザ・ギャザリング",11631            "franchise": "Magic: The Gathering"11632          },11633          {11634            "series": "100148",11635            "categorySlug": "one_piece_card_game",11636            "name": "ワンピースカード",11637            "franchise": "One Piece"11638          },11639          {11640            "series": "20",11641            "categorySlug": "other_tcg",11642            "name": "デュエル・マスターズ",11643            "franchise": "Duel Masters"11644          }11645        ],11646        "pagesPerSeed": 311647      },11648      "capabilities": [11649        "live_listings",11650        "url_lookup",11651        "images"11652      ],11653      "refreshClass": "normal",11654      "domain": "magi.camp",11655      "country": "JP",11656      "requires": [],11657      "acquisitionMethod": "public series browse pages (server-rendered HTML) + JSON-LD Product on item pages",11658      "historicalDepth": "none"11659    },11660    {11661      "id": "martian-toys",11662      "displayName": "Martian Toys (US collector-toy store, USD)",11663      "sourceId": "martian-toys",11664      "sourceName": "Martian Toys",11665      "sourceType": "dealer",11666      "sourceUrl": "https://martiantoys.com",11667      "module": "api/martian-toys",11668      "enginePriority": [11669        "api"11670      ],11671      "categories": [11672        "designer_toys"11673      ],11674      "regions": [11675        "US"11676      ],11677      "languages": [11678        "en"11679      ],11680      "currency": [11681        "USD"11682      ],11683      "supportsListings": true,11684      "supportsSold": false,11685      "supportsAuctions": false,11686      "supportsImages": true,11687      "supportsCatalog": false,11688      "supportsPopulation": false,11689      "supportsLookup": true,11690      "refreshFrequencyMinutes": 720,11691      "priority": "medium",11692      "trustScore": 0.75,11693      "attributionRequired": true,11694      "termsUrl": "https://martiantoys.com/policies/terms-of-service",11695      "accessNotes": "Martian Toys (martiantoys.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 13 configured collections (designer-toys, designer-vinyl, blind-boxes, customs, urban-toys, martian-exclusives, all-martian-toys, pop-mart … (+5 more, see config.collections)) and /products/<handle>.json for URL lookups (~7k products; 720 designer toys, 350 customs, 150 blind boxes, Pop Mart/Superplastic/tokidoki). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — merch/shirts/prints/stickers/pins, event umbrella collections (NYCC, DCon…), \"the vault\"/\"all\" umbrella collections. No personal data is collected; seller = the store itself.",11696      "enabled": true,11697      "schemaVersion": "1.0",11698      "config": {11699        "currency": "USD",11700        "market": "US",11701        "seller": "Martian Toys",11702        "location": "Philadelphia, PA, USA",11703        "collections": [11704          {11705            "handle": "designer-toys",11706            "categorySlug": "designer_toys"11707          },11708          {11709            "handle": "designer-vinyl",11710            "categorySlug": "designer_toys"11711          },11712          {11713            "handle": "blind-boxes",11714            "categorySlug": "designer_toys"11715          },11716          {11717            "handle": "customs",11718            "categorySlug": "designer_toys",11719            "series": "Custom"11720          },11721          {11722            "handle": "urban-toys",11723            "categorySlug": "designer_toys"11724          },11725          {11726            "handle": "martian-exclusives",11727            "categorySlug": "designer_toys",11728            "brand": "Martian Toys"11729          },11730          {11731            "handle": "all-martian-toys",11732            "categorySlug": "designer_toys",11733            "brand": "Martian Toys"11734          },11735          {11736            "handle": "pop-mart",11737            "categorySlug": "designer_toys",11738            "brand": "Pop Mart"11739          },11740          {11741            "handle": "super-plastic",11742            "categorySlug": "designer_toys",11743            "brand": "Superplastic"11744          },11745          {11746            "handle": "tokidoki",11747            "categorySlug": "designer_toys",11748            "brand": "tokidoki"11749          },11750          {11751            "handle": "kozik",11752            "categorySlug": "designer_toys",11753            "brand": "Frank Kozik"11754          },11755          {11756            "handle": "3d-retro",11757            "categorySlug": "designer_toys",11758            "brand": "3DRetro"11759          },11760          {11761            "handle": "madl",11762            "categorySlug": "designer_toys",11763            "series": "MAD*L"11764          }11765        ],11766        "rules": [],11767        "defaultCategory": null,11768        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b",11769        "keepOutOfStock": true,11770        "fetchBarcodes": false,11771        "wholeShop": false,11772        "pageSize": 25011773      },11774      "capabilities": [11775        "live_listings",11776        "images",11777        "url_lookup"11778      ],11779      "refreshClass": "normal",11780      "domain": "martiantoys.com",11781      "country": "US",11782      "requires": [],11783      "acquisitionMethod": "Shopify storefront products.json",11784      "historicalDepth": "none"11785    },11786    {11787      "id": "mattel-creations",11788      "displayName": "Mattel Creations (Hot Wheels Collectors, Matchbox, Barbie Signature, MOTU — official MSRP)",11789      "sourceId": "mattel-creations",11790      "sourceName": "Mattel Creations",11791      "sourceType": "manufacturer",11792      "sourceUrl": "https://creations.mattel.com",11793      "module": "api/mattel-creations",11794      "enginePriority": [11795        "api"11796      ],11797      "categories": [11798        "model_cars",11799        "dolls",11800        "action_figures"11801      ],11802      "regions": [11803        "US"11804      ],11805      "languages": [11806        "en"11807      ],11808      "currency": [11809        "USD"11810      ],11811      "supportsListings": true,11812      "supportsSold": false,11813      "supportsAuctions": false,11814      "supportsImages": true,11815      "supportsCatalog": true,11816      "supportsPopulation": false,11817      "supportsLookup": true,11818      "refreshFrequencyMinutes": 720,11819      "priority": "medium",11820      "trustScore": 0.85,11821      "attributionRequired": true,11822      "termsUrl": "https://creations.mattel.com/pages/terms-of-use",11823      "accessNotes": "Reads only the public, unauthenticated Shopify storefront JSON of Mattel's official collector shop: https://creations.mattel.com/collections/<handle>/products.json?limit=250&page=N for the collector collections in config (hot-wheels-collectors, hot-wheels-premium, hot-wheels-red-line-club, hot-wheels-elite-64, hot-wheels-car-culture, matchbox-collectors, barbie-signature, masters-of-the-universe-collectibles, wwe, action-figures, dolls, cars-vehicles). robots.txt (Shopify standard): `User-agent: *` Allow: / for products/collections; plain HTTPS with the RareIndex bot UA returns 200. Products carry 'Brand: …', 'Category: …' and 'Filter-AgeGrade: …' tags, vendor, SKU (Mattel item number, e.g. HCD19), price and availability. Apparel, drinkware, memberships, home décor, bags, hats, posters and pins are excluded by rule. Prices are Mattel's own MSRP: stored both as the listing price and as originalMsrp; sold-out items are kept as 'ended' listings so the MSRP record survives sell-outs. Listings are never sales (SPEC §111). 1.5 s politeness, concurrency 2, no cart/checkout/account endpoints.",11824      "enabled": true,11825      "schemaVersion": "1.0",11826      "config": {11827        "currency": "USD",11828        "seller": "Mattel Creations",11829        "location": "US",11830        "keepOutOfStock": true,11831        "exclude": "gift card|Category: (Apparel|Drinkware|Digital Memberships|Home Decor|Home Décor|Accessories|Bags|Hats|Posters|Pins|Books|Puzzles|Games|Stationery)|membership|t-shirt|\\btee\\b|hoodie|sweatshirt|sweater|jacket|mug|tumbler|\\bglass(?:ware)?\\b|poster|backpack|tote|\\bcap\\b|beanie|\\bhat\\b|socks|pin set|enamel pin|keychain|lanyard|blanket|ornament|candle|puzzle|card game|\\buno\\b",11832        "collections": [11833          {11834            "handle": "hot-wheels-collectors",11835            "categorySlug": "model_cars",11836            "brand": "Hot Wheels",11837            "franchise": "Hot Wheels"11838          },11839          {11840            "handle": "hot-wheels-premium",11841            "categorySlug": "model_cars",11842            "brand": "Hot Wheels",11843            "franchise": "Hot Wheels"11844          },11845          {11846            "handle": "hot-wheels-red-line-club",11847            "categorySlug": "model_cars",11848            "brand": "Hot Wheels",11849            "franchise": "Hot Wheels",11850            "series": "Red Line Club"11851          },11852          {11853            "handle": "hot-wheels-elite-64",11854            "categorySlug": "model_cars",11855            "brand": "Hot Wheels",11856            "franchise": "Hot Wheels",11857            "series": "Elite 64"11858          },11859          {11860            "handle": "hot-wheels-car-culture",11861            "categorySlug": "model_cars",11862            "brand": "Hot Wheels",11863            "franchise": "Hot Wheels",11864            "series": "Car Culture"11865          },11866          {11867            "handle": "matchbox-collectors",11868            "categorySlug": "model_cars",11869            "brand": "Matchbox",11870            "franchise": "Matchbox"11871          },11872          {11873            "handle": "barbie-signature",11874            "categorySlug": "dolls",11875            "brand": "Barbie",11876            "franchise": "Barbie",11877            "series": "Barbie Signature"11878          },11879          {11880            "handle": "masters-of-the-universe-collectibles",11881            "categorySlug": "action_figures",11882            "brand": "Masters of the Universe",11883            "franchise": "Masters of the Universe"11884          },11885          {11886            "handle": "wwe",11887            "categorySlug": "action_figures",11888            "brand": "WWE",11889            "franchise": "WWE"11890          },11891          {11892            "handle": "action-figures",11893            "categorySlug": "action_figures"11894          },11895          {11896            "handle": "dolls",11897            "categorySlug": "dolls"11898          },11899          {11900            "handle": "cars-vehicles",11901            "categorySlug": "model_cars"11902          }11903        ],11904        "rules": [11905          {11906            "match": "Category: Vehicles|\\bdiecast\\b|die-cast|1:64|1:43|1:18",11907            "categorySlug": "model_cars"11908          },11909          {11910            "match": "Category: (Action Figures|Figure Sets|Playsets)|action figure",11911            "categorySlug": "action_figures"11912          },11913          {11914            "match": "Category: Dolls|\\bdoll\\b",11915            "categorySlug": "dolls"11916          }11917        ],11918        "defaultCategory": null11919      },11920      "capabilities": [11921        "live_listings",11922        "images",11923        "catalog",11924        "url_lookup"11925      ],11926      "refreshClass": "normal",11927      "domain": "creations.mattel.com",11928      "country": "US",11929      "requires": [],11930      "acquisitionMethod": "Shopify storefront products.json",11931      "historicalDepth": "none"11932    },11933    {11934      "id": "mecum",11935      "displayName": "Mecum Auctions (results)",11936      "sourceId": "mecum",11937      "sourceName": "Mecum Auctions",11938      "sourceType": "auction_house",11939      "sourceUrl": "https://www.mecum.com",11940      "module": "firecrawl/mecum",11941      "enginePriority": [11942        "firecrawl"11943      ],11944      "categories": [11945        "automobiles",11946        "motorcycles",11947        "automotive_memorabilia"11948      ],11949      "regions": [11950        "US"11951      ],11952      "languages": [11953        "en"11954      ],11955      "currency": [11956        "USD"11957      ],11958      "supportsListings": false,11959      "supportsSold": true,11960      "supportsAuctions": false,11961      "supportsImages": true,11962      "supportsCatalog": false,11963      "supportsPopulation": false,11964      "supportsLookup": false,11965      "refreshFrequencyMinutes": 720,11966      "priority": "high",11967      "trustScore": 0.9,11968      "attributionRequired": true,11969      "termsUrl": "https://www.mecum.com/terms-and-conditions/",11970      "accessNotes": "Public results: the /results/ page lists completed auctions (plain HTTPS), each auction's lot list (/auctions/<slug>/lots/?page=N, 24 lots per page) is rendered through Firecrawl because prices are client-rendered. robots.txt allows the pages (only /search/ is disallowed). Lots carrying the 'sold' badge with a price become sales; 'bid goes on'/unsold lots are skipped. Sale date = first day of the auction's date range (range kept in metadata). Mecum does not state on the results page whether displayed prices include the buyer's premium → buyer_premium_included=null (flagged for review). 1 credit per page, 2 s politeness delay.",11971      "enabled": true,11972      "schemaVersion": "1.0",11973      "config": {11974        "auctionsPerRun": 1,11975        "lotPagesPerAuction": 1011976      },11977      "capabilities": [11978        "sold_listings",11979        "images"11980      ],11981      "refreshClass": "normal",11982      "domain": "mecum.com",11983      "country": "US",11984      "requires": [],11985      "historicalDepth": "none"11986    },11987    {11988      "id": "miller-miller",11989      "displayName": "Miller & Miller Auctions (results & catalogs)",11990      "sourceId": "miller-miller",11991      "sourceName": "Miller & Miller Auctions",11992      "sourceType": "auction_house",11993      "sourceUrl": "https://live.millerandmillerauctions.com",11994      "module": "api/miller-miller",11995      "enginePriority": [11996        "api"11997      ],11998      "categories": [11999        "advertising",12000        "automotive_memorabilia",12001        "baseball_cards",12002        "hockey_cards",12003        "sports_memorabilia",12004        "vintage_toys",12005        "coins",12006        "banknotes",12007        "art",12008        "antiques",12009        "other_watches",12010        "jewelry",12011        "vending_machines",12012        "arcade_pinball",12013        "casino_memorabilia",12014        "musical_instruments",12015        "postcards",12016        "books"12017      ],12018      "regions": [12019        "CA"12020      ],12021      "languages": [12022        "en"12023      ],12024      "currency": [12025        "CAD"12026      ],12027      "supportsListings": false,12028      "supportsSold": true,12029      "supportsAuctions": true,12030      "supportsImages": true,12031      "supportsCatalog": false,12032      "supportsPopulation": false,12033      "supportsLookup": false,12034      "refreshFrequencyMinutes": 1440,12035      "priority": "medium",12036      "trustScore": 0.88,12037      "attributionRequired": true,12038      "termsUrl": "https://www.millerandmillerauctions.com/terms-of-sale",12039      "accessNotes": "Plain HTTPS with the RareIndex user agent on the public Auction Mobility site live.millerandmillerauctions.com (robots.txt: Disallow empty, Crawl-delay 10 → 10 s between requests; www.millerandmillerauctions.com is a Squarespace brochure site and is not crawled). Auction ids are read from the platform sitemap /sitemap/auctions.xml; each catalog page /auctions/<id>[/<slug>]?page=N (36 lots per page) embeds the lot summaries as JSON: title, lot number, estimate, currency (CAD), status ('sold' / 'expired') and the winning timed bid, which is the hammer price before the 21 % in-house buyer's premium → stored with buyerPremiumIncluded=false and buyers_premium_pct in metadata. Sale date = auction effective end time (fallback: winning-bid timestamp). Upcoming/live catalogs yield auction_lot records with estimates. The Auction Mobility JSON API (production4-server.auctionmobility.com, requires a client token) is never called; account, bidding and 'my bids' pages are never fetched. 0 credits.",12040      "enabled": true,12041      "schemaVersion": "1.0",12042      "config": {12043        "auctionsPerRun": 3,12044        "pagesPerAuction": 4012045      },12046      "capabilities": [12047        "sold_listings",12048        "auction_results",12049        "images",12050        "historical_backfill"12051      ],12052      "refreshClass": "normal",12053      "domain": "live.millerandmillerauctions.com",12054      "country": "CA",12055      "requires": [],12056      "acquisitionMethod": "embedded JSON in server-rendered Auction Mobility catalog pages",12057      "historicalDepth": "years"12058    },12059    {12060      "id": "millon",12061      "displayName": "Millon (Paris) — sale results",12062      "sourceId": "millon",12063      "sourceName": "Millon",12064      "sourceType": "auction_house",12065      "sourceUrl": "https://www.millon.com",12066      "module": "api/millon",12067      "enginePriority": [12068        "api"12069      ],12070      "categories": [12071        "comics",12072        "independent_comics",12073        "art",12074        "contemporary_art",12075        "photography",12076        "design_furniture",12077        "antiques",12078        "jewelry",12079        "other_watches",12080        "rolex",12081        "wine",12082        "whisky",12083        "books",12084        "maps",12085        "vintage_toys",12086        "movie_posters",12087        "coins",12088        "stamps",12089        "militaria",12090        "porcelain",12091        "silver",12092        "glass_crystal",12093        "luxury_handbags",12094        "fashion_streetwear",12095        "cameras",12096        "musical_instruments"12097      ],12098      "regions": [12099        "FR",12100        "BE"12101      ],12102      "languages": [12103        "fr"12104      ],12105      "currency": [12106        "EUR"12107      ],12108      "supportsListings": false,12109      "supportsSold": true,12110      "supportsAuctions": true,12111      "supportsImages": true,12112      "supportsCatalog": false,12113      "supportsPopulation": false,12114      "supportsLookup": false,12115      "refreshFrequencyMinutes": 1440,12116      "priority": "medium",12117      "trustScore": 0.9,12118      "attributionRequired": true,12119      "termsUrl": "https://www.millon.com/infos-legales/cgu",12120      "accessNotes": "Millon (Paris Drouot, Bruxelles, Nice, Lyon…; strong in bandes dessinées, Asian art, design, toys, wine, watches) — Drupal site, fully server-rendered. Public pages read: /catalogue/ventes-passees?page=N (0-based; ~1 740 past sales, 49 pages), /catalogue/vente<id>-<slug>?page=N (50 lot cards per page: lot number, title, sub-title, description, image, 'Estimation', 'Adjugé à | 160 €') and ONE lot page per sale (/catalogue/vente<id>-<slug>/lot<n>-<slug>) solely to read the sale date ('Vente … du 6 juillet 2026' — the sale page prints no year). 'Adjugé à' is not labelled as hammer or fee-inclusive on the public pages, so buyer_premium_included stays null (unknown, never assumed). robots.txt allows the public paths; CGU contain no clause on automated access. 2.5 s politeness; salesPerRun caps incremental runs; backfill walks up to backfillIndexPages index pages, oldest sale first, with a resumable cursor. No login, no bidder data.",12121      "enabled": true,12122      "schemaVersion": "1.0",12123      "config": {12124        "indexPages": 1,12125        "backfillIndexPages": 60,12126        "salesPerRun": 212127      },12128      "capabilities": [12129        "sold_listings",12130        "auction_results",12131        "images",12132        "historical_backfill"12133      ],12134      "refreshClass": "normal",12135      "domain": "millon.com",12136      "country": "FR",12137      "requires": [],12138      "acquisitionMethod": "server-rendered HTML (Drupal)",12139      "historicalDepth": "years"12140    },12141    {12142      "id": "miniature-market",12143      "displayName": "Miniature Market (board game retail listings)",12144      "sourceId": "miniature-market",12145      "sourceName": "Miniature Market",12146      "sourceType": "dealer",12147      "sourceUrl": "https://www.miniaturemarket.com",12148      "module": "api/miniature-market",12149      "enginePriority": [12150        "api"12151      ],12152      "categories": [12153        "board_games"12154      ],12155      "regions": [12156        "US"12157      ],12158      "languages": [12159        "en"12160      ],12161      "currency": [12162        "USD"12163      ],12164      "supportsListings": true,12165      "supportsSold": false,12166      "supportsAuctions": false,12167      "supportsImages": true,12168      "supportsCatalog": false,12169      "supportsPopulation": false,12170      "supportsLookup": false,12171      "refreshFrequencyMinutes": 1440,12172      "priority": "low",12173      "trustScore": 0.75,12174      "attributionRequired": true,12175      "termsUrl": "https://www.miniaturemarket.com/terms-and-conditions",12176      "accessNotes": "Reads only public category listing pages of the Shopware 6 storefront over plain HTTPS with the RareIndex bot UA (no anti-bot; 200 OK): https://www.miniaturemarket.com/board-games.html?p=N (24 product boxes per page, 379 pages) and /board-games/new-releases.html for freshness. Each product box exposes name, product URL, image, SKU (data-sku), the Shopware product id (buy-widget redirect parameters), 'Retail Price' (publisher list price → originalMsrp) and 'Our Price', plus the buy button (Add to cart / Preorder). robots.txt for `User-agent: *`: disallows /checkout/, /account/, /wishlist/, /search/ and the ?SID=, ?dir=, ?mode=, ?limit= parameters, explicitly allows ?p= pagination, and sets Crawl-delay: 10 — we send at most one request per 10 s, concurrency 1, and never use the disallowed sort/limit parameters. No product detail pages (not needed), no search, no account/cart. Retail asking prices are listings, never sales (SPEC §111); the list price is kept as originalMsrp for board games (taxonomy has no publisher/edition catalog for board games yet — BGG is blocked).",12177      "enabled": true,12178      "schemaVersion": "1.0",12179      "config": {12180        "pagesPerSeed": 2,12181        "seeds": [12182          {12183            "path": "/board-games/new-releases.html",12184            "categorySlug": "board_games",12185            "pages": 312186          },12187          {12188            "path": "/board-games.html",12189            "categorySlug": "board_games",12190            "pages": 212191          }12192        ],12193        "exclude": "sleeves?|playmat|dice set|token set|insert|organizer|gift card|paint set|brush"12194      },12195      "capabilities": [12196        "live_listings",12197        "images"12198      ],12199      "refreshClass": "normal",12200      "domain": "miniaturemarket.com",12201      "country": "US",12202      "requires": [],12203      "acquisitionMethod": "plain HTTP — public Shopware listing pages",12204      "historicalDepth": "none"12205    },12206    {12207      "id": "mondo",12208      "displayName": "Mondo (US vinyl & collector-toy & poster store, USD)",12209      "sourceId": "mondo",12210      "sourceName": "Mondo",12211      "sourceType": "dealer",12212      "sourceUrl": "https://mondoshop.com",12213      "module": "api/mondo",12214      "enginePriority": [12215        "api"12216      ],12217      "categories": [12218        "music",12219        "action_figures",12220        "designer_toys",12221        "movie_posters"12222      ],12223      "regions": [12224        "US"12225      ],12226      "languages": [12227        "en"12228      ],12229      "currency": [12230        "USD"12231      ],12232      "supportsListings": true,12233      "supportsSold": false,12234      "supportsAuctions": false,12235      "supportsImages": true,12236      "supportsCatalog": false,12237      "supportsPopulation": false,12238      "supportsLookup": true,12239      "refreshFrequencyMinutes": 720,12240      "priority": "medium",12241      "trustScore": 0.75,12242      "attributionRequired": true,12243      "termsUrl": "https://mondoshop.com/policies/terms-of-service",12244      "accessNotes": "Mondo (mondoshop.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 9 configured collections (soundtracks, mondo-music, exclusive-colored-vinyl, non-soundtrack, new-vinyl-records, collectibles, statues, soft-vinyl-1 … (+1 more, see config.collections)) and /products/<handle>.json for URL lookups (~1.8k vinyl soundtracks, 460 collectibles (1/6 & 1/12 figures, soft vinyl), 75 posters). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — apparel & pins, tiki mugs, the \"fees-products\"/\"archive\" umbrella collections, wholesale collections. No personal data is collected; seller = the store itself.",12245      "enabled": true,12246      "schemaVersion": "1.0",12247      "config": {12248        "currency": "USD",12249        "market": "US",12250        "seller": "Mondo",12251        "location": "Austin, TX, USA",12252        "collections": [12253          {12254            "handle": "soundtracks",12255            "categorySlug": "music",12256            "brand": "Mondo"12257          },12258          {12259            "handle": "mondo-music",12260            "categorySlug": "music",12261            "brand": "Mondo"12262          },12263          {12264            "handle": "exclusive-colored-vinyl",12265            "categorySlug": "music",12266            "brand": "Mondo"12267          },12268          {12269            "handle": "non-soundtrack",12270            "categorySlug": "music",12271            "brand": "Mondo"12272          },12273          {12274            "handle": "new-vinyl-records",12275            "categorySlug": "music",12276            "brand": "Mondo"12277          },12278          {12279            "handle": "collectibles",12280            "categorySlug": "action_figures",12281            "brand": "Mondo"12282          },12283          {12284            "handle": "statues",12285            "categorySlug": "action_figures",12286            "brand": "Mondo"12287          },12288          {12289            "handle": "soft-vinyl-1",12290            "categorySlug": "designer_toys",12291            "brand": "Mondo"12292          },12293          {12294            "handle": "posters",12295            "categorySlug": "movie_posters",12296            "brand": "Mondo"12297          }12298        ],12299        "rules": [12300          {12301            "match": "\\| (1/6 Scale|1/12 Scale|Figures?|Statues?) \\|",12302            "categorySlug": "action_figures",12303            "brand": "Mondo"12304          },12305          {12306            "match": "\\| Soft Vinyl \\||\\bsoft vinyl\\b|\\bsofubi\\b",12307            "categorySlug": "designer_toys",12308            "brand": "Mondo"12309          },12310          {12311            "match": "\\| (Vinyl|Cassettes?|CDs?) \\||\\bsoundtrack\\b",12312            "categorySlug": "music",12313            "brand": "Mondo"12314          },12315          {12316            "match": "\\| Posters? \\||screen ?print|\\bposter\\b|\\bgiclee\\b",12317            "categorySlug": "movie_posters",12318            "brand": "Mondo"12319          }12320        ],12321        "defaultCategory": null,12322        "exclude": "gift card|mystery|\\| (Apparel|Pins?|Enamel Pins?|Tiki Mugs?|Accessories|Puzzles?|Books?) \\||t-shirt|hoodie|\\bshirt\\b|\\bhat\\b|\\bcap\\b|enamel pin|\\bpin set\\b|tiki mug|\\bmug\\b|\\btote\\b|puzzle|blanket|\\bsocks?\\b|\\bpatch\\b|slipmat|\\bsticker",12323        "keepOutOfStock": true,12324        "fetchBarcodes": false,12325        "wholeShop": false,12326        "pageSize": 25012327      },12328      "capabilities": [12329        "live_listings",12330        "images",12331        "url_lookup"12332      ],12333      "refreshClass": "normal",12334      "domain": "mondoshop.com",12335      "country": "US",12336      "requires": [],12337      "acquisitionMethod": "Shopify storefront products.json",12338      "historicalDepth": "none"12339    },12340    {12341      "id": "morphy",12342      "displayName": "Morphy Auctions (prices realized)",12343      "sourceId": "morphy",12344      "sourceName": "Morphy Auctions",12345      "sourceType": "auction_house",12346      "sourceUrl": "https://morphyauctions.com",12347      "module": "api/morphy",12348      "enginePriority": [12349        "api"12350      ],12351      "categories": [12352        "vintage_toys",12353        "advertising",12354        "vending_machines",12355        "arcade_pinball",12356        "casino_memorabilia",12357        "dolls",12358        "model_trains",12359        "coins",12360        "banknotes",12361        "perfume",12362        "glass_crystal",12363        "porcelain",12364        "silver",12365        "clocks",12366        "antiques",12367        "art",12368        "jewelry",12369        "other_watches",12370        "automotive_memorabilia",12371        "sports_memorabilia"12372      ],12373      "regions": [12374        "US"12375      ],12376      "languages": [12377        "en"12378      ],12379      "currency": [12380        "USD"12381      ],12382      "supportsListings": false,12383      "supportsSold": true,12384      "supportsAuctions": false,12385      "supportsImages": true,12386      "supportsCatalog": false,12387      "supportsPopulation": false,12388      "supportsLookup": false,12389      "refreshFrequencyMinutes": 720,12390      "priority": "medium",12391      "trustScore": 0.9,12392      "attributionRequired": true,12393      "termsUrl": "https://morphyauctions.com/bidding/terms-and-conditions/",12394      "accessNotes": "Two public hosts, plain HTTPS, 0 credits, 2 s politeness. morphyauctions.com/auctions/past-auctions/ (WordPress; robots.txt allows) lists every past sale with department, title and date; auctions.morphyauctions.com/catalog.aspx?auctionid=N shows each lot with 'Final Price: $X', min bid, estimate and bid count. Paging on the ASP.NET catalog is the page's own form POST (page number + Go, 100 lots per page) with its hidden __VIEWSTATE fields — no account or bidding endpoint is used. Firearms & Militaria departments and weapon lots are skipped. Morphy does not state on the catalog whether 'Final Price' includes the buyer's premium → buyer_premium_included=null. Sale date = auction date from the list (first day of multi-day sales).",12395      "enabled": true,12396      "schemaVersion": "1.0",12397      "config": {12398        "auctionsPerRun": 2,12399        "pagesPerAuction": 10,12400        "lotsPerPage": 10012401      },12402      "capabilities": [12403        "sold_listings",12404        "images"12405      ],12406      "refreshClass": "normal",12407      "domain": "morphyauctions.com",12408      "country": "US",12409      "requires": [],12410      "historicalDepth": "none"12411    },12412    {12413      "id": "mpb",12414      "displayName": "MPB (used cameras & lenses, US/UK/EU)",12415      "sourceId": "mpb",12416      "sourceName": "MPB",12417      "sourceType": "dealer",12418      "sourceUrl": "https://www.mpb.com",12419      "module": "firecrawl/mpb",12420      "enginePriority": [12421        "firecrawl"12422      ],12423      "categories": [12424        "cameras"12425      ],12426      "regions": [12427        "US",12428        "GB",12429        "EU"12430      ],12431      "languages": [12432        "en"12433      ],12434      "currency": [12435        "USD",12436        "GBP",12437        "EUR"12438      ],12439      "supportsListings": true,12440      "supportsSold": false,12441      "supportsAuctions": false,12442      "supportsImages": true,12443      "supportsCatalog": false,12444      "supportsPopulation": false,12445      "supportsLookup": false,12446      "refreshFrequencyMinutes": 1440,12447      "priority": "low",12448      "trustScore": 0.85,12449      "attributionRequired": true,12450      "termsUrl": "https://www.mpb.com/en-us/terms-and-conditions",12451      "accessNotes": "MPB blocks non-browser clients (403 'Security check', robots.txt itself returns 403) but category pages render for Firecrawl (1 credit per page, ~2.5 s wait). The connector reads the model cards of seeded category pages (name, units available, price range, model URL, image) for the US storefront (add en-uk / en-eu seeds for GBP/EUR). One listing per model at the cheapest available unit; per-unit cosmetic grades live on the model page and are not fetched. Dealer asks only; no transactions.",12452      "enabled": true,12453      "schemaVersion": "1.0",12454      "config": {12455        "seeds": [12456          "/en-us/category/used-cameras/medium-format-cameras",12457          "/en-us/category/used-cameras/mirrorless-cameras/fujifilm-mirrorless-cameras",12458          "/en-us/category/used-cameras/mirrorless-cameras/sony-e-mirrorless-cameras",12459          "/en-us/category/used-cameras/dslr-cameras/canon-dslr-cameras",12460          "/en-us/category/used-cameras/premium-compact-cameras",12461          "/en-us/category/used-photo-and-video-lenses"12462        ]12463      },12464      "capabilities": [12465        "live_listings",12466        "images"12467      ],12468      "refreshClass": "normal",12469      "domain": "mpb.com",12470      "country": "US",12471      "requires": [],12472      "historicalDepth": "none"12473    },12474    {12475      "id": "mtggoldfish",12476      "displayName": "MTGGoldfish (paper prices & history)",12477      "sourceId": "mtggoldfish",12478      "sourceName": "MTGGoldfish",12479      "sourceType": "pricing_guide",12480      "sourceUrl": "https://www.mtggoldfish.com",12481      "module": "api/mtggoldfish",12482      "enginePriority": [12483        "api",12484        "firecrawl"12485      ],12486      "categories": [12487        "magic_the_gathering"12488      ],12489      "regions": [12490        "US"12491      ],12492      "languages": [12493        "en"12494      ],12495      "currency": [12496        "USD"12497      ],12498      "supportsListings": false,12499      "supportsSold": false,12500      "supportsAuctions": false,12501      "supportsImages": true,12502      "supportsCatalog": true,12503      "supportsPopulation": false,12504      "supportsLookup": true,12505      "refreshFrequencyMinutes": 1440,12506      "priority": "medium",12507      "trustScore": 0.75,12508      "attributionRequired": true,12509      "termsUrl": "https://www.mtggoldfish.com/robots.txt",12510      "accessNotes": "Public set pages (https://www.mtggoldfish.com/sets/<Set+Name>) embed a JSON payload with every printing (card_uuid, set code, collector number, finish, current paper/online price, images). robots.txt allows '/' for generic agents (only widgets/embeds are disallowed; Content-Signal ai-train=no is respected — data is used as market reference, not for training). Paper price = TCGplayer-derived market price → price_observation 'market' dated by fetch day (confidence 0.75). For cards above `history.minPrice` the public price-history component (/price_history_component, daily series since 2010) is fetched, capped per run → dated observations that give assets a real multi-year guide-price history. Politeness 1.5 s/page; ~340 sets.",12511      "enabled": true,12512      "schemaVersion": "1.0",12513      "config": {12514        "seeds": [],12515        "maxSetsPerRun": 60,12516        "history": {12517          "enabled": true,12518          "minPrice": 100,12519          "maxPerRun": 150,12520          "days": 109512521        }12522      },12523      "capabilities": [12524        "images",12525        "catalog",12526        "url_lookup"12527      ],12528      "refreshClass": "normal",12529      "domain": "mtggoldfish.com",12530      "country": "US",12531      "requires": [],12532      "historicalDepth": "none"12533    },12534    {12535      "id": "mtgjson",12536      "displayName": "MTGJSON (prices & identifiers)",12537      "sourceId": "mtgjson",12538      "sourceName": "MTGJSON",12539      "sourceType": "pricing_guide",12540      "sourceUrl": "https://mtgjson.com",12541      "module": "api/mtgjson",12542      "enginePriority": [12543        "api"12544      ],12545      "categories": [12546        "magic_the_gathering"12547      ],12548      "regions": [12549        "US",12550        "EU"12551      ],12552      "languages": [12553        "en"12554      ],12555      "currency": [12556        "USD",12557        "EUR"12558      ],12559      "supportsListings": false,12560      "supportsSold": false,12561      "supportsAuctions": false,12562      "supportsImages": false,12563      "supportsCatalog": true,12564      "supportsPopulation": false,12565      "supportsLookup": false,12566      "refreshFrequencyMinutes": 1440,12567      "priority": "high",12568      "trustScore": 0.85,12569      "attributionRequired": true,12570      "termsUrl": "https://mtgjson.com/faq/",12571      "accessNotes": "Open MTG data project (free bulk files, no key). Incremental runs download SetList.json, the newest `maxSetsPerRun` set files (LEA.json… with per-card identifiers: scryfallId, tcgplayerProductId, cardKingdomId, mcmId, cardsphereId, multiverseId) and AllPricesToday.json.gz (~5 MB gz) which carries the latest daily retail/buylist price per printing from TCGplayer, Cardmarket (EUR), Card Kingdom, Cardsphere and ManaPool. Backfill streams AllPrices.json.gz (~150 MB gz, 90 days of daily history) entry by entry. Retail prices are stored as price_observations (priceKind 'market', metadata.provider), buylist prices only in metadata; every point is dated by MTGJSON's own date keys. Variant vocabulary mirrors the scryfall connector (Foil / Etched Foil + treatments) so identifier matches agree.",12572      "enabled": true,12573      "schemaVersion": "1.0",12574      "config": {12575        "maxSetsPerRun": 60,12576        "providers": [12577          "tcgplayer",12578          "cardmarket",12579          "cardkingdom",12580          "cardsphere",12581          "manapool"12582        ],12583        "historyDays": 9012584      },12585      "capabilities": [12586        "catalog"12587      ],12588      "refreshClass": "normal",12589      "domain": "mtgjson.com",12590      "country": "US",12591      "requires": [],12592      "historicalDepth": "none"12593    },12594    {12595      "id": "mycomicshop",12596      "displayName": "MyComicShop (raw & graded comic listings)",12597      "sourceId": "mycomicshop",12598      "sourceName": "MyComicShop",12599      "sourceType": "dealer",12600      "sourceUrl": "https://www.mycomicshop.com",12601      "module": "scrapfly/mycomicshop",12602      "enginePriority": [12603        "scrapfly"12604      ],12605      "categories": [12606        "comics",12607        "marvel_comics",12608        "dc_comics",12609        "independent_comics",12610        "manga"12611      ],12612      "regions": [12613        "US"12614      ],12615      "languages": [12616        "en"12617      ],12618      "currency": [12619        "USD"12620      ],12621      "supportsListings": true,12622      "supportsSold": false,12623      "supportsAuctions": true,12624      "supportsImages": true,12625      "supportsCatalog": false,12626      "supportsPopulation": false,12627      "supportsLookup": true,12628      "refreshFrequencyMinutes": 1440,12629      "priority": "high",12630      "trustScore": 0.8,12631      "attributionRequired": true,12632      "termsUrl": "https://www.mycomicshop.com/help/terms",12633      "accessNotes": "Reads only public title pages: https://www.mycomicshop.com/search?TID=<titleId>&mingr=0 (all issues of one series with their in-stock copies on a single page, ~1–3 MB). Each copy is schema.org/Product microdata (name incl. grade, sku = ItemID, canonical url, USD price, availability) followed by bullet notes (paper quality, 'Label #<cert>' for CGC/CBCS slabs, 'CGC Signature Series', 'Consignment. 3% buyer's premium charged at checkout', consignor store). Auction copies on the same page ('Auction Item: CGC 8.5', current bid, bid count, time left / 'Auction opens <date>') become auction_lot records — the /auctions section itself is disallowed by robots.txt and is never fetched, nor are /newlistings, /restocked, /account, /cart, /wantlist (all disallowed). robots.txt allows /search for `User-agent: *`. The site is fronted by Imperva Incapsula, which serves an interstitial to every non-browser client (bot and browser UAs alike), so pages are fetched through Scrapfly without JS rendering (~1 credit per title page, 3 s politeness, concurrency 1, 6 titles per daily run over a configurable list of series ids). Prices: the microdata price of consignment copies already includes the 3% buyer's premium; we store the displayed asking price and keep the premium-inclusive figure in metadata. Asking prices are listings, never sales (SPEC §111). No customer/bidder data exists on these pages.",12634      "enabled": true,12635      "schemaVersion": "1.0",12636      "config": {12637        "titlesPerRun": 6,12638        "titles": [12639          {12640            "tid": "78991",12641            "name": "Amazing Spider-Man (1963 1st Series)"12642          },12643          {12644            "tid": "177841",12645            "name": "Amazing Spider-Man (1963 1st Series) Annual"12646          },12647          {12648            "tid": "78851",12649            "name": "Alpha Flight (1983 1st Series)"12650          },12651          {12652            "tid": "169291",12653            "name": "Amazing Heroes (1981)"12654          }12655        ]12656      },12657      "capabilities": [12658        "live_listings",12659        "auction_results",12660        "images",12661        "url_lookup"12662      ],12663      "refreshClass": "normal",12664      "domain": "mycomicshop.com",12665      "country": "US",12666      "requires": [12667        "SCRAPFLY_API_KEY"12668      ],12669      "acquisitionMethod": "Scrapfly (no JS) — public title pages, schema.org microdata",12670      "historicalDepth": "none"12671    },12672    {12673      "id": "myslabs",12674      "displayName": "MySlabs (graded card & comic marketplace)",12675      "sourceId": "myslabs",12676      "sourceName": "MySlabs",12677      "sourceType": "marketplace",12678      "sourceUrl": "https://myslabs.com",12679      "module": "api/myslabs",12680      "enginePriority": [12681        "api"12682      ],12683      "categories": [12684        "sports_cards",12685        "baseball_cards",12686        "basketball_cards",12687        "football_cards",12688        "hockey_cards",12689        "soccer_cards",12690        "other_sports_cards",12691        "pokemon",12692        "magic_the_gathering",12693        "yugioh",12694        "non_sport_cards",12695        "comics",12696        "marvel_comics",12697        "dc_comics",12698        "independent_comics"12699      ],12700      "regions": [12701        "US"12702      ],12703      "languages": [12704        "en"12705      ],12706      "currency": [12707        "USD"12708      ],12709      "supportsListings": true,12710      "supportsSold": false,12711      "supportsAuctions": false,12712      "supportsImages": true,12713      "supportsCatalog": false,12714      "supportsPopulation": false,12715      "supportsLookup": true,12716      "refreshFrequencyMinutes": 720,12717      "priority": "medium",12718      "trustScore": 0.7,12719      "attributionRequired": true,12720      "termsUrl": "https://myslabs.com/static/terms",12721      "accessNotes": "Public fixed-price marketplace for graded slabs. robots.txt only disallows /account/, /api/, /admin/, /ajax_select/. Discovery uses the public sitemaps (sitemap-slabs-*.xml, newest ids first); slab pages are plain HTML with a schema.org Product JSON-LD (name, images, offers.price USD, availability InStock/OutOfStock). OutOfStock slabs are stored as listings with availability 'sold' at their last asking price — never as confirmed sales. Politeness 1.5 s between pages; ~250 slabs per incremental run (`maxSlabsPerRun`).",12722      "enabled": true,12723      "schemaVersion": "1.0",12724      "config": {12725        "maxSlabsPerRun": 250,12726        "backfillSlabs": 200012727      },12728      "capabilities": [12729        "live_listings",12730        "images",12731        "url_lookup"12732      ],12733      "refreshClass": "normal",12734      "domain": "myslabs.com",12735      "country": "US",12736      "requires": [],12737      "historicalDepth": "none"12738    },12739    {12740      "id": "newbury-comics",12741      "displayName": "Newbury Comics (US vinyl store, USD)",12742      "sourceId": "newbury-comics",12743      "sourceName": "Newbury Comics",12744      "sourceType": "dealer",12745      "sourceUrl": "https://www.newburycomics.com",12746      "module": "api/newbury-comics",12747      "enginePriority": [12748        "api"12749      ],12750      "categories": [12751        "music"12752      ],12753      "regions": [12754        "US"12755      ],12756      "languages": [12757        "en"12758      ],12759      "currency": [12760        "USD"12761      ],12762      "supportsListings": true,12763      "supportsSold": false,12764      "supportsAuctions": false,12765      "supportsImages": true,12766      "supportsCatalog": false,12767      "supportsPopulation": false,12768      "supportsLookup": true,12769      "refreshFrequencyMinutes": 720,12770      "priority": "medium",12771      "trustScore": 0.75,12772      "attributionRequired": true,12773      "termsUrl": "https://www.newburycomics.com/policies/terms-of-service",12774      "accessNotes": "Newbury Comics (newburycomics.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 10 configured collections (vinyl, exclusive-vinyl, exclusive-indie-vinyl, vinyl-singles, vinyl-box-sets, exclusive-soundtracks-vinyl, autographed-vinyl, autographed-cds … (+2 more, see config.collections)) and /products/<handle>.json for URL lookups (~1k exclusive colored vinyl, 200 box sets, 485 singles, 1.7k autographed items). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — merch, \"domestic-only\"/\"test\" umbrella collections, label collections (duplicates of the format collections). No personal data is collected; seller = the store itself.",12775      "enabled": true,12776      "schemaVersion": "1.0",12777      "config": {12778        "currency": "USD",12779        "market": "US",12780        "seller": "Newbury Comics",12781        "location": "Boston, MA, USA",12782        "collections": [12783          {12784            "handle": "vinyl",12785            "categorySlug": "music"12786          },12787          {12788            "handle": "exclusive-vinyl",12789            "categorySlug": "music"12790          },12791          {12792            "handle": "exclusive-indie-vinyl",12793            "categorySlug": "music"12794          },12795          {12796            "handle": "vinyl-singles",12797            "categorySlug": "music"12798          },12799          {12800            "handle": "vinyl-box-sets",12801            "categorySlug": "music"12802          },12803          {12804            "handle": "exclusive-soundtracks-vinyl",12805            "categorySlug": "music"12806          },12807          {12808            "handle": "autographed-vinyl",12809            "categorySlug": "music"12810          },12811          {12812            "handle": "autographed-cds",12813            "categorySlug": "music"12814          },12815          {12816            "handle": "cassettes",12817            "categorySlug": "music"12818          },12819          {12820            "handle": "cds",12821            "categorySlug": "music"12822          }12823        ],12824        "rules": [],12825        "defaultCategory": null,12826        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Merch|Accessories|Turntables?|Speakers?|Headphones?|Cartridges?|Cables?|Posters?|Digital) \\||t-shirt|hoodie|\\bshirt\\b|\\bhat\\b|\\btote\\b|\\bmug\\b|poster|slipmat|slip mat|cartridge|stylus|turntable|speaker|headphone|\\bcable\\b|cleaner|cleaning|\\bbrush\\b|record weight|inner sleeves?|outer sleeves?|\\bcrate\\b|\\bstand\\b|\\bpin\\b|enamel pin|digital (album|download)|\\bsocks?\\b|\\bpatch\\b|\\bsticker",12827        "keepOutOfStock": true,12828        "fetchBarcodes": false,12829        "wholeShop": false,12830        "pageSize": 25012831      },12832      "capabilities": [12833        "live_listings",12834        "images",12835        "url_lookup"12836      ],12837      "refreshClass": "normal",12838      "domain": "newburycomics.com",12839      "country": "US",12840      "requires": [],12841      "acquisitionMethod": "Shopify storefront products.json",12842      "historicalDepth": "none"12843    },12844    {12845      "id": "ngc-cert",12846      "displayName": "NGC cert verification",12847      "sourceId": "ngc",12848      "sourceName": "NGC (Numismatic Guaranty Company)",12849      "sourceType": "grading_company",12850      "sourceUrl": "https://www.ngccoin.com/certlookup/",12851      "module": "firecrawl/ngc-cert",12852      "enginePriority": [12853        "firecrawl",12854        "scrapfly"12855      ],12856      "categories": [12857        "coins",12858        "medals"12859      ],12860      "regions": [12861        "US"12862      ],12863      "languages": [12864        "en"12865      ],12866      "currency": [12867        "USD"12868      ],12869      "supportsListings": false,12870      "supportsSold": false,12871      "supportsAuctions": false,12872      "supportsImages": true,12873      "supportsCatalog": true,12874      "supportsPopulation": true,12875      "supportsLookup": true,12876      "refreshFrequencyMinutes": 10080,12877      "priority": "high",12878      "trustScore": 0.95,12879      "attributionRequired": true,12880      "termsUrl": "https://www.ngccoin.com/terms-of-use/",12881      "accessNotes": "Reads ONLY the public 'Verify NGC Certification' page https://www.ngccoin.com/certlookup/<cert>/<grade>/ for supplied certs; no enumeration. NGC needs the holder grade in the URL (numeric 1–70, NGCDetails, NGCAncients, Other) — a URL without it renders the empty form and yields zero records, so seeds are 'cert/grade' (e.g. 4627835-016/61) and the worker should pass the grade seen on the marketplace. ngccoin.com/robots.txt: 'User-agent: * Allow: /' (only AhrefsBot disallowed). Plain HTTP on /certlookup returns a Cloudflare managed-challenge 403, so the page is rendered by Firecrawl (1 credit) with Scrapfly fallback — public, no login. Fields read: cert, description, grade, grade date, label, the holder images, the NGC price-guide value (metadata only) and the on-page 'Total Graded by NGC: In <grade>: n / In Higher Grades: m' counts (partial population_report, population_scope=grade_and_higher, sourceUrl = the linked public census page). Deliberately NOT fetched: NGC Registry, Coin Explorer, auction central; the full NGC census pages are public but not crawled by this connector. A not-found cert yields zero records.",12882      "enabled": true,12883      "schemaVersion": "1.0",12884      "config": {12885        "grader": "ngc",12886        "certs": [12887          "4627835-016/61",12888          "8444762-003/NGCDetails"12889        ],12890        "maxPerRun": 5012891      },12892      "capabilities": [12893        "cert_lookup",12894        "grading_population",12895        "catalog",12896        "url_lookup",12897        "images"12898      ],12899      "refreshClass": "archive",12900      "domain": "ngccoin.com",12901      "country": "US",12902      "requires": [],12903      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",12904      "historicalDepth": "none"12905    },12906    {12907      "id": "ngc-priceguide",12908      "displayName": "NGC US Coin Price Guide (retail guide values by grade)",12909      "sourceId": "ngc",12910      "sourceName": "NGC (Numismatic Guaranty Company)",12911      "sourceType": "grading_company",12912      "sourceUrl": "https://www.ngccoin.com",12913      "module": "api/ngc-priceguide",12914      "enginePriority": [12915        "api",12916        "firecrawl"12917      ],12918      "categories": [12919        "coins"12920      ],12921      "regions": [12922        "US"12923      ],12924      "languages": [12925        "en"12926      ],12927      "currency": [12928        "USD"12929      ],12930      "supportsListings": false,12931      "supportsSold": false,12932      "supportsAuctions": false,12933      "supportsImages": false,12934      "supportsCatalog": true,12935      "supportsPopulation": false,12936      "supportsLookup": false,12937      "refreshFrequencyMinutes": 10080,12938      "priority": "low",12939      "trustScore": 0.85,12940      "attributionRequired": true,12941      "termsUrl": "https://www.ngccoin.com/legal/terms-of-use/",12942      "accessNotes": "Plain HTTPS with the RareIndex user agent, 0 credits, no login. robots.txt: 'user-agent: * Allow: /' (only AhrefsBot is disallowed). LEGAL NOTE: NGC's Terms of Use contain a clause against automated access/copying; the connector therefore runs at the lowest cadence (weekly, 4 s between requests, ≤ 10 series pages per run), reads only the public retail guide pages and keeps guide values as attributed price observations — review before enabling in production. Pages read: /coin-explorer/data/categories/ (public JSON: 27 categories, 198 subcategories) and /price-guide/united-states/<category-seo>/<SubcategoryID>/ (server-rendered series page: NGC coin id, year/mint, description, denomination, designation MS/PF, per-row 'Updated: m/d/yyyy', one price cell per grade PrAg…70 incl. + and ★ grades). Observation date = the row's own 'Updated' date (never the fetch time). The World price guide (/price-guide/world/) is behind a Cloudflare interactive challenge and is NOT fetched; the price-history JSON, census/population, cert lookup and 'Shop/eBay' links are not fetched.",12943      "enabled": true,12944      "schemaVersion": "1.0",12945      "config": {12946        "subcategoriesPerRun": 10,12947        "onlySubcategories": []12948      },12949      "capabilities": [12950        "catalog"12951      ],12952      "refreshClass": "archive",12953      "domain": "ngccoin.com",12954      "country": "US",12955      "requires": [],12956      "acquisitionMethod": "Static HTML series pages + public categories JSON",12957      "historicalDepth": "none"12958    },12959    {12960      "id": "ninoma",12961      "displayName": "Ninoma",12962      "sourceId": "ninoma",12963      "sourceName": "Ninoma",12964      "sourceType": "dealer",12965      "sourceUrl": "https://ninoma.com",12966      "module": "api/ninoma",12967      "enginePriority": [12968        "api"12969      ],12970      "categories": [12971        "action_figures",12972        "gundam",12973        "pokemon",12974        "weiss_schwarz",12975        "one_piece_card_game",12976        "magic_the_gathering",12977        "digimon_tcg",12978        "yugioh",12979        "plush",12980        "video_games",12981        "nintendo_games",12982        "playstation_games"12983      ],12984      "regions": [12985        "JP"12986      ],12987      "languages": [12988        "en",12989        "ja"12990      ],12991      "currency": [12992        "JPY"12993      ],12994      "supportsListings": true,12995      "supportsSold": false,12996      "supportsAuctions": false,12997      "supportsImages": true,12998      "supportsCatalog": false,12999      "supportsPopulation": false,13000      "supportsLookup": true,13001      "refreshFrequencyMinutes": 1440,13002      "priority": "medium",13003      "trustScore": 0.7,13004      "attributionRequired": true,13005      "termsUrl": "https://ninoma.com/policies/terms-of-service",13006      "accessNotes": "Ninoma (ninoma.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (figures-for-sale, scale-figures, figures-companies-good-smile-company-nendoroid, figma, s-h-figuarts, mafex, prize-figures, pokemon-moncolle, gundam-model-kits-gunpla, pokemon-tcg, weiss-schwarz-tcg, one-piecetcg, magic-the-gathering-tcg, digimon-tcg, yu-gi-oh, manufacture-plush-toy, video-games). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency JPY as integers (e.g. \"9265\"; Shopify.currency active JPY rate 1.0, /meta.json currency JPY, country JP) — tax-free export prices. JAN codes are in the sku field (identifiers.sku). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",13007      "enabled": true,13008      "schemaVersion": "1.0",13009      "config": {13010        "currency": "JPY",13011        "seller": "Ninoma",13012        "location": null,13013        "collections": [13014          {13015            "handle": "figures-for-sale",13016            "categorySlug": "action_figures"13017          },13018          {13019            "handle": "scale-figures",13020            "categorySlug": "action_figures",13021            "series": "Scale Figure"13022          },13023          {13024            "handle": "figures-companies-good-smile-company-nendoroid",13025            "categorySlug": "action_figures",13026            "brand": "Good Smile Company",13027            "series": "Nendoroid"13028          },13029          {13030            "handle": "figma",13031            "categorySlug": "action_figures",13032            "brand": "Max Factory",13033            "series": "figma"13034          },13035          {13036            "handle": "s-h-figuarts",13037            "categorySlug": "action_figures",13038            "brand": "Bandai Spirits",13039            "series": "S.H.Figuarts"13040          },13041          {13042            "handle": "mafex",13043            "categorySlug": "action_figures",13044            "brand": "Medicom Toy",13045            "series": "MAFEX"13046          },13047          {13048            "handle": "prize-figures",13049            "categorySlug": "action_figures",13050            "series": "Prize Figure"13051          },13052          {13053            "handle": "pokemon-moncolle",13054            "categorySlug": "action_figures",13055            "franchise": "Pokémon",13056            "series": "Moncolle"13057          },13058          {13059            "handle": "gundam-model-kits-gunpla",13060            "categorySlug": "gundam",13061            "brand": "Bandai",13062            "franchise": "Gundam"13063          },13064          {13065            "handle": "pokemon-tcg",13066            "categorySlug": "pokemon",13067            "franchise": "Pokémon"13068          },13069          {13070            "handle": "weiss-schwarz-tcg",13071            "categorySlug": "weiss_schwarz"13072          },13073          {13074            "handle": "one-piecetcg",13075            "categorySlug": "one_piece_card_game",13076            "franchise": "One Piece"13077          },13078          {13079            "handle": "magic-the-gathering-tcg",13080            "categorySlug": "magic_the_gathering",13081            "franchise": "Magic: The Gathering"13082          },13083          {13084            "handle": "digimon-tcg",13085            "categorySlug": "digimon_tcg",13086            "franchise": "Digimon"13087          },13088          {13089            "handle": "yu-gi-oh",13090            "categorySlug": "yugioh",13091            "franchise": "Yu-Gi-Oh!"13092          },13093          {13094            "handle": "manufacture-plush-toy",13095            "categorySlug": "plush"13096          },13097          {13098            "handle": "video-games",13099            "categorySlug": "video_games"13100          }13101        ],13102        "rules": [13103          {13104            "match": "nendoroid",13105            "categorySlug": "action_figures",13106            "series": "Nendoroid"13107          },13108          {13109            "match": "\\bfigma\\b",13110            "categorySlug": "action_figures",13111            "series": "figma"13112          },13113          {13114            "match": "figuarts",13115            "categorySlug": "action_figures",13116            "series": "S.H.Figuarts"13117          },13118          {13119            "match": "\\bmafex\\b",13120            "categorySlug": "action_figures",13121            "series": "MAFEX"13122          },13123          {13124            "match": "pop up parade",13125            "categorySlug": "action_figures",13126            "series": "Pop Up Parade"13127          },13128          {13129            "match": "super famicom|\\bsfc\\b|famicom|\\bnes\\b|\\bsnes\\b|nintendo|\\bnds\\b|\\b3ds\\b|game ?boy|\\bgba\\b|\\bn64\\b|gamecube|\\bwii\\b|switch|virtual boy",13130            "categorySlug": "nintendo_games",13131            "brand": "Nintendo"13132          },13133          {13134            "match": "playstation|\\bpsx\\b|\\bps[12345]\\b|\\bpsp\\b|ps vita",13135            "categorySlug": "playstation_games",13136            "brand": "Sony"13137          }13138        ],13139        "defaultCategory": null,13140        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|card supply|deck case|\\bsleeve|storage|display case|cushion|towel|acrylic stand|acrylic keychain|can badge|\\bbadge\\b|clear file|poster|tapestry|rubber strap|puzzle|zigzag|calendar|sticker|coaster|mug\\b|t-shirt|blanket|bath|smartphone|lottery ticket|\\bticket\\b",13141        "keepOutOfStock": true,13142        "pageSize": 250,13143        "fetchBarcodes": false,13144        "wholeShop": false13145      },13146      "capabilities": [13147        "live_listings",13148        "images",13149        "url_lookup"13150      ],13151      "refreshClass": "normal",13152      "domain": "ninoma.com",13153      "country": "JP",13154      "requires": [],13155      "acquisitionMethod": "Shopify storefront products.json (public JSON)",13156      "historicalDepth": "none"13157    },13158    {13159      "id": "noble-knight",13160      "displayName": "Noble Knight Games (board games & miniatures dealer)",13161      "sourceId": "noble-knight",13162      "sourceName": "Noble Knight Games",13163      "sourceType": "dealer",13164      "sourceUrl": "https://www.nobleknight.com",13165      "module": "api/noble-knight",13166      "enginePriority": [13167        "api"13168      ],13169      "categories": [13170        "board_games",13171        "warhammer",13172        "gundam",13173        "action_figures",13174        "funko"13175      ],13176      "regions": [13177        "US"13178      ],13179      "languages": [13180        "en"13181      ],13182      "currency": [13183        "USD"13184      ],13185      "supportsListings": true,13186      "supportsSold": false,13187      "supportsAuctions": false,13188      "supportsImages": true,13189      "supportsCatalog": true,13190      "supportsPopulation": false,13191      "supportsLookup": true,13192      "refreshFrequencyMinutes": 1440,13193      "priority": "low",13194      "trustScore": 0.7,13195      "attributionRequired": true,13196      "termsUrl": "https://www.nobleknight.com/Terms",13197      "accessNotes": "Plain HTTPS. robots.txt disallows the client-rendered category/search listings (/Catalog, /category-search, /AdvancedSearch…) but allows product pages (/P/<id>/<slug>) and the sitemaps (sitemapproducts1-5.xml ≈ 120k products), so products are enumerated from the sitemaps with a rotating cursor and read from each page's schema.org Product JSON-LD (name, sku, mpn, brand, price, itemCondition, availability) plus the Publisher / Product Line / Category / Genre lines. Only board games, Warhammer/Games Workshop miniatures, Gunpla and figure products are kept (RPG books, CCG singles and supplies are skipped). Condition mapped to the boxed_toys scale. 1.5 s politeness, 0 credits, 200 products per run.",13198      "enabled": true,13199      "schemaVersion": "1.0",13200      "config": {13201        "sitemapCount": 5,13202        "productsPerRun": 20013203      },13204      "capabilities": [13205        "live_listings",13206        "images",13207        "catalog",13208        "url_lookup"13209      ],13210      "refreshClass": "normal",13211      "domain": "nobleknight.com",13212      "country": "US",13213      "requires": [],13214      "historicalDepth": "none"13215    },13216    {13217      "id": "noble-numismatics",13218      "displayName": "Noble Numismatics (Sydney) — prices realised since 1994",13219      "sourceId": "noble-numismatics",13220      "sourceName": "Noble Numismatics",13221      "sourceType": "auction_house",13222      "sourceUrl": "https://www.noble.com.au",13223      "module": "api/noble-numismatics",13224      "enginePriority": [13225        "api",13226        "firecrawl"13227      ],13228      "categories": [13229        "coins",13230        "banknotes",13231        "medals"13232      ],13233      "regions": [13234        "AU"13235      ],13236      "languages": [13237        "en"13238      ],13239      "currency": [13240        "AUD"13241      ],13242      "supportsListings": false,13243      "supportsSold": true,13244      "supportsAuctions": false,13245      "supportsImages": false,13246      "supportsCatalog": false,13247      "supportsPopulation": false,13248      "supportsLookup": false,13249      "refreshFrequencyMinutes": 10080,13250      "priority": "medium",13251      "trustScore": 0.9,13252      "attributionRequired": true,13253      "termsUrl": "https://www.noble.com.au/about/terms-and-conditions",13254      "accessNotes": "Plain HTTPS with the RareIndex user agent, 0 credits; robots.txt is 'User-agent: * Allow: /'; no login, no anti-bot. Pages read: /auctions (index of past sales 44 → current with sale number, title, dates and city) and /auctions/sale/<n>/prices-realised — one static page per sale listing every lot (lot id, lot number, description with the grading sentence in <em>, 'Prices Realised' amount in AUD or the status 'Passed in'). The page itself states 'All prices exclude buyer and vendor premiums' → recorded as hammer prices (buyer_premium_included=false, the note is kept in metadata; null if the note ever disappears). Sale date = first day of the printed sale dates. Unsold lots are skipped; multiple-piece lots '(4)' are flagged isBundle. Lot pages (/auctions/lot/?id=) are stored as sourceUrl only, catalogue browse pages, archive search and PDFs are not fetched. Noble's terms say catalogue text may not be reproduced without permission: descriptions are stored for identification and attribution, never republished as a catalogue. 2 s politeness; each sale is one ~1.5 MB request, so the weekly refresh reads only new sales (Noble holds 3 sales a year).",13255      "enabled": true,13256      "schemaVersion": "1.0",13257      "config": {13258        "salesPerRun": 113259      },13260      "capabilities": [13261        "sold_listings",13262        "historical_backfill"13263      ],13264      "refreshClass": "archive",13265      "domain": "noble.com.au",13266      "country": "AU",13267      "requires": [],13268      "acquisitionMethod": "Static HTML prices-realised pages",13269      "historicalDepth": "decades"13270    },13271    {13272      "id": "noonans",13273      "displayName": "Noonans Mayfair (ex Dix Noonan Webb) — hammer prices since 1991",13274      "sourceId": "noonans",13275      "sourceName": "Noonans Mayfair",13276      "sourceType": "auction_house",13277      "sourceUrl": "https://www.noonans.co.uk",13278      "module": "firecrawl/noonans",13279      "enginePriority": [13280        "firecrawl",13281        "scrapfly"13282      ],13283      "categories": [13284        "coins",13285        "banknotes",13286        "medals"13287      ],13288      "regions": [13289        "GB"13290      ],13291      "languages": [13292        "en"13293      ],13294      "currency": [13295        "GBP"13296      ],13297      "supportsListings": false,13298      "supportsSold": true,13299      "supportsAuctions": false,13300      "supportsImages": true,13301      "supportsCatalog": false,13302      "supportsPopulation": false,13303      "supportsLookup": false,13304      "refreshFrequencyMinutes": 1440,13305      "priority": "high",13306      "trustScore": 0.92,13307      "attributionRequired": true,13308      "termsUrl": "https://www.noonans.co.uk/help-and-information/#TermsAndConditions_UK",13309      "accessNotes": "Firecrawl rendering (1 credit per page) because Cloudflare answers plain HTTPS with a 403 'Just a moment' challenge; the pages read are the public archive any visitor sees (no login — 'Your Cabinet', bidding and account pages are never touched). robots.txt: User-agent * Allow: / with Crawl-delay 2 (we wait 2.5 s, concurrency 1). Pages read: /archive/past-catalogues/ (≈ 700 catalogues back to 1991 with title and sale date; only coin / banknote / medal / token sales are crawled — jewellery, watches, silver and objects of vertu belong to other connectors) and /archive/past-catalogues/<id>/catalogue/?layout=list&offset=N (40 lots per page: lot number, full description ending with the printed estimate, 'Hammer Price: £X' or 'Unsold', lot id, thumbnail). Prices are hammer prices in GBP (buyer_premium_included=false; Noonans' premium is stated in the terms and is not part of the published figure); unsold lots are skipped. Sale date = the catalogue date (first day of two-day sales). Lot pages (/catalogue/<lotId>/) are used only as sourceUrl. Images are copyright Noonans (personal use only) — only the thumbnail URL is stored, never the file. Backfill iterates the catalogue list newest → oldest with per-catalogue progress.",13310      "enabled": true,13311      "schemaVersion": "1.0",13312      "config": {13313        "auctionsPerRun": 1,13314        "pagesPerRun": 2013315      },13316      "capabilities": [13317        "sold_listings",13318        "images",13319        "historical_backfill"13320      ],13321      "refreshClass": "normal",13322      "domain": "noonans.co.uk",13323      "country": "GB",13324      "requires": [],13325      "acquisitionMethod": "Firecrawl rendered HTML (archive catalogue list pages)",13326      "historicalDepth": "decades"13327    },13328    {13329      "id": "novelship",13330      "displayName": "Novelship (sneaker catalog, last sale & lowest ask)",13331      "sourceId": "novelship",13332      "sourceName": "Novelship",13333      "sourceType": "marketplace",13334      "sourceUrl": "https://novelship.com",13335      "module": "api/novelship",13336      "enginePriority": [13337        "api",13338        "firecrawl",13339        "scrapfly"13340      ],13341      "categories": [13342        "sneakers",13343        "nike_jordan",13344        "adidas_yeezy",13345        "new_balance_asics_other"13346      ],13347      "regions": [13348        "SG",13349        "AU",13350        "NZ",13351        "TW",13352        "HK",13353        "MY",13354        "JP",13355        "US"13356      ],13357      "languages": [13358        "en"13359      ],13360      "currency": [13361        "USD"13362      ],13363      "supportsListings": true,13364      "supportsSold": false,13365      "supportsAuctions": false,13366      "supportsImages": true,13367      "supportsCatalog": true,13368      "supportsPopulation": false,13369      "supportsLookup": true,13370      "refreshFrequencyMinutes": 720,13371      "priority": "medium",13372      "trustScore": 0.7,13373      "attributionRequired": true,13374      "termsUrl": "https://novelship.com/terms",13375      "accessNotes": "Public Novelship browse pages (novelship.com/sneakers/<brand>?page=N) and product pages fetched over plain HTTPS with the RareIndex user agent; robots.txt only disallows sell/auth/dashboard/pay paths. The server-rendered payload embeds each product's SKU (style code), colorway, retail cost, release date, last sale price, lowest listing price and 180-day sales count — no login or private endpoint is used. Prices are read as USD (the anonymous international storefront prices in US$; cost_retail matches US retail) with confidence 0.7; per-size asks are not exposed on listing pages. Sizes/stock are not fetched. 1.5 s politeness delay.",13376      "enabled": true,13377      "schemaVersion": "1.0",13378      "config": {13379        "seeds": [13380          "jordan",13381          "nike",13382          "adidas",13383          "new-balance",13384          "asics",13385          "yeezy"13386        ],13387        "pagesPerSeed": 313388      },13389      "capabilities": [13390        "live_listings",13391        "images",13392        "catalog",13393        "url_lookup"13394      ],13395      "refreshClass": "normal",13396      "domain": "novelship.com",13397      "country": "SG",13398      "requires": [],13399      "historicalDepth": "none"13400    },13401    {13402      "id": "numisbids",13403      "displayName": "NumisBids (prices realized across ~370 numismatic auction houses)",13404      "sourceId": "numisbids",13405      "sourceName": "NumisBids",13406      "sourceType": "marketplace",13407      "sourceUrl": "https://www.numisbids.com",13408      "module": "firecrawl/numisbids",13409      "enginePriority": [13410        "firecrawl",13411        "scrapfly"13412      ],13413      "categories": [13414        "coins",13415        "banknotes",13416        "medals"13417      ],13418      "regions": [13419        "global",13420        "US",13421        "EU",13422        "GB"13423      ],13424      "languages": [13425        "en"13426      ],13427      "currency": [13428        "USD",13429        "EUR",13430        "GBP",13431        "CHF",13432        "AUD",13433        "CAD",13434        "SEK",13435        "NOK",13436        "DKK",13437        "PLN",13438        "CZK",13439        "HKD",13440        "JPY"13441      ],13442      "supportsListings": false,13443      "supportsSold": true,13444      "supportsAuctions": false,13445      "supportsImages": true,13446      "supportsCatalog": false,13447      "supportsPopulation": false,13448      "supportsLookup": false,13449      "refreshFrequencyMinutes": 1440,13450      "priority": "high",13451      "trustScore": 0.9,13452      "attributionRequired": true,13453      "termsUrl": "https://www.numisbids.com/terms",13454      "accessNotes": "Firecrawl rendering (1 credit per page) because Cloudflare answers plain HTTPS with a 403 challenge; no login, no CAPTCHA solving — the same public pages any visitor sees. robots.txt (User-agent *) only disallows wantlist_add / bidlist / bidsubmit / watchlist paths, none of which are fetched (ClaudeBot and Bytespider are disallowed site-wide; RareIndexBot is not). Pages read: /results (closed sales that publish prices realized → sale id), /sale/<sid> (firm, auction title, closing date, category list) and /sale/<sid>/category/<cid>?pg=N (100 lots per page: lot number, truncated description, estimate, image, 'Price realized: 160 USD'). NumisBids states on every prices-realized page that 'Buyer's premium is not included' → sales are stored as hammer prices (buyer_premium_included=false) in the currency the page prints; lots without a price (unsold, withdrawn) are skipped and 'Large Lots' sections are flagged isBundle. Sale date = the closing date printed in the sale header (first day of multi-day sales). Backfill walks sale ids downwards (≈ 11 000 sales since 2013; ids without published prices cost one page each and are skipped). Not fetched: individual lot pages (only reached via the category listing; the lot URL is kept as sourceUrl), bidding, accounts, want-list searches. Attribution: NumisBids + the consigning auction house (auctionHouse field). 2.5 s politeness, concurrency 1.",13455      "enabled": true,13456      "schemaVersion": "1.0",13457      "config": {13458        "salesPerRun": 2,13459        "pagesPerRun": 30,13460        "skipSections": [13461          "Numismatic Literature",13462          "Literature",13463          "Books",13464          "Antiquities"13465        ]13466      },13467      "capabilities": [13468        "sold_listings",13469        "images",13470        "historical_backfill"13471      ],13472      "refreshClass": "normal",13473      "domain": "numisbids.com",13474      "country": "global",13475      "requires": [],13476      "acquisitionMethod": "Firecrawl rendered HTML (sale category listings)",13477      "historicalDepth": "decades"13478    },13479    {13480      "id": "numista",13481      "displayName": "Numista catalogue API (N# types, issues, guide values)",13482      "sourceId": "numista",13483      "sourceName": "Numista",13484      "sourceType": "catalog",13485      "sourceUrl": "https://en.numista.com",13486      "module": "api/numista",13487      "enginePriority": [13488        "api"13489      ],13490      "categories": [13491        "coins",13492        "banknotes",13493        "medals"13494      ],13495      "regions": [13496        "global"13497      ],13498      "languages": [13499        "en",13500        "fr",13501        "es"13502      ],13503      "currency": [13504        "EUR",13505        "USD"13506      ],13507      "supportsListings": false,13508      "supportsSold": false,13509      "supportsAuctions": false,13510      "supportsImages": true,13511      "supportsCatalog": true,13512      "supportsPopulation": false,13513      "supportsLookup": true,13514      "refreshFrequencyMinutes": 10080,13515      "priority": "low",13516      "trustScore": 0.85,13517      "attributionRequired": true,13518      "termsUrl": "https://en.numista.com/api/license.php",13519      "accessNotes": "Official Numista API v3 (https://api.numista.com/v3, docs https://en.numista.com/api/doc/, OpenAPI swagger.yaml). Every call needs a personal key in the 'Numista-API-Key' header → the connector requires NUMISTA_API_KEY and is reported DISABLED without it. Free plan: 2 000 requests/month (429 = quota/too many simultaneous requests) — the connector reads ≤ 4 catalogue pages per run (GET /types?q=&issuer=&category=&page=&count=50) and, only when config.fetchPrices is true, ≤ 20 price calls per run (/types/{id}/issues then /types/{id}/issues/{issue}/prices?currency=EUR). Licence (en.numista.com/api/license.php): commercial use allowed with mandatory attribution 'Source: Numista' + N# on every result (stored in metadata.attribution); bulk download, re-serving the data as a feed and sublicensing are forbidden — we keep only identifying fields (title, issuer, years, denomination, composition, references) and per-grade guide values. Photos are CC BY-NC-SA / third-party copyrighted: only thumbnail URLs are referenced. Public catalogue HTML pages (robots allow /catalogue/…html but disallow index.php? and ?q= searches) are not scraped. Fixtures were built from the official documentation examples (no key available) and say so in their note.",13520      "enabled": true,13521      "schemaVersion": "1.0",13522      "config": {13523        "seeds": [13524          {13525            "issuer": "canada",13526            "category": "coin"13527          },13528          {13529            "issuer": "united-states",13530            "category": "coin"13531          },13532          {13533            "issuer": "united-kingdom",13534            "category": "coin"13535          },13536          {13537            "issuer": "france",13538            "category": "coin"13539          },13540          {13541            "issuer": "germany",13542            "category": "coin"13543          },13544          {13545            "issuer": "canada",13546            "category": "banknote"13547          }13548        ],13549        "count": 50,13550        "pagesPerRun": 4,13551        "fetchPrices": false,13552        "priceCurrency": "EUR",13553        "maxPricesPerRun": 2013554      },13555      "capabilities": [13556        "images",13557        "catalog",13558        "url_lookup"13559      ],13560      "refreshClass": "archive",13561      "domain": "en.numista.com",13562      "country": "global",13563      "requires": [13564        "NUMISTA_API_KEY"13565      ],13566      "acquisitionMethod": "official API (API key)",13567      "historicalDepth": "none"13568    },13569    {13570      "id": "openlibrary",13571      "displayName": "Open Library (bibliographic catalog — collectible first editions)",13572      "sourceId": "openlibrary",13573      "sourceName": "Open Library (Internet Archive)",13574      "sourceType": "catalog",13575      "sourceUrl": "https://openlibrary.org",13576      "module": "api/openlibrary",13577      "enginePriority": [13578        "api"13579      ],13580      "categories": [13581        "books",13582        "harry_potter",13583        "lord_of_the_rings"13584      ],13585      "regions": [13586        "GB",13587        "US"13588      ],13589      "languages": [13590        "en"13591      ],13592      "currency": [13593        "USD"13594      ],13595      "supportsListings": false,13596      "supportsSold": false,13597      "supportsAuctions": false,13598      "supportsImages": true,13599      "supportsCatalog": true,13600      "supportsPopulation": false,13601      "supportsLookup": false,13602      "refreshFrequencyMinutes": 10080,13603      "priority": "low",13604      "trustScore": 0.9,13605      "attributionRequired": true,13606      "termsUrl": "https://openlibrary.org/developers/api",13607      "accessNotes": "Open Library's JSON endpoints /isbn/<isbn>.json, /works/<id>.json and /authors/<id>.json (allowed by robots.txt; /search and /api are disallowed and not used) with a descriptive user agent and 1 request/second, as their API terms ask. Seeds are ISBNs of collectible modern first editions/first printings (config.seeds with a note); each yields one catalog item (title, author, publisher, place, year, edition name, pages, cover) with identifiers isbn + openlibrary_id so dealer/auction book records can resolve against it. No prices come from this source.",13608      "enabled": true,13609      "schemaVersion": "1.0",13610      "config": {13611        "seeds": [13612          {13613            "isbn": "0747532699",13614            "note": "Harry Potter and the Philosopher's Stone, Bloomsbury 1997 first edition"13615          },13616          {13617            "isbn": "0747538492",13618            "note": "Harry Potter and the Chamber of Secrets, Bloomsbury 1998 first edition"13619          },13620          {13621            "isbn": "0747542155",13622            "note": "Harry Potter and the Prisoner of Azkaban, Bloomsbury 1999 first edition"13623          },13624          {13625            "isbn": "074754624X",13626            "note": "Harry Potter and the Goblet of Fire, Bloomsbury 2000 first edition"13627          },13628          {13629            "isbn": "0590353403",13630            "note": "Harry Potter and the Sorcerer's Stone, Scholastic 1998 first US edition"13631          },13632          {13633            "isbn": "0395489318",13634            "note": "The Lord of the Rings, Houghton Mifflin 1987 one-volume edition"13635          },13636          {13637            "isbn": "0048231878",13638            "note": "The Hobbit, Allen & Unwin 1978 fourth edition"13639          },13640          {13641            "isbn": "0553380168",13642            "note": "A Brief History of Time, Bantam 1998"13643          },13644          {13645            "isbn": "0553103547",13646            "note": "A Game of Thrones, Bantam 1996 first edition"13647          },13648          {13649            "isbn": "0553108034",13650            "note": "A Clash of Kings, Bantam 1999 first US edition"13651          },13652          {13653            "isbn": "0670813028",13654            "note": "It, Viking 1986 first edition (Stephen King)"13655          },13656          {13657            "isbn": "0385121679",13658            "note": "The Shining, Doubleday 1977 first edition"13659          },13660          {13661            "isbn": "0385086954",13662            "note": "Carrie, Doubleday 1974 first edition"13663          },13664          {13665            "isbn": "0394800168",13666            "note": "The Cat in the Hat, Random House"13667          },13668          {13669            "isbn": "0060256656",13670            "note": "Where the Wild Things Are, Harper & Row"13671          },13672          {13673            "isbn": "0316769487",13674            "note": "The Catcher in the Rye, Little Brown"13675          },13676          {13677            "isbn": "0451524934",13678            "note": "1984 (Signet)"13679          },13680          {13681            "isbn": "0743273567",13682            "note": "The Great Gatsby, Scribner"13683          },13684          {13685            "isbn": "0446310786",13686            "note": "To Kill a Mockingbird, Warner Books"13687          },13688          {13689            "isbn": "0345339681",13690            "note": "The Hobbit, Ballantine"13691          },13692          {13693            "isbn": "0441172717",13694            "note": "Dune, Ace"13695          },13696          {13697            "isbn": "0345391802",13698            "note": "The Hitchhiker's Guide to the Galaxy, Del Rey"13699          },13700          {13701            "isbn": "0399501487",13702            "note": "Lord of the Flies, Perigee"13703          },13704          {13705            "isbn": "0679783261",13706            "note": "Pride and Prejudice, Modern Library"13707          },13708          {13709            "isbn": "0553296981",13710            "note": "Anne Frank: The Diary of a Young Girl, Bantam"13711          },13712          {13713            "isbn": "0064400557",13714            "note": "Charlotte's Web, HarperTrophy"13715          },13716          {13717            "isbn": "0140177396",13718            "note": "Of Mice and Men, Penguin"13719          },13720          {13721            "isbn": "0743297334",13722            "note": "The Old Man and the Sea, Scribner"13723          },13724          {13725            "isbn": "0618260307",13726            "note": "The Hobbit, Houghton Mifflin 2001"13727          },13728          {13729            "isbn": "0618002227",13730            "note": "The Fellowship of the Ring, Houghton Mifflin 1999"13731          },13732          {13733            "isbn": "0439139597",13734            "note": "Harry Potter and the Goblet of Fire, Scholastic 2000 first US edition"13735          },13736          {13737            "isbn": "043935806X",13738            "note": "Harry Potter and the Order of the Phoenix, Scholastic 2003 first US edition"13739          },13740          {13741            "isbn": "0439784549",13742            "note": "Harry Potter and the Half-Blood Prince, Scholastic 2005 first US edition"13743          },13744          {13745            "isbn": "0545010225",13746            "note": "Harry Potter and the Deathly Hallows, Scholastic 2007 first US edition"13747          },13748          {13749            "isbn": "0747551006",13750            "note": "Harry Potter and the Order of the Phoenix, Bloomsbury 2003 first edition"13751          },13752          {13753            "isbn": "0747581088",13754            "note": "Harry Potter and the Half-Blood Prince, Bloomsbury 2005 first edition"13755          },13756          {13757            "isbn": "0747591059",13758            "note": "Harry Potter and the Deathly Hallows, Bloomsbury 2007 first edition"13759          },13760          {13761            "isbn": "0399226907",13762            "note": "The Very Hungry Caterpillar, Philomel"13763          },13764          {13765            "isbn": "0394900014",13766            "note": "Green Eggs and Ham, Random House"13767          },13768          {13769            "isbn": "0060935464",13770            "note": "To Kill a Mockingbird, Perennial Classics"13771          },13772          {13773            "isbn": "0192833553",13774            "note": "Frankenstein, Oxford"13775          },13776          {13777            "isbn": "0553213113",13778            "note": "Dracula, Bantam"13779          },13780          {13781            "isbn": "0451526341",13782            "note": "Animal Farm, Signet"13783          },13784          {13785            "isbn": "0060850523",13786            "note": "Brave New World, Harper Perennial"13787          },13788          {13789            "isbn": "0393975959",13790            "note": "Heart of Darkness, Norton"13791          },13792          {13793            "isbn": "0140283331",13794            "note": "The Grapes of Wrath, Penguin"13795          },13796          {13797            "isbn": "0316346624",13798            "note": "Infinite Jest, Little Brown 1996 first edition"13799          },13800          {13801            "isbn": "0394758285",13802            "note": "Beloved, Knopf 1987 first edition"13803          },13804          {13805            "isbn": "0394587146",13806            "note": "American Psycho, Vintage 1991"13807          },13808          {13809            "isbn": "0679720200",13810            "note": "The Stranger, Vintage"13811          },13812          {13813            "isbn": "0061120081",13814            "note": "To Kill a Mockingbird, Harper 50th anniversary"13815          },13816          {13817            "isbn": "0385333846",13818            "note": "Slaughterhouse-Five, Dial"13819          },13820          {13821            "isbn": "0684801221",13822            "note": "The Sun Also Rises, Scribner"13823          },13824          {13825            "isbn": "0394429575",13826            "note": "Gravity's Rainbow, Viking 1973 first edition"13827          },13828          {13829            "isbn": "0385490816",13830            "note": "Fight Club, Norton 1996 first edition"13831          },13832          {13833            "isbn": "0399137580",13834            "note": "Jurassic Park, Knopf 1990 first edition"13835          },13836          {13837            "isbn": "0394549937",13838            "note": "The Silence of the Lambs, St. Martin's 1988 first edition"13839          },13840          {13841            "isbn": "0553380958",13842            "note": "Neuromancer, Ace"13843          },13844          {13845            "isbn": "0345342968",13846            "note": "Fahrenheit 451, Ballantine"13847          },13848          {13849            "isbn": "0525947647",13850            "note": "The Road, Knopf 2006 first edition"13851          }13852        ]13853      },13854      "capabilities": [13855        "images",13856        "catalog"13857      ],13858      "refreshClass": "archive",13859      "domain": "openlibrary.org",13860      "country": "GB",13861      "requires": [],13862      "historicalDepth": "none"13863    },13864    {13865      "id": "optcg",13866      "displayName": "OPTCG API (One Piece Card Game)",13867      "sourceId": "optcgapi",13868      "sourceName": "OPTCG API",13869      "sourceType": "catalog",13870      "sourceUrl": "https://optcgapi.com",13871      "module": "api/optcg",13872      "enginePriority": [13873        "api"13874      ],13875      "categories": [13876        "one_piece_card_game"13877      ],13878      "regions": [13879        "US"13880      ],13881      "languages": [13882        "en"13883      ],13884      "currency": [13885        "USD"13886      ],13887      "supportsListings": false,13888      "supportsSold": false,13889      "supportsAuctions": false,13890      "supportsImages": true,13891      "supportsCatalog": true,13892      "supportsPopulation": false,13893      "supportsLookup": false,13894      "refreshFrequencyMinutes": 1440,13895      "priority": "medium",13896      "trustScore": 0.65,13897      "attributionRequired": true,13898      "termsUrl": "https://optcgapi.com/",13899      "accessNotes": "Open community API (no key): /api/allSets/ then /api/sets/<set_id>/ returning every card of the set with TCGplayer-derived market_price / inventory_price and a date_scraped, used as the observation date (confidence 0.7 / 0.65). Alternate arts share the card code and are distinguished by image id. One request per set, 0.5 s politeness.",13900      "enabled": true,13901      "schemaVersion": "1.0",13902      "config": {},13903      "capabilities": [13904        "images",13905        "catalog"13906      ],13907      "refreshClass": "normal",13908      "domain": "optcgapi.com",13909      "country": "US",13910      "requires": [],13911      "historicalDepth": "none"13912    },13913    {13914      "id": "osenat",13915      "displayName": "Osenat (Fontainebleau) — sale results",13916      "sourceId": "osenat",13917      "sourceName": "Osenat",13918      "sourceType": "auction_house",13919      "sourceUrl": "https://www.osenat.com",13920      "module": "api/osenat",13921      "enginePriority": [13922        "api"13923      ],13924      "categories": [13925        "militaria",13926        "medals",13927        "historical_documents",13928        "autographs",13929        "antiques",13930        "art",13931        "other_watches",13932        "rolex",13933        "omega",13934        "wine",13935        "whisky",13936        "automobiles",13937        "motorcycles",13938        "automotive_memorabilia",13939        "jewelry",13940        "silver",13941        "porcelain",13942        "books",13943        "maps",13944        "coins",13945        "vintage_toys",13946        "royal_memorabilia"13947      ],13948      "regions": [13949        "FR"13950      ],13951      "languages": [13952        "fr"13953      ],13954      "currency": [13955        "EUR"13956      ],13957      "supportsListings": false,13958      "supportsSold": true,13959      "supportsAuctions": true,13960      "supportsImages": true,13961      "supportsCatalog": false,13962      "supportsPopulation": false,13963      "supportsLookup": false,13964      "refreshFrequencyMinutes": 1440,13965      "priority": "medium",13966      "trustScore": 0.9,13967      "attributionRequired": true,13968      "termsUrl": "https://www.osenat.com/conditions-generales-utilisation",13969      "accessNotes": "Osenat (Fontainebleau, Versailles, Paris; Napoleonic/military history, historic souvenirs, watches, wine, classic cars) runs on the Drouot 'site générique' platform. Public pages read: /resultats-ventes-passees?year=YYYY (past sales with online catalogue: title, date 'mercredi 15 juillet 2026 14:00', venue, /catalogue/<id> link) and /catalogue/<id>?offset=N&max=50 (lot cards with number, title, description, cdn.drouot.com image, estimate range, 'Résultat : 2 245 EUR'). Osenat pages state 'Résultats sans frais' → HAMMER prices; the note is read on every page/lot and buyer_premium_included is set from it (null when absent, never assumed). robots.txt disallows only /recherche/*; CGU contain no clause on automated access. Militaria/medals are lawful historical reference data (no weapons offered for sale are ingested as listings — results only). 2.5 s politeness; one index request per year for backfill (2005→today); salesPerRun caps incremental runs. No login, no bidder data.",13970      "enabled": true,13971      "schemaVersion": "1.0",13972      "config": {13973        "years": [13974          202613975        ],13976        "backfillFromYear": 2005,13977        "salesPerRun": 213978      },13979      "capabilities": [13980        "sold_listings",13981        "auction_results",13982        "images",13983        "historical_backfill"13984      ],13985      "refreshClass": "normal",13986      "domain": "osenat.com",13987      "country": "FR",13988      "requires": [],13989      "acquisitionMethod": "server-rendered HTML (Drouot site-générique platform)",13990      "historicalDepth": "decades"13991    },13992    {13993      "id": "overkillshop",13994      "displayName": "OVERKILL",13995      "sourceId": "overkillshop",13996      "sourceName": "OVERKILL",13997      "sourceType": "dealer",13998      "sourceUrl": "https://www.overkillshop.com",13999      "module": "api/overkillshop",14000      "enginePriority": [14001        "api"14002      ],14003      "categories": [14004        "sneakers",14005        "nike_jordan",14006        "adidas_yeezy",14007        "new_balance_asics_other",14008        "designer_toys"14009      ],14010      "regions": [14011        "DE"14012      ],14013      "languages": [14014        "en",14015        "de"14016      ],14017      "currency": [14018        "EUR"14019      ],14020      "supportsListings": true,14021      "supportsSold": false,14022      "supportsAuctions": false,14023      "supportsImages": true,14024      "supportsCatalog": false,14025      "supportsPopulation": false,14026      "supportsLookup": true,14027      "refreshFrequencyMinutes": 1440,14028      "priority": "medium",14029      "trustScore": 0.65,14030      "attributionRequired": true,14031      "termsUrl": "https://www.overkillshop.com/policies/terms-of-service",14032      "accessNotes": "OVERKILL (overkillshop.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (sneaker, jordan-sneaker, adidas-sneaker, new-balance, medicom). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency EUR (/meta.json currency EUR, Shopify.currency rate 1.0), German VAT included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",14033      "enabled": true,14034      "schemaVersion": "1.0",14035      "config": {14036        "currency": "EUR",14037        "seller": "OVERKILL",14038        "location": null,14039        "collections": [14040          {14041            "handle": "sneaker",14042            "categorySlug": "sneakers"14043          },14044          {14045            "handle": "jordan-sneaker",14046            "categorySlug": "nike_jordan",14047            "brand": "Jordan"14048          },14049          {14050            "handle": "adidas-sneaker",14051            "categorySlug": "adidas_yeezy",14052            "brand": "adidas"14053          },14054          {14055            "handle": "new-balance",14056            "categorySlug": "new_balance_asics_other",14057            "brand": "New Balance"14058          },14059          {14060            "handle": "medicom",14061            "categorySlug": "designer_toys",14062            "brand": "Medicom Toy"14063          }14064        ],14065        "rules": [14066          {14067            "match": "jordan",14068            "categorySlug": "nike_jordan",14069            "brand": "Jordan"14070          },14071          {14072            "match": "\\bnike\\b|air max|air force|\\bdunk\\b|\\bsb\\b|blazer|vapormax|huarache|cortez|p-6000|vomero|pegasus|\\bshox\\b|\\bkobe\\b|lebron|\\bnocta\\b|\\bacg\\b|sacai|off-white|travis scott",14073            "categorySlug": "nike_jordan",14074            "brand": "Nike"14075          },14076          {14077            "match": "yeezy",14078            "categorySlug": "adidas_yeezy",14079            "brand": "adidas Yeezy"14080          },14081          {14082            "match": "adidas|\\bsamba\\b|gazelle|spezial|superstar|\\bcampus\\b|\\bforum\\b|ultraboost|\\bnmd\\b|stan smith|adizero|\\by-3\\b|climacool|\\bzx\\b|\\beqt\\b|\\bsl ?72\\b|adistar|megaride|taekwondo|wales bonner",14083            "categorySlug": "adidas_yeezy",14084            "brand": "adidas"14085          },14086          {14087            "match": "new balance|asics|puma|reebok|saucony|salomon|converse|\\bvans\\b|\\bhoka\\b|karhu|mizuno|autry|diadora|\\bveja\\b|clarks|timberland|dr\\.? ?martens|\\bugg\\b|mallet|cleens|umbro|le coq|kangaroos|\\bfila\\b|k-swiss|lacoste|golden goose|balenciaga|\\bdior\\b|gucci|louis vuitton|prada|amiri|herm[eè]s|rick owens|margiela|mcqueen|common projects|axel arigato|represent|loewe|bottega|valentino|givenchy|fendi|burberry|chanel|celine|saint laurent|versace|moncler|birkenstock|\\bon\\b (cloud|running)|cloudmonster|cloudtilt|merrell|keen\\b|ewing|ellesse|kappa|hi-tec|etnies|\\bdc shoes|gola|onitsuka|norda|novesta|stepney|sunnei|camper|mschf|maison mihara|\\bbape\\b|\\bsta\\b",14088            "categorySlug": "new_balance_asics_other"14089          }14090        ],14091        "defaultCategory": null,14092        "exclude": "t-shirt|\\btee\\b|\\btees\\b|hoodie|sweatshirt|crewneck|jacket|\\bcoat\\b|tracksuit|track pants|track jacket|sweatpants|joggers|shorts|jeans|trousers|\\bpants\\b|cargo|\\bcap\\b|\\bhat\\b|beanie|balaclava|socks|\\bbag\\b|backpack|tote|wallet|card holder|\\bbelt\\b|sunglasses|fragrance|perfume|cologne|keyring|lanyard|cleaner|crep protect|protector spray|laces|insole|shoe tree|gift card|jersey|\\bpolo\\b|\\bshirt\\b|knitwear|cardigan|\\bvest\\b|gilet|puffer|scarf|gloves|jewellery|jewelry|\\bchain\\b|bracelet|necklace|\\bring\\b|umbrella|towel|doormat|\\brug\\b|candle|\\bmug\\b|phone case|airpods|dress\\b|skirt|leggings|bodysuit|swim|bikini|underwear|boxers|slippers|flip[- ]?flops?|sandals?\\b|\\bslides?\\b|\\bmules?\\b|crocs|clog|\\| (apparel|clothing|accessories|sneaker care|headwear) \\||shoe care|sports equipment|graphic sketch marker|football fan",14093        "keepOutOfStock": true,14094        "pageSize": 250,14095        "fetchBarcodes": false,14096        "wholeShop": false14097      },14098      "capabilities": [14099        "live_listings",14100        "images",14101        "url_lookup"14102      ],14103      "refreshClass": "normal",14104      "domain": "overkillshop.com",14105      "country": "DE",14106      "requires": [],14107      "acquisitionMethod": "Shopify storefront products.json (public JSON)",14108      "historicalDepth": "none"14109    },14110    {14111      "id": "pamono",14112      "displayName": "Pamono (vintage design listings, USD storefront)",14113      "sourceId": "pamono",14114      "sourceName": "Pamono",14115      "sourceType": "marketplace",14116      "sourceUrl": "https://www.pamono.com",14117      "module": "api/pamono",14118      "enginePriority": [14119        "api"14120      ],14121      "categories": [14122        "design_furniture",14123        "antiques",14124        "porcelain",14125        "glass_crystal",14126        "silver",14127        "clocks",14128        "jewelry",14129        "other_watches",14130        "art"14131      ],14132      "regions": [14133        "DE",14134        "US",14135        "EU"14136      ],14137      "languages": [14138        "en"14139      ],14140      "currency": [14141        "USD"14142      ],14143      "supportsListings": true,14144      "supportsSold": false,14145      "supportsAuctions": false,14146      "supportsImages": true,14147      "supportsCatalog": false,14148      "supportsPopulation": false,14149      "supportsLookup": false,14150      "refreshFrequencyMinutes": 1440,14151      "priority": "low",14152      "trustScore": 0.7,14153      "attributionRequired": true,14154      "termsUrl": "https://www.pamono.com/terms",14155      "accessNotes": "Pamono (Berlin; the pamono.com store prices in USD, the .eu/.de/.co.uk stores in EUR/GBP) renders its category grids server-side: /furniture, /lighting, /home-accessories and /jewelry-watches (?p=N, about 100 <article class=\"product-card\" data-sku> cards per page) expose the product link, title, price (itemprop=price content=…, optional old-price on sale items) and the cdn20.pamono.com image. We read only those category pages; the product pages, /catalog/ (disallowed), /catalogsearch/, wishlist/customer/checkout paths and the /terms/ page (also disallowed for crawlers, hence not reviewed automatically) are never fetched. robots.txt (User-agent: *) allows the category paths; other bots are given Crawl-Delay 5–7 s, so we wait 4 s between requests with a single connection. No anti-bot challenge for the honest bot UA. Asking prices only → listings; the store currency is read from the inline `add.state.currencyCode` bootstrap and cross-checked with the price symbol. Designer/maker is parsed from the title ('… by Maison Jansen', '… from Greaves & Thomas') and decades ('1970s') are kept as metadata rather than a year. Magento repeats the last page for out-of-range ?p= values, which the crawler detects to stop pagination.",14156      "enabled": true,14157      "schemaVersion": "1.0",14158      "config": {14159        "pagesPerSeed": 2,14160        "seedsPerRun": 2,14161        "seeds": [14162          {14163            "path": "/furniture",14164            "vertical": "furniture"14165          },14166          {14167            "path": "/lighting",14168            "vertical": "lighting"14169          },14170          {14171            "path": "/home-accessories",14172            "vertical": "decor"14173          },14174          {14175            "path": "/jewelry-watches",14176            "vertical": "jewelry"14177          }14178        ]14179      },14180      "capabilities": [14181        "live_listings",14182        "images"14183      ],14184      "refreshClass": "normal",14185      "domain": "pamono.com",14186      "country": "DE",14187      "requires": [],14188      "acquisitionMethod": "public HTML (Magento category grid, itemprop price)",14189      "historicalDepth": "none"14190    },14191    {14192      "id": "pba-galleries",14193      "displayName": "PBA Galleries (prices realized)",14194      "sourceId": "pba-galleries",14195      "sourceName": "PBA Galleries",14196      "sourceType": "auction_house",14197      "sourceUrl": "https://www.pbagalleries.com",14198      "module": "firecrawl/pba-galleries",14199      "enginePriority": [14200        "firecrawl"14201      ],14202      "categories": [14203        "books",14204        "comics",14205        "marvel_comics",14206        "dc_comics",14207        "independent_comics",14208        "photography",14209        "maps",14210        "movie_posters",14211        "art",14212        "historical_documents"14213      ],14214      "regions": [14215        "US"14216      ],14217      "languages": [14218        "en"14219      ],14220      "currency": [14221        "USD"14222      ],14223      "supportsListings": false,14224      "supportsSold": true,14225      "supportsAuctions": false,14226      "supportsImages": true,14227      "supportsCatalog": false,14228      "supportsPopulation": false,14229      "supportsLookup": false,14230      "refreshFrequencyMinutes": 1440,14231      "priority": "medium",14232      "trustScore": 0.85,14233      "attributionRequired": true,14234      "termsUrl": "https://www.pbagalleries.com/terms-conditions/",14235      "accessNotes": "Public auction list (pbagalleries.com/auctions/?page=N: sale number, title, date, catalog id) and closed catalogs (/auctions/catalog/id/<id>?page=N, 'Sold for $X' + 'Status Sold' per lot with title/publisher/date fields) rendered through Firecrawl (plain HTTPS gets a Cloudflare interstitial; not bypassed; robots.txt allows the site). PBA's realized prices include the 25% buyer's premium (verified: every price is a hammer bid × 1.25) → buyer_premium_included=true. Category from the sale title (comics/books/photographs/maps/posters). 1 credit per page, 2 s politeness delay.",14236      "enabled": true,14237      "schemaVersion": "1.0",14238      "config": {14239        "auctionsPerRun": 2,14240        "catalogPagesPerAuction": 514241      },14242      "capabilities": [14243        "sold_listings",14244        "images"14245      ],14246      "refreshClass": "normal",14247      "domain": "pbagalleries.com",14248      "country": "US",14249      "requires": [],14250      "historicalDepth": "none"14251    },14252    {14253      "id": "pcarmarket",14254      "displayName": "PCARMARKET (sold auctions)",14255      "sourceId": "pcarmarket",14256      "sourceName": "PCARMARKET",14257      "sourceType": "auction_house",14258      "sourceUrl": "https://www.pcarmarket.com",14259      "module": "api/pcarmarket",14260      "enginePriority": [14261        "api"14262      ],14263      "categories": [14264        "automobiles",14265        "motorcycles",14266        "automotive_memorabilia",14267        "rolex",14268        "omega",14269        "other_watches"14270      ],14271      "regions": [14272        "US",14273        "CA"14274      ],14275      "languages": [14276        "en"14277      ],14278      "currency": [14279        "USD"14280      ],14281      "supportsListings": false,14282      "supportsSold": true,14283      "supportsAuctions": false,14284      "supportsImages": true,14285      "supportsCatalog": false,14286      "supportsPopulation": false,14287      "supportsLookup": false,14288      "refreshFrequencyMinutes": 360,14289      "priority": "high",14290      "trustScore": 0.85,14291      "attributionRequired": true,14292      "termsUrl": "https://www.pcarmarket.com/terms/",14293      "accessNotes": "PCARMARKET's public results page (/results/) is fed by the same JSON endpoint we read: GET /api/auctions/?status=sold&type=all&sort_by=ending_soon&limit=50&page=N (plain HTTPS, 0 credits; robots.txt: 'User-agent: * Allow: /'). Each item has title, vehicle {make, model, year}, high_bid (USD winning bid), end_date, status 'Sold', country, images. Price = winning bid; PCARMARKET charges the buyer a separate 5% fee, so buyer_premium_included=false. Items with a vehicle object are cars/motorcycles; other lots are classified from the title (watches by brand keyword → watch slugs, everything else → automotive_memorabilia: signs, models, parts, helmets). Incremental runs stop at the newest end_date seen previously; backfill mode walks older pages (≈7,900 sold lots as of 2026-09).",14294      "enabled": true,14295      "schemaVersion": "1.0",14296      "config": {14297        "pagesPerRun": 10,14298        "limit": 5014299      },14300      "capabilities": [14301        "sold_listings",14302        "images"14303      ],14304      "refreshClass": "normal",14305      "domain": "pcarmarket.com",14306      "country": "US",14307      "requires": [],14308      "historicalDepth": "none"14309    },14310    {14311      "id": "pcgs-cert",14312      "displayName": "PCGS cert verification",14313      "sourceId": "pcgs",14314      "sourceName": "PCGS (Professional Coin Grading Service)",14315      "sourceType": "grading_company",14316      "sourceUrl": "https://www.pcgs.com/cert",14317      "module": "firecrawl/pcgs-cert",14318      "enginePriority": [14319        "firecrawl",14320        "scrapfly"14321      ],14322      "categories": [14323        "coins",14324        "banknotes"14325      ],14326      "regions": [14327        "US"14328      ],14329      "languages": [14330        "en"14331      ],14332      "currency": [14333        "USD"14334      ],14335      "supportsListings": false,14336      "supportsSold": false,14337      "supportsAuctions": false,14338      "supportsImages": true,14339      "supportsCatalog": true,14340      "supportsPopulation": true,14341      "supportsLookup": true,14342      "refreshFrequencyMinutes": 10080,14343      "priority": "high",14344      "trustScore": 0.95,14345      "attributionRequired": true,14346      "termsUrl": "https://www.pcgs.com/terms-of-use",14347      "accessNotes": "Reads ONLY the public 'PCGS Cert Verification' page https://www.pcgs.com/cert/<cert> (7–8 digit certs; /cert/verify?certno= accepted by lookup) for supplied cert numbers; no enumeration. pcgs.com serves plain HTTP (incl. robots.txt) a Cloudflare managed-challenge 403, so the page is rendered by Firecrawl (1 credit) with Scrapfly fallback — the public page any visitor sees, no login. Fields read: coin description (e.g. '1922-S $1'), cert, grade, PCGS # (deterministic pcgs_number, links CoinFacts), price-guide value (metadata only, never a sale), date/mintmark, denomination, mintage, region, holder type, the cert image and the on-page 'Population' / 'Pop Higher' counts (partial population_report, population_scope=grade_and_higher, sourceUrl = the linked /pop/pcgsnolookup page). Deliberately NOT fetched: PCGS Auction Prices Realized, the Set Registry and the public PCGS API (api.pcgs.com requires an account token — a gated alternative for the future). A not-found cert yields zero records.",14348      "enabled": true,14349      "schemaVersion": "1.0",14350      "config": {14351        "grader": "pcgs",14352        "certs": [14353          "47044550",14354          "12446915"14355        ],14356        "maxPerRun": 5014357      },14358      "capabilities": [14359        "cert_lookup",14360        "grading_population",14361        "catalog",14362        "url_lookup",14363        "images"14364      ],14365      "refreshClass": "archive",14366      "domain": "pcgs.com",14367      "country": "US",14368      "requires": [],14369      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",14370      "historicalDepth": "none"14371    },14372    {14373      "id": "pcgs-priceguide",14374      "displayName": "PCGS Price Guide (US coins)",14375      "sourceId": "pcgs",14376      "sourceName": "PCGS",14377      "sourceType": "grading_company",14378      "sourceUrl": "https://www.pcgs.com",14379      "module": "firecrawl/pcgs-priceguide",14380      "enginePriority": [14381        "firecrawl",14382        "scrapfly"14383      ],14384      "categories": [14385        "coins"14386      ],14387      "regions": [14388        "US"14389      ],14390      "languages": [14391        "en"14392      ],14393      "currency": [14394        "USD"14395      ],14396      "supportsListings": false,14397      "supportsSold": false,14398      "supportsAuctions": false,14399      "supportsImages": false,14400      "supportsCatalog": true,14401      "supportsPopulation": false,14402      "supportsLookup": false,14403      "refreshFrequencyMinutes": 10080,14404      "priority": "low",14405      "trustScore": 0.9,14406      "attributionRequired": true,14407      "termsUrl": "https://www.pcgs.com/legal",14408      "accessNotes": "Public PCGS Price Guide category pages (pcgs.com/prices/detail/<series>/<id>/most-active) — no login required; robots.txt does not restrict /prices. Plain HTTPS is refused by the CDN (403) so pages are rendered through Firecrawl (1 credit per category page ≈ 100 coins × 10 grades). Values are PCGS retail guide values in USD per grade (columns 4…70 and '+' grades), dated with the page's 'Last Update' stamp. Stored as guide_value observations with grader 'pcgs' and grade like MS65 / PR65 / MS65+; PCGS coin numbers are kept as identifiers (pcgs_number). Auction Prices Realized and the Population Report on pcgs.com require a Collectors account and are not fetched.",14409      "enabled": true,14410      "schemaVersion": "1.0",14411      "config": {14412        "seeds": [14413          "morgan-dollar/744",14414          "peace-dollar/26",14415          "lincoln-cent-wheat-reverse/46",14416          "indian-cent/44",14417          "buffalo-nickel/83",14418          "mercury-dime/703",14419          "walking-liberty-half-dollar/733",14420          "standing-liberty-quarter/111",14421          "franklin-half-dollar/734",14422          "kennedy-half-dollar/125",14423          "washington-quarter/112",14424          "trade-dollar/743",14425          "flying-eagle-cent/664",14426          "barber-half-dollar/732",14427          "silver-eagles/939",14428          "liberty-seated-dollar/29"14429        ],14430        "designations": [14431          "ms"14432        ]14433      },14434      "capabilities": [14435        "catalog"14436      ],14437      "refreshClass": "archive",14438      "domain": "pcgs.com",14439      "country": "US",14440      "requires": [],14441      "historicalDepth": "none"14442    },14443    {14444      "id": "peyton-street-pens",14445      "displayName": "Peyton Street Pens (vintage & modern pen dealer)",14446      "sourceId": "peyton-street-pens",14447      "sourceName": "Peyton Street Pens",14448      "sourceType": "dealer",14449      "sourceUrl": "https://www.peytonstreetpens.com",14450      "module": "api/peyton-street-pens",14451      "enginePriority": [14452        "api"14453      ],14454      "categories": [14455        "pens",14456        "lighters"14457      ],14458      "regions": [14459        "US"14460      ],14461      "languages": [14462        "en"14463      ],14464      "currency": [14465        "USD"14466      ],14467      "supportsListings": true,14468      "supportsSold": false,14469      "supportsAuctions": false,14470      "supportsImages": true,14471      "supportsCatalog": false,14472      "supportsPopulation": false,14473      "supportsLookup": false,14474      "refreshFrequencyMinutes": 1440,14475      "priority": "low",14476      "trustScore": 0.75,14477      "attributionRequired": true,14478      "termsUrl": "https://www.peytonstreetpens.com/store-policies/",14479      "accessNotes": "Peyton Street Pens (Santa Cruz, California; large restored-vintage and new fountain-pen inventory) runs on BigCommerce, which has no public products JSON; the category pages (/<category>/?page=N, 24 cards) are server-rendered and each <li class=\"product\"> card exposes the product URL, title (model, era, colour, nib, condition in parentheses), SKU, brand link, price (USD, 'price--withoutTax') and the cdn11.bigcommerce.com image. We read only those category pages for the configured vintage/collectible categories (Parker, Waterman, Wahl-Eversharp, Sheaffer, Montblanc, Pelikan, Pilot/Namiki, Omas, Conway Stewart, special & limited editions…); product pages (which carry a JSON-LD Product with the same data), /search.php, cart/account/checkout and the '_bc_fsnf' faceted URLs disallowed by robots.txt are never fetched. robots.txt (User-agent: *) allows category paths; named AI crawlers (GPTBot, ClaudeBot…) are disallowed but RareIndexBot is not, and the site answered 200 to the honest UA. Store policies describe grading (the '(Near Mint, Restored)' suffix) and contain no automated-access clause. Dealer asking prices only → listings; accessories/consumables (ink, converters, refills, parts, nibs) are filtered out; the '(1950s)' era is kept as metadata, exact years as `year`. 3 s between requests, one connection, 4 categories × 2 pages per daily run with seed rotation.",14480      "enabled": true,14481      "schemaVersion": "1.0",14482      "config": {14483        "pagesPerSeed": 2,14484        "seedsPerRun": 4,14485        "seeds": [14486          {14487            "path": "/pens-by-brand/parker/",14488            "brand": "Parker"14489          },14490          {14491            "path": "/pens-by-brand/waterman/",14492            "brand": "Waterman"14493          },14494          {14495            "path": "/pens-by-brand/wahl/",14496            "brand": "Wahl-Eversharp"14497          },14498          {14499            "path": "/balance-non-white-dot/",14500            "brand": "Sheaffer"14501          },14502          {14503            "path": "/pen-makers-usa/sheaffer/balance-white-dot/",14504            "brand": "Sheaffer"14505          },14506          {14507            "path": "/pen-makers-usa/sheaffer/snorkels/",14508            "brand": "Sheaffer"14509          },14510          {14511            "path": "/imperials/",14512            "brand": "Sheaffer"14513          },14514          {14515            "path": "/pen-makers-europe/montblanc/",14516            "brand": "Montblanc"14517          },14518          {14519            "path": "/pen-makers-europe/pelikan/",14520            "brand": "Pelikan"14521          },14522          {14523            "path": "/pen-makers-europe/omas/",14524            "brand": "Omas"14525          },14526          {14527            "path": "/pen-makers-europe/conway-stewart/",14528            "brand": "Conway Stewart"14529          },14530          {14531            "path": "/pen-makers-asia/pilot/namiki/",14532            "brand": "Pilot Namiki"14533          },14534          {14535            "path": "/pen-makers-asia/platinum-nakaya/",14536            "brand": "Platinum"14537          },14538          {14539            "path": "/pen-makers-usa/conklin/",14540            "brand": "Conklin"14541          },14542          {14543            "path": "/pen-makers-usa/esterbrook/",14544            "brand": "Esterbrook"14545          },14546          {14547            "path": "/special-and-limited-editions/"14548          }14549        ]14550      },14551      "capabilities": [14552        "live_listings",14553        "images"14554      ],14555      "refreshClass": "normal",14556      "domain": "peytonstreetpens.com",14557      "country": "US",14558      "requires": [],14559      "acquisitionMethod": "public HTML (BigCommerce category grid cards)",14560      "historicalDepth": "none"14561    },14562    {14563      "id": "phillips-art",14564      "displayName": "Phillips Art, Editions, Design & Photographs (auction results)",14565      "sourceId": "phillips",14566      "sourceName": "Phillips",14567      "sourceType": "auction_house",14568      "sourceUrl": "https://www.phillips.com",14569      "module": "firecrawl/phillips-art",14570      "enginePriority": [14571        "firecrawl",14572        "scrapfly"14573      ],14574      "categories": [14575        "art",14576        "contemporary_art",14577        "photography",14578        "design_furniture",14579        "jewelry",14580        "luxury_handbags"14581      ],14582      "regions": [14583        "US",14584        "GB",14585        "HK",14586        "CH"14587      ],14588      "languages": [14589        "en"14590      ],14591      "currency": [14592        "USD",14593        "GBP",14594        "HKD",14595        "CHF",14596        "EUR"14597      ],14598      "supportsListings": false,14599      "supportsSold": true,14600      "supportsAuctions": true,14601      "supportsImages": true,14602      "supportsCatalog": false,14603      "supportsPopulation": false,14604      "supportsLookup": false,14605      "refreshFrequencyMinutes": 10080,14606      "priority": "medium",14607      "trustScore": 0.95,14608      "attributionRequired": true,14609      "termsUrl": "https://www.phillips.com/about/terms",14610      "accessNotes": "Same public mechanism as phillips-watches (past-sales JSON on /auctions/past over plain HTTPS, then one Firecrawl render per sale page, 1 credit) applied to the Editions, Design, 20th Century & Contemporary Art, Photographs, Jewels and Handbags departments. Prices realised are published by Phillips including buyer's premium (buyer_premium_included=true). Sale date = sale end date. robots.txt disallows only /search and filter paths; no login, no bidder data. 3 s politeness delay; salesPerRun caps each run.",14611      "enabled": true,14612      "schemaVersion": "1.0",14613      "config": {14614        "pastAuctionsUrl": "https://www.phillips.com/auctions/past",14615        "salesPerRun": 4,14616        "departments": [14617          {14618            "filter": "editions",14619            "category": "contemporary_art"14620          },14621          {14622            "filter": "design",14623            "category": "design_furniture"14624          },14625          {14626            "filter": "photograph",14627            "category": "photography"14628          },14629          {14630            "filter": "contemporary art",14631            "category": "contemporary_art"14632          },14633          {14634            "filter": "jewels",14635            "category": "jewelry"14636          },14637          {14638            "filter": "handbags",14639            "category": "luxury_handbags"14640          }14641        ]14642      },14643      "capabilities": [14644        "sold_listings",14645        "auction_results",14646        "images"14647      ],14648      "refreshClass": "archive",14649      "domain": "phillips.com",14650      "country": "US",14651      "requires": [],14652      "historicalDepth": "none"14653    },14654    {14655      "id": "phillips-watches",14656      "displayName": "Phillips Watches (auction results)",14657      "sourceId": "phillips",14658      "sourceName": "Phillips",14659      "sourceType": "auction_house",14660      "sourceUrl": "https://www.phillips.com",14661      "module": "firecrawl/phillips-watches",14662      "enginePriority": [14663        "firecrawl",14664        "scrapfly"14665      ],14666      "categories": [14667        "watches",14668        "rolex",14669        "patek_philippe",14670        "audemars_piguet",14671        "omega",14672        "other_watches"14673      ],14674      "regions": [14675        "CH",14676        "US",14677        "HK",14678        "GB"14679      ],14680      "languages": [14681        "en"14682      ],14683      "currency": [14684        "CHF",14685        "USD",14686        "HKD",14687        "GBP",14688        "EUR"14689      ],14690      "supportsListings": false,14691      "supportsSold": true,14692      "supportsAuctions": true,14693      "supportsImages": true,14694      "supportsCatalog": false,14695      "supportsPopulation": false,14696      "supportsLookup": false,14697      "refreshFrequencyMinutes": 10080,14698      "priority": "high",14699      "trustScore": 0.95,14700      "attributionRequired": true,14701      "termsUrl": "https://www.phillips.com/about/terms",14702      "accessNotes": "Past watch sales are discovered from the public /auctions/past page (plain HTTPS; embedded JSON with saleNumber, title, end date, location). Each sale page is rendered through Firecrawl (JS wait ~6 s, 1 credit) to read the public lot list: lot number, maker, reference, model, estimate and 'Sold For' (Phillips publishes prices realised including buyer's premium). robots.txt disallows only /search and filter paths. No login, no bidder data. Large sales may lazy-load beyond the first ~70 lots — coverage is recorded per run.",14703      "enabled": true,14704      "schemaVersion": "1.0",14705      "config": {14706        "pastAuctionsUrl": "https://www.phillips.com/auctions/past",14707        "salesPerRun": 6,14708        "titleFilter": "watch"14709      },14710      "capabilities": [14711        "sold_listings",14712        "auction_results",14713        "images"14714      ],14715      "refreshClass": "archive",14716      "domain": "phillips.com",14717      "country": "CH",14718      "requires": [],14719      "historicalDepth": "none"14720    },14721    {14722      "id": "piasa",14723      "displayName": "PIASA (Paris) — résultats",14724      "sourceId": "piasa",14725      "sourceName": "PIASA",14726      "sourceType": "auction_house",14727      "sourceUrl": "https://www.piasa.fr",14728      "module": "api/piasa",14729      "enginePriority": [14730        "api"14731      ],14732      "categories": [14733        "design_furniture",14734        "contemporary_art",14735        "art",14736        "photography",14737        "jewelry",14738        "other_watches",14739        "rolex",14740        "patek_philippe",14741        "audemars_piguet",14742        "antiques",14743        "porcelain",14744        "glass_crystal",14745        "luxury_handbags",14746        "books",14747        "wine"14748      ],14749      "regions": [14750        "FR"14751      ],14752      "languages": [14753        "fr",14754        "en"14755      ],14756      "currency": [14757        "EUR"14758      ],14759      "supportsListings": false,14760      "supportsSold": true,14761      "supportsAuctions": true,14762      "supportsImages": true,14763      "supportsCatalog": false,14764      "supportsPopulation": false,14765      "supportsLookup": false,14766      "refreshFrequencyMinutes": 1440,14767      "priority": "medium",14768      "trustScore": 0.9,14769      "attributionRequired": true,14770      "termsUrl": "https://www.piasa.fr/fr/conditions-generales-de-vente",14771      "accessNotes": "PIASA (Paris; 20th-century design, contemporary art, jewellery & watches, Asian and African art). Public pages read: /fr/ventes-passees (finished sales of the current year, /fr/auctions/<slug>) and each sale page, which inlines all lots as product cards (lot number, title, sub-title, image, 'Estimation 6 000 / 8 000 €', 'Résultat 23 878 €') plus a Livewire wire:snapshot JSON (start/end dates, place, sale number). PIASA labels results 'Résultat (Frais de vente inclus)' → buyer_premium_included=true, EUR. The Livewire POST endpoint (/livewire/update) is never called; only GET pages. robots.txt disallows /search, /account, /login only; CGU contain no clause on automated access (CGV reserve reproduction rights on catalogue content — we store titles, prices and links, not catalogue essays). Older years are only reachable through the Livewire year filter → historical depth is the current year (months). 2.5 s politeness; salesPerRun caps incremental runs. No login, no bidder data.",14772      "enabled": true,14773      "schemaVersion": "1.0",14774      "config": {14775        "pastSalesUrl": "https://www.piasa.fr/fr/ventes-passees",14776        "salesPerRun": 314777      },14778      "capabilities": [14779        "sold_listings",14780        "auction_results",14781        "images",14782        "historical_backfill"14783      ],14784      "refreshClass": "normal",14785      "domain": "piasa.fr",14786      "country": "FR",14787      "requires": [],14788      "acquisitionMethod": "server-rendered HTML (Laravel/Livewire, all lots inlined)",14789      "historicalDepth": "months"14790    },14791    {14792      "id": "pmg-cert",14793      "displayName": "PMG cert verification",14794      "sourceId": "pmg",14795      "sourceName": "PMG (Paper Money Guaranty)",14796      "sourceType": "grading_company",14797      "sourceUrl": "https://www.pmgnotes.com/certlookup/",14798      "module": "firecrawl/pmg-cert",14799      "enginePriority": [14800        "firecrawl",14801        "scrapfly"14802      ],14803      "categories": [14804        "banknotes"14805      ],14806      "regions": [14807        "US"14808      ],14809      "languages": [14810        "en"14811      ],14812      "currency": [14813        "USD"14814      ],14815      "supportsListings": false,14816      "supportsSold": false,14817      "supportsAuctions": false,14818      "supportsImages": true,14819      "supportsCatalog": true,14820      "supportsPopulation": true,14821      "supportsLookup": true,14822      "refreshFrequencyMinutes": 10080,14823      "priority": "medium",14824      "trustScore": 0.95,14825      "attributionRequired": true,14826      "termsUrl": "https://www.pmgnotes.com/terms-of-use/",14827      "accessNotes": "Reads ONLY the public 'Verify PMG Certification' page https://www.pmgnotes.com/certlookup/<cert>/<grade>/ for supplied certs; no enumeration. PMG needs the holder grade in the URL (1–70 or NonNumeric) — without it the empty form renders and zero records are produced, so seeds are 'cert/grade' (e.g. 8067968-054/67). pmgnotes.com/robots.txt: 'User-agent: * Allow: /' (only AhrefsBot disallowed). Plain HTTP returns a Cloudflare managed-challenge 403, so the page is rendered by Firecrawl (1 credit) with Scrapfly fallback — public, no login. Fields read: cert, note description, Pick/catalog number (identifiers.pick_number), serial number (metadata), region, grade (+EPQ), grade date, signatures/vignettes, comments, the two note images and the on-page 'Total Graded by PMG: In <grade>: n / In Higher Grades: m' counts (partial population_report, sourceUrl = the linked public population page). Deliberately NOT fetched: PMG Registry and the full population report. A not-found cert (or a wrong grade) yields zero records.",14828      "enabled": true,14829      "schemaVersion": "1.0",14830      "config": {14831        "grader": "pmg",14832        "certs": [14833          "8067968-054/67"14834        ],14835        "maxPerRun": 5014836      },14837      "capabilities": [14838        "cert_lookup",14839        "grading_population",14840        "catalog",14841        "url_lookup",14842        "images"14843      ],14844      "refreshClass": "archive",14845      "domain": "pmgnotes.com",14846      "country": "US",14847      "requires": [],14848      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",14849      "historicalDepth": "none"14850    },14851    {14852      "id": "pokemonprice",14853      "displayName": "PokemonPrice (graded Pokémon price guide)",14854      "sourceId": "pokemonprice",14855      "sourceName": "PokemonPrice.com",14856      "sourceType": "pricing_guide",14857      "sourceUrl": "https://www.pokemonprice.com",14858      "module": "api/pokemonprice",14859      "enginePriority": [14860        "api",14861        "firecrawl"14862      ],14863      "categories": [14864        "pokemon"14865      ],14866      "regions": [14867        "US"14868      ],14869      "languages": [14870        "en"14871      ],14872      "currency": [14873        "USD"14874      ],14875      "supportsListings": false,14876      "supportsSold": false,14877      "supportsAuctions": false,14878      "supportsImages": true,14879      "supportsCatalog": true,14880      "supportsPopulation": false,14881      "supportsLookup": true,14882      "refreshFrequencyMinutes": 2880,14883      "priority": "medium",14884      "trustScore": 0.7,14885      "attributionRequired": true,14886      "termsUrl": "https://www.pokemonprice.com/about-us",14887      "accessNotes": "Public server-rendered card pages (robots.txt allows '/' for generic agents; Content-Signal ai-train=no respected). Each card page embeds, in its React Server Components payload, a per-grade price model (Raw, PSA 1–10, BGS, CGC: fair/low/high price, model confidence, last sale date) derived from eBay and other public sold listings, plus monthly transaction counts. Emitted as price_observations 'guide_value' (+ low/high) per grade with the model confidence (capped 0.8) and the monthly transaction count as sampleSize — not transactions. Set naming follows pokemontcg ('Base Set', 'Jungle'…); edition suffixes (1st Edition, Shadowless) become the variant so assets merge with the API catalogs. ~167 set lists, ~25k card pages; politeness 1.5 s, `maxCardsPerRun` caps a run and the cursor rotates through sets.",14888      "enabled": true,14889      "schemaVersion": "1.0",14890      "config": {14891        "seeds": [],14892        "maxCardsPerRun": 300,14893        "priceKinds": [14894          "guide_value",14895          "low",14896          "high"14897        ]14898      },14899      "capabilities": [14900        "images",14901        "catalog",14902        "url_lookup"14903      ],14904      "refreshClass": "archive",14905      "domain": "pokemonprice.com",14906      "country": "US",14907      "requires": [],14908      "historicalDepth": "none"14909    },14910    {14911      "id": "pokemontcg",14912      "displayName": "Pokémon TCG API (pokemontcg.io)",14913      "sourceId": "pokemontcg",14914      "sourceName": "Pokémon TCG API",14915      "sourceType": "catalog",14916      "sourceUrl": "https://pokemontcg.io",14917      "module": "api/pokemontcg",14918      "enginePriority": [14919        "api",14920        "feed"14921      ],14922      "categories": [14923        "pokemon"14924      ],14925      "regions": [14926        "US",14927        "EU"14928      ],14929      "languages": [14930        "en"14931      ],14932      "currency": [14933        "USD",14934        "EUR"14935      ],14936      "supportsListings": false,14937      "supportsSold": false,14938      "supportsAuctions": false,14939      "supportsImages": true,14940      "supportsCatalog": true,14941      "supportsPopulation": false,14942      "supportsLookup": false,14943      "refreshFrequencyMinutes": 1440,14944      "priority": "high",14945      "trustScore": 0.8,14946      "attributionRequired": true,14947      "termsUrl": "https://docs.pokemontcg.io/",14948      "accessNotes": "Public REST API v2 (https://api.pokemontcg.io/v2). Optional X-Api-Key (POKEMONTCG_API_KEY) raises limits (20k/day) — without a key ~1k/day and 30/min. Crawl = sets, then cards per set (pageSize 250, cursor {setIndex,page}). The API is intermittently unavailable (5xx); the connector retries with backoff and falls back to the maintainers' public GitHub mirror (PokemonTCG/pokemon-tcg-data, same card schema, no prices) for the catalog when the API keeps failing. Prices are TCGplayer (USD, per printing variant: normal/holofoil/reverseHolofoil/1stEdition…) and Cardmarket (EUR) daily aggregates with their own updatedAt → stored as price_observations, never as sales. Pokémon © Nintendo/Creatures/GAME FREAK; data attributed to pokemontcg.io.",14949      "enabled": true,14950      "schemaVersion": "1.0",14951      "config": {14952        "pageSize": 250,14953        "requestIntervalMs": 2100,14954        "mirrorBase": "https://raw.githubusercontent.com/PokemonTCG/pokemon-tcg-data/master"14955      },14956      "capabilities": [14957        "images",14958        "catalog"14959      ],14960      "refreshClass": "normal",14961      "domain": "pokemontcg.io",14962      "country": "US",14963      "requires": [],14964      "historicalDepth": "none"14965    },14966    {14967      "id": "potter-auctions",14968      "displayName": "Potter & Potter Auctions (prices realized)",14969      "sourceId": "potter-auctions",14970      "sourceName": "Potter & Potter Auctions",14971      "sourceType": "auction_house",14972      "sourceUrl": "https://auction.potterauctions.com",14973      "module": "api/potter-auctions",14974      "enginePriority": [14975        "api",14976        "firecrawl"14977      ],14978      "categories": [14979        "playing_cards",14980        "casino_memorabilia",14981        "advertising",14982        "movie_posters",14983        "movie_memorabilia",14984        "books",14985        "photography",14986        "art",14987        "contemporary_art",14988        "vending_machines",14989        "vintage_toys",14990        "antiques",14991        "historical_documents",14992        "autographs",14993        "music_memorabilia",14994        "sports_memorabilia"14995      ],14996      "regions": [14997        "US"14998      ],14999      "languages": [15000        "en"15001      ],15002      "currency": [15003        "USD"15004      ],15005      "supportsListings": false,15006      "supportsSold": true,15007      "supportsAuctions": false,15008      "supportsImages": true,15009      "supportsCatalog": false,15010      "supportsPopulation": false,15011      "supportsLookup": false,15012      "refreshFrequencyMinutes": 720,15013      "priority": "medium",15014      "trustScore": 0.9,15015      "attributionRequired": true,15016      "termsUrl": "https://auction.potterauctions.com/terms-conditions",15017      "accessNotes": "Plain HTTPS, 0 credits. robots.txt only disallows /s3cr3t/. Sources: the public past-auction list (auction.potterauctions.com/auctions/past?page=N — event id, title, start date) and each closed auction's catalog pages (/auctions/potter-potter/<slug>-<id>/catalog?page=N, ~47 lots/page, server-rendered on the Bidsquare platform) whose lot cards show 'Sold for $X' (winning bid = hammer, buyer's premium NOT included → buyer_premium_included=false), estimate, bid count, image and lot URL; unsold/passed lots are skipped. Sale date = the auction's published start date. Categories from the auction title (department) plus lot-title keywords; Potter's core magicana/conjuring apparatus falls back to 'antiques' with metadata.department. 2 s politeness delay.",15018      "enabled": true,15019      "schemaVersion": "1.0",15020      "config": {15021        "auctionsPerRun": 2,15022        "pagesPerAuction": 12,15023        "listPagesPerRun": 115024      },15025      "capabilities": [15026        "sold_listings",15027        "images"15028      ],15029      "refreshClass": "normal",15030      "domain": "auction.potterauctions.com",15031      "country": "US",15032      "requires": [],15033      "historicalDepth": "none"15034    },15035    {15036      "id": "pricecharting",15037      "displayName": "PriceCharting",15038      "sourceId": "pricecharting",15039      "sourceName": "PriceCharting",15040      "sourceType": "pricing_guide",15041      "sourceUrl": "https://www.pricecharting.com",15042      "module": "api/pricecharting",15043      "enginePriority": [15044        "api",15045        "firecrawl",15046        "scrapfly"15047      ],15048      "categories": [15049        "video_games",15050        "nintendo_games",15051        "sega_games",15052        "playstation_games",15053        "xbox_games",15054        "atari_retro_games",15055        "pc_games",15056        "lego_sets",15057        "funko",15058        "comics",15059        "marvel_comics",15060        "dc_comics",15061        "independent_comics",15062        "trading_cards",15063        "pokemon",15064        "magic_the_gathering",15065        "yugioh"15066      ],15067      "regions": [15068        "US"15069      ],15070      "languages": [15071        "en"15072      ],15073      "currency": [15074        "USD"15075      ],15076      "supportsListings": false,15077      "supportsSold": true,15078      "supportsAuctions": false,15079      "supportsImages": true,15080      "supportsCatalog": true,15081      "supportsPopulation": false,15082      "supportsLookup": true,15083      "refreshFrequencyMinutes": 1440,15084      "priority": "high",15085      "trustScore": 0.7,15086      "attributionRequired": true,15087      "termsUrl": "https://www.pricecharting.com/page/terms-of-service",15088      "accessNotes": "Public product pages fetched over plain HTTPS with the RareIndex user agent (robots.txt only disallows /buy, /publish-offer, /stripe-connect). Each product page exposes PriceCharting guide values per condition and a table of recently completed eBay sales (date, title, price, eBay item id) — we store those as sales with the PriceCharting page as source URL. No account, no API key, no photos (TimeWarp is paid and not used). Console listings paginate through the public ?format=json cursor endpoint. ~1 request per product, 1.5 s politeness delay. Trading-card consoles (Pokémon, Magic, Yu-Gi-Oh!) are discovered from the public /category/<game>-cards pages; card pages expose guide values and eBay sales per grade (Ungraded, Grade 1–9.5, TAG/ACE/SGC/CGC/PSA/BGS 10, BGS 10 Black, CGC 10 Pristine). Graded rows without a named company use the generic grader 'graded' unless the eBay title names it. Pokémon sets are mapped to pokemontcg ids/codes through the maintainers' GitHub mirror and Magic sets/cards to Scryfall (one exact-name API lookup per Magic product, ≤ 10 req/s) so sales attach to the API catalogs' canonical assets.",15089      "enabled": true,15090      "schemaVersion": "2.0",15091      "config": {15092        "seeds": [15093          "nintendo-64",15094          "nes",15095          "super-nintendo",15096          "gamecube",15097          "gameboy",15098          "gameboy-color",15099          "gameboy-advance",15100          "nintendo-ds",15101          "nintendo-switch",15102          "wii",15103          "playstation",15104          "playstation-2",15105          "playstation-3",15106          "playstation-4",15107          "playstation-5",15108          "psp",15109          "xbox",15110          "xbox-360",15111          "xbox-one",15112          "xbox-series-x",15113          "sega-genesis",15114          "sega-dreamcast",15115          "sega-saturn",15116          "sega-master-system",15117          "sega-game-gear",15118          "atari-2600",15119          "neo-geo-aes",15120          "turbografx-16",15121          "pc-games",15122          "lego-star-wars",15123          "lego-creator",15124          "lego-technic",15125          "lego-icons",15126          "lego-harry-potter",15127          "lego-ideas",15128          "lego-marvel-super-heroes",15129          "lego-ninjago",15130          "lego-castle",15131          "lego-space",15132          "lego-modular-buildings",15133          "funko-pop-marvel",15134          "funko-pop-star-wars",15135          "funko-pop-disney",15136          "funko-pop-animation",15137          "funko-pop-television",15138          "funko-pop-movies",15139          "funko-pop-games",15140          "funko-pop-rocks",15141          "funko-pop-comics",15142          "comic-books-amazing-spider-man",15143          "comic-books-batman",15144          "comic-books-action-comics",15145          "comic-books-detective-comics",15146          "comic-books-x-men",15147          "comic-books-incredible-hulk",15148          "comic-books-fantastic-four",15149          "comic-books-avengers",15150          "comic-books-spawn",15151          "comic-books-walking-dead",15152          "pokemon-base-set",15153          "pokemon-jungle",15154          "pokemon-fossil",15155          "pokemon-team-rocket",15156          "pokemon-neo-genesis",15157          "pokemon-evolving-skies",15158          "pokemon-151",15159          "pokemon-promo",15160          "magic-alpha",15161          "magic-beta",15162          "magic-unlimited",15163          "magic-revised",15164          "magic-arabian-nights",15165          "magic-legends",15166          "magic-modern-horizons-3",15167          "yugioh-legend-of-blue-eyes-white-dragon",15168          "yugioh-metal-raiders",15169          "yugioh-spell-ruler",15170          "yugioh-pharaohs-servant"15171        ],15172        "productsPerConsole": 150,15173        "sort": "popularity",15174        "cardCategories": [15175          "pokemon-cards",15176          "magic-cards",15177          "yugioh-cards"15178        ],15179        "maxConsolesPerCategory": 3015180      },15181      "capabilities": [15182        "sold_listings",15183        "images",15184        "catalog",15185        "url_lookup"15186      ],15187      "refreshClass": "normal",15188      "domain": "pricecharting.com",15189      "country": "US",15190      "requires": [],15191      "historicalDepth": "none"15192    },15193    {15194      "id": "psa-cert",15195      "displayName": "PSA cert verification",15196      "sourceId": "psa",15197      "sourceName": "PSA (Professional Sports Authenticator)",15198      "sourceType": "grading_company",15199      "sourceUrl": "https://www.psacard.com/cert",15200      "module": "firecrawl/psa-cert",15201      "enginePriority": [15202        "firecrawl",15203        "scrapfly"15204      ],15205      "categories": [15206        "pokemon",15207        "magic_the_gathering",15208        "yugioh",15209        "one_piece_card_game",15210        "disney_lorcana",15211        "trading_cards",15212        "baseball_cards",15213        "basketball_cards",15214        "football_cards",15215        "hockey_cards",15216        "soccer_cards",15217        "other_sports_cards",15218        "non_sport_cards",15219        "sports_memorabilia",15220        "autographs",15221        "video_games",15222        "comics",15223        "coins"15224      ],15225      "regions": [15226        "US"15227      ],15228      "languages": [15229        "en"15230      ],15231      "currency": [15232        "USD"15233      ],15234      "supportsListings": false,15235      "supportsSold": false,15236      "supportsAuctions": false,15237      "supportsImages": true,15238      "supportsCatalog": true,15239      "supportsPopulation": true,15240      "supportsLookup": true,15241      "refreshFrequencyMinutes": 10080,15242      "priority": "high",15243      "trustScore": 0.95,15244      "attributionRequired": true,15245      "termsUrl": "https://www.collectors.com/terms-of-use",15246      "accessNotes": "Reads ONLY the public certificate-verification page https://www.psacard.com/cert/<cert> (also accepts the /cert/<cert>/psa and /en-CA/cert/… variants) for cert numbers supplied as seeds, config.certs or through lookup(); the cert space is never enumerated. psacard.com answers plain HTTP (incl. robots.txt) with a Cloudflare managed-challenge 403, so the page is rendered by Firecrawl (1 credit, ~4 s wait) with Scrapfly as fallback — the exact page any visitor sees, no login. PSA's own text on that page grants access to the database 'for the sole purpose of confirming data regarding authenticated items with a particular certification number', which is what we do. Fields read: headline description, Item Information (cert, grade, label type, year, brand/title, subject, card number, category), the two cert images, the PSA Estimate (kept in metadata, never used as a sale) and the per-grade 'PSA Population' / 'PSA Pop Higher' counts shown on the page (emitted as a partial population_report with population_scope=grade_and_higher). The 'Sales of Similar Items' table (eBay sales of OTHER certs) is deliberately dropped. Deliberately NOT fetched: PSA APR, the population report at /pop (both behind a Collectors sign-in) and the Set Registry. A not-found cert yields zero records.",15247      "enabled": true,15248      "schemaVersion": "1.0",15249      "config": {15250        "grader": "psa",15251        "certs": [15252          "69211238",15253          "25724592"15254        ],15255        "maxPerRun": 5015256      },15257      "capabilities": [15258        "cert_lookup",15259        "grading_population",15260        "catalog",15261        "url_lookup",15262        "images"15263      ],15264      "refreshClass": "archive",15265      "domain": "psacard.com",15266      "country": "US",15267      "requires": [],15268      "acquisitionMethod": "Firecrawl render of the public cert page (Scrapfly fallback)",15269      "historicalDepth": "none"15270    },15271    {15272      "id": "rakuten-ichiba",15273      "displayName": "Rakuten Ichiba (Item Search API — shop listings)",15274      "sourceId": "rakuten-ichiba",15275      "sourceName": "Rakuten Ichiba (楽天市場)",15276      "sourceType": "marketplace",15277      "sourceUrl": "https://www.rakuten.co.jp",15278      "module": "api/rakuten-ichiba",15279      "enginePriority": [15280        "api"15281      ],15282      "categories": [15283        "pokemon",15284        "yugioh",15285        "one_piece_card_game",15286        "trading_cards",15287        "rolex",15288        "omega",15289        "other_watches",15290        "nike_jordan",15291        "sneakers",15292        "gundam",15293        "action_figures",15294        "nintendo_games",15295        "lego_sets"15296      ],15297      "regions": [15298        "JP"15299      ],15300      "languages": [15301        "ja"15302      ],15303      "currency": [15304        "JPY"15305      ],15306      "supportsListings": true,15307      "supportsSold": false,15308      "supportsAuctions": false,15309      "supportsImages": true,15310      "supportsCatalog": false,15311      "supportsPopulation": false,15312      "supportsLookup": false,15313      "refreshFrequencyMinutes": 360,15314      "priority": "medium",15315      "trustScore": 0.7,15316      "attributionRequired": true,15317      "termsUrl": "https://webservice.rakuten.co.jp/guide/terms",15318      "accessNotes": "GATED — official Rakuten Web Service Ichiba Item Search API. Needs a free application id (RAKUTEN_APP_ID); applications created after the 2026-07-01 API version also need an access key (RAKUTEN_ACCESS_KEY, optional here: when present the 20260701 endpoint on openapi.rakuten.co.jp is used, otherwise the legacy 20220601 endpoint on app.rakuten.co.jp). Requests: keyword search per config seed, `hits=30`, `sort=-updateTimestamp`, `formatVersion=2`, `imageFlag=1`, paginated with `page` (≤ 100 pages per the API). Stored fields: item code, name, JPY price, url, caption, images, shop name/code, genre id, availability, sale window, review stats. Asking prices are listings (never sales); C2C/auction items are excluded by Rakuten itself. Credentials are redacted from stored URLs. The documented limit is 1 request/second per application id (1.1 s between requests, concurrency 1); Rakuten's terms require attribution ('Supported by Rakuten Developers') — `attributionRequired: true`. Without the key the framework reports the connector DISABLED; fixtures are built from the documented response format (see fixture note).",15319      "enabled": true,15320      "schemaVersion": "1.0",15321      "config": {15322        "seeds": [15323          {15324            "q": "ポケモンカード PSA10",15325            "category": "pokemon",15326            "language": "Japanese"15327          },15328          {15329            "q": "遊戯王 PSA10",15330            "category": "yugioh",15331            "language": "Japanese"15332          },15333          {15334            "q": "ワンピースカード PSA10",15335            "category": "one_piece_card_game",15336            "language": "Japanese"15337          },15338          {15339            "q": "ロレックス 中古 腕時計",15340            "category": "rolex",15341            "language": null15342          },15343          {15344            "q": "オメガ スピードマスター 中古",15345            "category": "omega",15346            "language": null15347          },15348          {15349            "q": "グランドセイコー 中古",15350            "category": "other_watches",15351            "language": null15352          },15353          {15354            "q": "エアジョーダン1 スニーカー",15355            "category": "nike_jordan",15356            "language": null15357          },15358          {15359            "q": "ガンプラ MG",15360            "category": "gundam",15361            "language": null15362          },15363          {15364            "q": "レゴ 廃盤",15365            "category": "lego_sets",15366            "language": null15367          }15368        ],15369        "pagesPerSeed": 2,15370        "sort": "-updateTimestamp",15371        "legacyEndpoint": false,15372        "defaultCategory": "trading_cards"15373      },15374      "capabilities": [15375        "live_listings",15376        "images"15377      ],15378      "refreshClass": "normal",15379      "domain": "rakuten.co.jp",15380      "country": "JP",15381      "requires": [15382        "RAKUTEN_APP_ID"15383      ],15384      "acquisitionMethod": "official API (Rakuten Web Service — Ichiba Item Search)",15385      "historicalDepth": "none"15386    },15387    {15388      "id": "rebag",15389      "displayName": "Rebag (pre-owned luxury bags, watches & jewelry listings)",15390      "sourceId": "rebag",15391      "sourceName": "Rebag",15392      "sourceType": "marketplace",15393      "sourceUrl": "https://shop.rebag.com",15394      "module": "api/rebag",15395      "enginePriority": [15396        "api"15397      ],15398      "categories": [15399        "luxury_handbags",15400        "watches",15401        "rolex",15402        "omega",15403        "other_watches",15404        "jewelry",15405        "fashion_streetwear"15406      ],15407      "regions": [15408        "US"15409      ],15410      "languages": [15411        "en"15412      ],15413      "currency": [15414        "USD"15415      ],15416      "supportsListings": true,15417      "supportsSold": false,15418      "supportsAuctions": false,15419      "supportsImages": true,15420      "supportsCatalog": false,15421      "supportsPopulation": false,15422      "supportsLookup": true,15423      "refreshFrequencyMinutes": 720,15424      "priority": "medium",15425      "trustScore": 0.8,15426      "attributionRequired": true,15427      "termsUrl": "https://www.rebag.com/terms-of-service/",15428      "accessNotes": "Public Shopify storefront feed (shop.rebag.com/collections/<handle>/products.json) over plain HTTPS with the RareIndex user agent; rebag.com robots.txt disallows nothing relevant (only /digital_certificate/). Each product is one authenticated pre-owned item in USD; Rebag's condition grade (Pristine/Excellent/Great/Good/Fair) is the first token of the variant title and the estimated retail price comes from the description. 1.5 s between requests.",15429      "enabled": true,15430      "schemaVersion": "1.0",15431      "config": {15432        "seeds": [15433          "hermes",15434          "chanel",15435          "louis-vuitton",15436          "dior",15437          "gucci",15438          "goyard",15439          "fendi",15440          "bottega-veneta",15441          "prada",15442          "celine",15443          "loewe",15444          "saint-laurent",15445          "all-watches",15446          "rolex",15447          "omega",15448          "cartier",15449          "van-cleef-arpels"15450        ],15451        "pagesPerSeed": 215452      },15453      "capabilities": [15454        "live_listings",15455        "images",15456        "url_lookup"15457      ],15458      "refreshClass": "normal",15459      "domain": "shop.rebag.com",15460      "country": "US",15461      "requires": [],15462      "historicalDepth": "none"15463    },15464    {15465      "id": "reverb",15466      "displayName": "Reverb (musical instruments & hi-fi marketplace)",15467      "sourceId": "reverb",15468      "sourceName": "Reverb",15469      "sourceType": "marketplace",15470      "sourceUrl": "https://reverb.com",15471      "module": "api/reverb",15472      "enginePriority": [15473        "api"15474      ],15475      "categories": [15476        "musical_instruments",15477        "audio_equipment"15478      ],15479      "regions": [15480        "US",15481        "EU",15482        "GB",15483        "CA",15484        "AU",15485        "JP"15486      ],15487      "languages": [15488        "en"15489      ],15490      "currency": [15491        "USD"15492      ],15493      "supportsListings": true,15494      "supportsSold": false,15495      "supportsAuctions": false,15496      "supportsImages": true,15497      "supportsCatalog": false,15498      "supportsPopulation": false,15499      "supportsLookup": true,15500      "refreshFrequencyMinutes": 720,15501      "priority": "medium",15502      "trustScore": 0.8,15503      "attributionRequired": true,15504      "termsUrl": "https://reverb.com/page/terms",15505      "accessNotes": "Read-only public listings API (api.reverb.com/api/listings, HAL JSON with Accept-Version 3.0) — no token is required for listing search; the price-guide endpoint is no longer public and sold data needs an authenticated app, so only live asking prices are collected. robots.txt allows /api/listings (only /api/my and per-listing upsell helpers are disallowed). Reverb returns prices converted to USD; the original listing currency is stored in metadata and the confidence is lowered when a conversion happened. Seeds are collectible-model queries (vintage Fender/Gibson/Martin, synths, pedals, hi-fi). 1.2 s between requests; one query page = 50 listings.",15506      "enabled": true,15507      "schemaVersion": "1.0",15508      "config": {15509        "perPage": 50,15510        "pagesPerQuery": 2,15511        "backfillPages": 6,15512        "queries": [15513          "fender stratocaster 1960s",15514          "fender telecaster 1950s",15515          "gibson les paul standard 1959",15516          "gibson les paul custom 1960s",15517          "gibson sg 1960s",15518          "gibson es-335 1960s",15519          "gibson flying v",15520          "fender jazzmaster 1960s",15521          "fender precision bass 1960s",15522          "fender jazz bass 1960s",15523          "rickenbacker 4001",15524          "rickenbacker 360",15525          "gretsch 6120",15526          "martin d-28 1960s",15527          "martin d-45",15528          "gibson j-45 1950s",15529          "gibson hummingbird vintage",15530          "prs private stock",15531          "moog minimoog model d",15532          "roland tr-808",15533          "roland tb-303",15534          "roland jupiter-8",15535          "sequential prophet-5",15536          "yamaha cs-80",15537          "oberheim ob-x",15538          "korg ms-20 vintage",15539          "arp 2600",15540          "hammond b3",15541          "fender rhodes mark i",15542          "wurlitzer 200a",15543          "klon centaur",15544          "dumble overdrive special",15545          "marshall plexi 1968",15546          "fender tweed bassman 1959",15547          "vox ac30 1960s",15548          "mesa boogie mark i",15549          "neumann u47",15550          "neumann u67",15551          "ludwig black beauty vintage",15552          "gibson mandolin f-5 loar",15553          "mcintosh mc275",15554          "marantz 2270",15555          "technics sl-1200 mk2",15556          "nakamichi dragon",15557          "jbl l100",15558          "klipschorn",15559          "linn lp12",15560          "tannoy monitor gold",15561          "sansui 9090db",15562          "revox b77"15563        ]15564      },15565      "capabilities": [15566        "live_listings",15567        "images",15568        "url_lookup"15569      ],15570      "refreshClass": "normal",15571      "domain": "reverb.com",15572      "country": "US",15573      "requires": [],15574      "historicalDepth": "none"15575    },15576    {15577      "id": "rm-sothebys",15578      "displayName": "RM Sotheby's (results)",15579      "sourceId": "rm-sothebys",15580      "sourceName": "RM Sotheby's",15581      "sourceType": "auction_house",15582      "sourceUrl": "https://rmsothebys.com",15583      "module": "firecrawl/rm-sothebys",15584      "enginePriority": [15585        "firecrawl"15586      ],15587      "categories": [15588        "automobiles",15589        "motorcycles",15590        "automotive_memorabilia"15591      ],15592      "regions": [15593        "US",15594        "EU",15595        "GB",15596        "AE"15597      ],15598      "languages": [15599        "en"15600      ],15601      "currency": [15602        "USD",15603        "EUR",15604        "GBP",15605        "CHF",15606        "AED"15607      ],15608      "supportsListings": false,15609      "supportsSold": true,15610      "supportsAuctions": false,15611      "supportsImages": true,15612      "supportsCatalog": false,15613      "supportsPopulation": false,15614      "supportsLookup": false,15615      "refreshFrequencyMinutes": 1440,15616      "priority": "medium",15617      "trustScore": 0.9,15618      "attributionRequired": true,15619      "termsUrl": "https://rmsothebys.com/terms-and-conditions/",15620      "accessNotes": "Public results: /results/ (auction list per year with date ranges) and each auction's lot grid (/auctions/<code>/lots/) rendered through Firecrawl because RM's site is an Angular app (no robots.txt is served; nothing is login-gated). Limitation: the lot grid paginates client-side (40 lots per view) and does not expose a page URL, so only the first 40 lots of each auction are captured per run — partial coverage, stated in the data. Lots marked 'Sold' with a price become sales; 'Not Sold' lots are skipped. RM publishes results inclusive of buyer's premium → buyer_premium_included=true. Sale date = first day of the auction (range in metadata). 1 credit per page, 2 s politeness delay.",15621      "enabled": true,15622      "schemaVersion": "1.0",15623      "config": {15624        "auctionsPerRun": 315625      },15626      "capabilities": [15627        "sold_listings",15628        "images"15629      ],15630      "refreshClass": "normal",15631      "domain": "rmsothebys.com",15632      "country": "US",15633      "requires": [],15634      "historicalDepth": "none"15635    },15636    {15637      "id": "rotofugi",15638      "displayName": "Rotofugi (US collector-toy store, USD)",15639      "sourceId": "rotofugi",15640      "sourceName": "Rotofugi",15641      "sourceType": "dealer",15642      "sourceUrl": "https://www.rotofugi.com",15643      "module": "api/rotofugi",15644      "enginePriority": [15645        "api"15646      ],15647      "categories": [15648        "designer_toys",15649        "action_figures",15650        "plush"15651      ],15652      "regions": [15653        "US"15654      ],15655      "languages": [15656        "en"15657      ],15658      "currency": [15659        "USD"15660      ],15661      "supportsListings": true,15662      "supportsSold": false,15663      "supportsAuctions": false,15664      "supportsImages": true,15665      "supportsCatalog": false,15666      "supportsPopulation": false,15667      "supportsLookup": true,15668      "refreshFrequencyMinutes": 1440,15669      "priority": "low",15670      "trustScore": 0.75,15671      "attributionRequired": true,15672      "termsUrl": "https://www.rotofugi.com/policies/terms-of-service",15673      "accessNotes": "Rotofugi (rotofugi.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 17 configured collections (vinyl-plastic-toys, blind-box-random-toys, kaiju-for-grown-ups, diy-toys, kidrobot, pop-mart, medicom, mighty-jaxx … (+9 more, see config.collections)) and /products/<handle>.json for URL lookups (~700 live designer toys (Kidrobot, Pop Mart, Medicom, tokidoki, kaiju/sofubi), 100 Super7 ReAction). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — wearables, prints/posters/art objects, pins, bags, the \"archived\"/\"private\"/\"all\" umbrella collections. No personal data is collected; seller = the store itself.",15674      "enabled": true,15675      "schemaVersion": "1.0",15676      "config": {15677        "currency": "USD",15678        "market": "US",15679        "seller": "Rotofugi",15680        "location": "Chicago, IL, USA",15681        "collections": [15682          {15683            "handle": "vinyl-plastic-toys",15684            "categorySlug": "designer_toys"15685          },15686          {15687            "handle": "blind-box-random-toys",15688            "categorySlug": "designer_toys"15689          },15690          {15691            "handle": "kaiju-for-grown-ups",15692            "categorySlug": "designer_toys"15693          },15694          {15695            "handle": "diy-toys",15696            "categorySlug": "designer_toys"15697          },15698          {15699            "handle": "kidrobot",15700            "categorySlug": "designer_toys",15701            "brand": "Kidrobot"15702          },15703          {15704            "handle": "pop-mart",15705            "categorySlug": "designer_toys",15706            "brand": "Pop Mart"15707          },15708          {15709            "handle": "medicom",15710            "categorySlug": "designer_toys",15711            "brand": "Medicom Toy"15712          },15713          {15714            "handle": "mighty-jaxx",15715            "categorySlug": "designer_toys",15716            "brand": "Mighty Jaxx"15717          },15718          {15719            "handle": "coarse",15720            "categorySlug": "designer_toys",15721            "brand": "coarse"15722          },15723          {15724            "handle": "tokidoki",15725            "categorySlug": "designer_toys",15726            "brand": "tokidoki"15727          },15728          {15729            "handle": "konatsuya",15730            "categorySlug": "designer_toys",15731            "brand": "Konatsuya"15732          },15733          {15734            "handle": "how2work",15735            "categorySlug": "designer_toys",15736            "brand": "How2Work"15737          },15738          {15739            "handle": "gargamel",15740            "categorySlug": "designer_toys",15741            "brand": "Gargamel"15742          },15743          {15744            "handle": "uvd-toys",15745            "categorySlug": "designer_toys",15746            "brand": "UVD Toys"15747          },15748          {15749            "handle": "squadt",15750            "categorySlug": "designer_toys",15751            "brand": "Ferg",15752            "series": "Squadt"15753          },15754          {15755            "handle": "super-7",15756            "categorySlug": "action_figures",15757            "brand": "Super7",15758            "series": "ReAction"15759          },15760          {15761            "handle": "gund",15762            "categorySlug": "plush",15763            "brand": "GUND"15764          }15765        ],15766        "rules": [15767          {15768            "match": "\\| Plush[^|]* \\||\\bplush\\b",15769            "categorySlug": "plush"15770          }15771        ],15772        "defaultCategory": null,15773        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b",15774        "keepOutOfStock": true,15775        "fetchBarcodes": false,15776        "wholeShop": false,15777        "pageSize": 25015778      },15779      "capabilities": [15780        "live_listings",15781        "images",15782        "url_lookup"15783      ],15784      "refreshClass": "normal",15785      "domain": "rotofugi.com",15786      "country": "US",15787      "requires": [],15788      "acquisitionMethod": "Shopify storefront products.json",15789      "historicalDepth": "none"15790    },15791    {15792      "id": "rr-auction",15793      "displayName": "RR Auction (past auctions)",15794      "sourceId": "rr-auction",15795      "sourceName": "RR Auction",15796      "sourceType": "auction_house",15797      "sourceUrl": "https://www.rrauction.com",15798      "module": "firecrawl/rr-auction",15799      "enginePriority": [15800        "firecrawl"15801      ],15802      "categories": [15803        "space",15804        "autographs",15805        "historical_documents",15806        "apple_collectibles",15807        "music_memorabilia",15808        "sports_memorabilia",15809        "movie_memorabilia",15810        "meteorites",15811        "vintage_computers",15812        "animation_art",15813        "aviation"15814      ],15815      "regions": [15816        "US"15817      ],15818      "languages": [15819        "en"15820      ],15821      "currency": [15822        "USD"15823      ],15824      "supportsListings": false,15825      "supportsSold": true,15826      "supportsAuctions": false,15827      "supportsImages": true,15828      "supportsCatalog": false,15829      "supportsPopulation": false,15830      "supportsLookup": false,15831      "refreshFrequencyMinutes": 720,15832      "priority": "high",15833      "trustScore": 0.9,15834      "attributionRequired": true,15835      "termsUrl": "https://www.rrauction.com/terms-and-conditions",15836      "accessNotes": "Two public pages rendered through Firecrawl (plain HTTPS gets a Cloudflare interstitial; not bypassed; robots.txt allows everything except /admin): the past-auction calendar (/auctions/auction-calendar/cron/past/?page=N: auction id, title, date, realized total) and each auction's lot gallery (/auctions/auction-details/<id>?page=N&itemQty=96&view=gallery&sort=time&cat=0) whose cards show 'Sold For: $X (w/BP)', estimate and the auction date. RR's published prices explicitly include the buyer's premium → buyer_premium_included=true. Categories come from the auction title and lot title keywords. 1 credit per page (96 lots), 2 s politeness delay.",15837      "enabled": true,15838      "schemaVersion": "1.0",15839      "config": {15840        "auctionsPerRun": 2,15841        "lotPagesPerAuction": 6,15842        "calendarPagesPerRun": 115843      },15844      "capabilities": [15845        "sold_listings",15846        "images"15847      ],15848      "refreshClass": "normal",15849      "domain": "rrauction.com",15850      "country": "US",15851      "requires": [],15852      "historicalDepth": "none"15853    },15854    {15855      "id": "ruten",15856      "displayName": "Ruten 露天拍賣 (Taiwan marketplace — listings)",15857      "sourceId": "ruten",15858      "sourceName": "Ruten (露天拍賣)",15859      "sourceType": "marketplace",15860      "sourceUrl": "https://www.ruten.com.tw",15861      "module": "api/ruten",15862      "enginePriority": [15863        "api"15864      ],15865      "categories": [15866        "pokemon",15867        "one_piece_card_game",15868        "yugioh",15869        "trading_cards",15870        "rolex",15871        "other_watches",15872        "nike_jordan",15873        "sneakers",15874        "action_figures",15875        "gundam",15876        "nintendo_games",15877        "designer_toys"15878      ],15879      "regions": [15880        "TW"15881      ],15882      "languages": [15883        "zh"15884      ],15885      "currency": [15886        "TWD"15887      ],15888      "supportsListings": true,15889      "supportsSold": false,15890      "supportsAuctions": false,15891      "supportsImages": true,15892      "supportsCatalog": false,15893      "supportsPopulation": false,15894      "supportsLookup": true,15895      "refreshFrequencyMinutes": 360,15896      "priority": "medium",15897      "trustScore": 0.65,15898      "attributionRequired": true,15899      "termsUrl": "https://www.ruten.com.tw/help/policy.htm",15900      "accessNotes": "Two public, unauthenticated JSON endpoints that the ruten.com.tw front end itself calls, fetched with the honest RareIndexBot user agent: (1) `rtapi.ruten.com.tw/api/search/v3/index.php/core/prod?q=<kw>&type=direct&sort=rnk/dc&offset=<n>&limit=30` returns TotalRows + item ids (robots.txt of rtapi: Allow / except /api/gsa/ and /api/feedback/); (2) `rapi.ruten.com.tw/api/items/v2/list?gno=<up to 30 ids>&level=simple` returns name, TWD price/range, stock status, aggregate sold count, watch count, post/update time, storefront name and image (no robots.txt served → no restriction). Only asking prices are stored (listings); `sold_num` is an undated aggregate kept in metadata, never emitted as a sale. Item HTML pages (`/item/show?`) are disallowed by robots.txt and are never fetched — they are only used as attribution URLs. Buyer/seller personal data is not read; the public storefront name is kept as `seller`. 2 s between requests, concurrency 1, 30 ids per detail call.",15901      "enabled": true,15902      "schemaVersion": "1.0",15903      "config": {15904        "seeds": [15905          {15906            "q": "寶可夢 PSA10",15907            "category": "pokemon",15908            "language": null15909          },15910          {15911            "q": "寶可夢 PTCG 中文版 SR",15912            "category": "pokemon",15913            "language": "Chinese"15914          },15915          {15916            "q": "航海王卡 PSA",15917            "category": "one_piece_card_game",15918            "language": null15919          },15920          {15921            "q": "遊戲王 PSA10",15922            "category": "yugioh",15923            "language": null15924          },15925          {15926            "q": "勞力士 手錶",15927            "category": "rolex",15928            "language": null15929          },15930          {15931            "q": "精工 GS 手錶",15932            "category": "other_watches",15933            "language": null15934          },15935          {15936            "q": "Air Jordan 1 全新",15937            "category": "nike_jordan",15938            "language": null15939          },15940          {15941            "q": "鋼彈 MG 未組",15942            "category": "gundam",15943            "language": null15944          },15945          {15946            "q": "figma 全新",15947            "category": "action_figures",15948            "language": null15949          },15950          {15951            "q": "BE@RBRICK 1000%",15952            "category": "designer_toys",15953            "language": null15954          }15955        ],15956        "pagesPerSeed": 2,15957        "sort": "rnk/dc",15958        "defaultCategory": "trading_cards"15959      },15960      "capabilities": [15961        "live_listings",15962        "images",15963        "url_lookup"15964      ],15965      "refreshClass": "normal",15966      "domain": "ruten.com.tw",15967      "country": "TW",15968      "requires": [],15969      "acquisitionMethod": "public JSON endpoints used by the site (search ids + item details), direct HTTP",15970      "historicalDepth": "none"15971    },15972    {15973      "id": "saatchi-art",15974      "displayName": "Saatchi Art (original artworks for sale)",15975      "sourceId": "saatchi-art",15976      "sourceName": "Saatchi Art",15977      "sourceType": "marketplace",15978      "sourceUrl": "https://www.saatchiart.com",15979      "module": "api/saatchi-art",15980      "enginePriority": [15981        "api",15982        "firecrawl",15983        "scrapfly"15984      ],15985      "categories": [15986        "art",15987        "contemporary_art",15988        "photography"15989      ],15990      "regions": [15991        "US",15992        "GB",15993        "EU"15994      ],15995      "languages": [15996        "en"15997      ],15998      "currency": [15999        "USD"16000      ],16001      "supportsListings": true,16002      "supportsSold": false,16003      "supportsAuctions": false,16004      "supportsImages": true,16005      "supportsCatalog": true,16006      "supportsPopulation": false,16007      "supportsLookup": true,16008      "refreshFrequencyMinutes": 1440,16009      "priority": "medium",16010      "trustScore": 0.7,16011      "attributionRequired": true,16012      "termsUrl": "https://www.saatchiart.com/termsofservice",16013      "accessNotes": "Public category browse pages (/paintings, /photography, /sculpture, /prints … with ?page=N) served as Next.js pages whose __NEXT_DATA__ carries 25 artworks per page: title, artist, category, mediums, materials, dimensions (cm), list price (USD cents), availability status (avail/sold), SKU and image. Plain HTTPS with the RareIndex user agent. robots.txt only disallows filter/sort query parameters (?category=, ?sort= …) which we do not use — pagination via ?page= is allowed. Listing asks are NOT transactions; sold works keep their last list price as a listing marked sold (no sale date is published, so no sale record is created). 2 s politeness delay.",16014      "enabled": true,16015      "schemaVersion": "1.0",16016      "config": {16017        "seeds": [16018          {16019            "path": "/paintings",16020            "category": "contemporary_art"16021          },16022          {16023            "path": "/photography",16024            "category": "photography"16025          },16026          {16027            "path": "/sculpture",16028            "category": "contemporary_art"16029          },16030          {16031            "path": "/prints",16032            "category": "contemporary_art"16033          },16034          {16035            "path": "/drawings",16036            "category": "contemporary_art"16037          },16038          {16039            "path": "/collage",16040            "category": "contemporary_art"16041          }16042        ],16043        "pagesPerSeed": 416044      },16045      "capabilities": [16046        "live_listings",16047        "images",16048        "catalog",16049        "url_lookup"16050      ],16051      "refreshClass": "normal",16052      "domain": "saatchiart.com",16053      "country": "US",16054      "requires": [],16055      "historicalDepth": "none"16056    },16057    {16058      "id": "scotch-whisky-auctions",16059      "displayName": "Scotch Whisky Auctions (results)",16060      "sourceId": "scotch-whisky-auctions",16061      "sourceName": "Scotch Whisky Auctions",16062      "sourceType": "auction_house",16063      "sourceUrl": "https://www.scotchwhiskyauctions.com",16064      "module": "api/scotch-whisky-auctions",16065      "enginePriority": [16066        "api",16067        "firecrawl",16068        "scrapfly"16069      ],16070      "categories": [16071        "whisky",16072        "rum",16073        "cognac"16074      ],16075      "regions": [16076        "GB"16077      ],16078      "languages": [16079        "en"16080      ],16081      "currency": [16082        "GBP"16083      ],16084      "supportsListings": false,16085      "supportsSold": true,16086      "supportsAuctions": true,16087      "supportsImages": true,16088      "supportsCatalog": false,16089      "supportsPopulation": false,16090      "supportsLookup": true,16091      "refreshFrequencyMinutes": 1440,16092      "priority": "high",16093      "trustScore": 0.9,16094      "attributionRequired": true,16095      "termsUrl": "https://www.scotchwhiskyauctions.com/terms/",16096      "accessNotes": "Public monthly auction archive (Glasgow; ~4,500–5,000 lots per auction, 20 lots per page, plain HTTPS with the RareIndex user agent, robots.txt disallows only /cmsplus/). Each lot card exposes title, lot number and 'Sold for £X in <month year>' — this is the hammer price; the buyer's commission (SWA charges a separate buyer's premium plus VAT) is NOT included, so buyer_premium_included=false. Sale date = the auction end date shown on the auction page. Unsold lots are skipped. 2 s politeness delay; pagesPerRun caps each incremental run (backfill mode walks older auctions).",16097      "enabled": true,16098      "schemaVersion": "1.0",16099      "config": {16100        "auctionsUrl": "https://www.scotchwhiskyauctions.com/auctions/",16101        "auctionsPerRun": 2,16102        "pagesPerRun": 1216103      },16104      "capabilities": [16105        "sold_listings",16106        "auction_results",16107        "images",16108        "url_lookup"16109      ],16110      "refreshClass": "normal",16111      "domain": "scotchwhiskyauctions.com",16112      "country": "GB",16113      "requires": [],16114      "historicalDepth": "none"16115    },16116    {16117      "id": "scp-auctions",16118      "displayName": "SCP Auctions (results & catalogs)",16119      "sourceId": "scp-auctions",16120      "sourceName": "SCP Auctions",16121      "sourceType": "auction_house",16122      "sourceUrl": "https://catalogs.scpauctions.com",16123      "module": "api/scp-auctions",16124      "enginePriority": [16125        "api"16126      ],16127      "categories": [16128        "sports_memorabilia",16129        "baseball_cards",16130        "basketball_cards",16131        "football_cards",16132        "hockey_cards",16133        "soccer_cards",16134        "other_sports_cards",16135        "olympic_collectibles",16136        "pokemon"16137      ],16138      "regions": [16139        "US"16140      ],16141      "languages": [16142        "en"16143      ],16144      "currency": [16145        "USD"16146      ],16147      "supportsListings": false,16148      "supportsSold": true,16149      "supportsAuctions": true,16150      "supportsImages": true,16151      "supportsCatalog": false,16152      "supportsPopulation": false,16153      "supportsLookup": false,16154      "refreshFrequencyMinutes": 720,16155      "priority": "medium",16156      "trustScore": 0.9,16157      "attributionRequired": true,16158      "termsUrl": "https://catalogs.scpauctions.com/terms",16159      "accessNotes": "Plain HTTPS on the public Bidsquare-hosted catalog (robots.txt: only /wp-admin/ disallowed, Crawl-delay 10 → 2 s politeness plus small runs). Past auctions are listed at /auctions/past?page=N; each catalog page (/auctions/scp-auctions-inc/<slug>-<id>/catalog?page=N, 48 lots) shows 'Sold for $X' and the bid count; the event start/end come from the page's schema.org Event JSON-LD (sale date = event end, or the lot's own countdown end). Upcoming catalogs yield auction lots (current/starting bid, estimate). SCP does not state on these pages whether 'Sold for' includes the 20% buyer's premium → buyer_premium_included=null. No login, no bidding endpoints. 0 credits.",16160      "enabled": true,16161      "schemaVersion": "1.0",16162      "config": {16163        "eventsPerRun": 2,16164        "pagesPerEvent": 8,16165        "includeUpcoming": true16166      },16167      "capabilities": [16168        "sold_listings",16169        "auction_results",16170        "images"16171      ],16172      "refreshClass": "normal",16173      "domain": "catalogs.scpauctions.com",16174      "country": "US",16175      "requires": [],16176      "historicalDepth": "none"16177    },16178    {16179      "id": "scryfall",16180      "displayName": "Scryfall (Magic: The Gathering)",16181      "sourceId": "scryfall",16182      "sourceName": "Scryfall",16183      "sourceType": "catalog",16184      "sourceUrl": "https://scryfall.com",16185      "module": "api/scryfall",16186      "enginePriority": [16187        "api"16188      ],16189      "categories": [16190        "magic_the_gathering"16191      ],16192      "regions": [16193        "US",16194        "EU"16195      ],16196      "languages": [16197        "en"16198      ],16199      "currency": [16200        "USD",16201        "EUR"16202      ],16203      "supportsListings": false,16204      "supportsSold": false,16205      "supportsAuctions": false,16206      "supportsImages": true,16207      "supportsCatalog": true,16208      "supportsPopulation": false,16209      "supportsLookup": true,16210      "refreshFrequencyMinutes": 1440,16211      "priority": "high",16212      "trustScore": 0.85,16213      "attributionRequired": true,16214      "termsUrl": "https://scryfall.com/docs/api",16215      "accessNotes": "Official public API, no key. Bulk 'default_cards' JSONL (gzip, ~78 MB, refreshed daily) is streamed for the full catalog; single-card lookups use /cards/<set>/<number>. Scryfall asks for ≤10 req/s (we pace 100 ms), an identifying User-Agent and Accept headers. Prices (usd/usd_foil/usd_etched/eur/eur_foil) are Scryfall's daily market aggregates from TCGplayer/Cardmarket → stored as price_observations, never as sales. Card data © Wizards of the Coast; Scryfall requests attribution and no implication of endorsement.",16216      "enabled": true,16217      "schemaVersion": "1.0",16218      "config": {16219        "bulkType": "default_cards",16220        "requestIntervalMs": 10016221      },16222      "capabilities": [16223        "images",16224        "catalog",16225        "url_lookup"16226      ],16227      "refreshClass": "normal",16228      "domain": "scryfall.com",16229      "country": "US",16230      "requires": [],16231      "historicalDepth": "none"16232    },16233    {16234      "id": "sgbaldwins",16235      "displayName": "Stanley Gibbons Baldwin's — hammer prices (stamps, coins, medals)",16236      "sourceId": "sgbaldwins",16237      "sourceName": "Stanley Gibbons Baldwin's",16238      "sourceType": "auction_house",16239      "sourceUrl": "https://sgbaldwins.com",16240      "module": "api/sgbaldwins",16241      "enginePriority": [16242        "api"16243      ],16244      "categories": [16245        "stamps",16246        "coins",16247        "medals"16248      ],16249      "regions": [16250        "GB"16251      ],16252      "languages": [16253        "en"16254      ],16255      "currency": [16256        "GBP"16257      ],16258      "supportsListings": false,16259      "supportsSold": true,16260      "supportsAuctions": false,16261      "supportsImages": true,16262      "supportsCatalog": false,16263      "supportsPopulation": false,16264      "supportsLookup": false,16265      "refreshFrequencyMinutes": 1440,16266      "priority": "medium",16267      "trustScore": 0.92,16268      "attributionRequired": true,16269      "termsUrl": "https://sgbaldwins.com/terms-and-conditions",16270      "accessNotes": "Plain HTTPS, 0 credits, no login. robots.txt disallows /account/, /auth/, /search and /collection_* only; /auctions/* and the Next.js data route are open. Pages read: the home page (only to read the current Next.js buildId from __NEXT_DATA__), /_next/data/<buildId>/auctions/past-auctions.json (≈ 200 past auctions since January 2020 with sale number, department and date) and /_next/data/<buildId>/auctions/<slug>.json — the same JSON the auction page renders: every lot with title, country, estimate low/high, start price, hammer_price, financeItem.premium (buyer's premium amount) and status sold/unsold, plus amsData.premiums (23 %). Only Stamps, Coins and Medals & Militaria departments are crawled (trading cards, comics and video games belong to other connectors). Sales are stored as hammer prices (buyer_premium_included=false) with the premium amount and the total in metadata; sale date = the lot's session_date. Currency from the auction's currency symbol (GBP). Images are Artisio CDN URLs, only referenced. 1.5 s politeness.",16271      "enabled": true,16272      "schemaVersion": "1.0",16273      "config": {16274        "auctionsPerRun": 3,16275        "departments": [16276          "Stamps",16277          "Coins",16278          "Medals & Militaria"16279        ]16280      },16281      "capabilities": [16282        "sold_listings",16283        "images",16284        "historical_backfill"16285      ],16286      "refreshClass": "normal",16287      "domain": "sgbaldwins.com",16288      "country": "GB",16289      "requires": [],16290      "acquisitionMethod": "Next.js page-data JSON (_next/data)",16291      "historicalDepth": "years"16292    },16293    {16294      "id": "solarisjapan",16295      "displayName": "Solaris Japan",16296      "sourceId": "solarisjapan",16297      "sourceName": "Solaris Japan",16298      "sourceType": "dealer",16299      "sourceUrl": "https://solarisjapan.com",16300      "module": "api/solarisjapan",16301      "enginePriority": [16302        "api"16303      ],16304      "categories": [16305        "action_figures",16306        "gundam",16307        "video_games",16308        "nintendo_games",16309        "one_piece_card_game",16310        "pokemon",16311        "plush",16312        "gaming_hardware",16313        "playstation_games",16314        "sega_games",16315        "xbox_games",16316        "atari_retro_games"16317      ],16318      "regions": [16319        "US",16320        "JP"16321      ],16322      "languages": [16323        "en"16324      ],16325      "currency": [16326        "USD"16327      ],16328      "supportsListings": true,16329      "supportsSold": false,16330      "supportsAuctions": false,16331      "supportsImages": true,16332      "supportsCatalog": false,16333      "supportsPopulation": false,16334      "supportsLookup": true,16335      "refreshFrequencyMinutes": 1440,16336      "priority": "medium",16337      "trustScore": 0.65,16338      "attributionRequired": true,16339      "termsUrl": "https://solarisjapan.com/policies/terms-of-service",16340      "accessNotes": "Solaris Japan (solarisjapan.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (figures, nendoroid, figma, pop-up-parade-figures, prize-figures, revoltech-figures, marvel-dc-action-figures, star-wars-figures, gundam-figures, retro-games, nintendo-ds, nintendo-3ds, nintendo-switch, one-piece-tcg, pokemon-tcg, plushies). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency USD (/meta.json currency USD, country US, Shopify.currency rate 1.0). Variants \"Brand New\" / \"Pre-Owned\" / \"Retro Game\" price each condition separately; a 0.00 price marks an unavailable condition and is dropped (no listing without a price). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",16341      "enabled": true,16342      "schemaVersion": "1.0",16343      "config": {16344        "currency": "USD",16345        "seller": "Solaris Japan",16346        "location": null,16347        "collections": [16348          {16349            "handle": "figures",16350            "categorySlug": "action_figures"16351          },16352          {16353            "handle": "nendoroid",16354            "categorySlug": "action_figures",16355            "brand": "Good Smile Company",16356            "series": "Nendoroid"16357          },16358          {16359            "handle": "figma",16360            "categorySlug": "action_figures",16361            "brand": "Max Factory",16362            "series": "figma"16363          },16364          {16365            "handle": "pop-up-parade-figures",16366            "categorySlug": "action_figures",16367            "brand": "Good Smile Company",16368            "series": "Pop Up Parade"16369          },16370          {16371            "handle": "prize-figures",16372            "categorySlug": "action_figures",16373            "series": "Prize Figure"16374          },16375          {16376            "handle": "revoltech-figures",16377            "categorySlug": "action_figures",16378            "brand": "Kaiyodo",16379            "series": "Revoltech"16380          },16381          {16382            "handle": "marvel-dc-action-figures",16383            "categorySlug": "action_figures"16384          },16385          {16386            "handle": "star-wars-figures",16387            "categorySlug": "action_figures",16388            "franchise": "Star Wars"16389          },16390          {16391            "handle": "gundam-figures",16392            "categorySlug": "gundam",16393            "franchise": "Gundam"16394          },16395          {16396            "handle": "retro-games",16397            "categorySlug": "video_games"16398          },16399          {16400            "handle": "nintendo-ds",16401            "categorySlug": "nintendo_games",16402            "brand": "Nintendo"16403          },16404          {16405            "handle": "nintendo-3ds",16406            "categorySlug": "nintendo_games",16407            "brand": "Nintendo"16408          },16409          {16410            "handle": "nintendo-switch",16411            "categorySlug": "nintendo_games",16412            "brand": "Nintendo"16413          },16414          {16415            "handle": "one-piece-tcg",16416            "categorySlug": "one_piece_card_game",16417            "franchise": "One Piece"16418          },16419          {16420            "handle": "pokemon-tcg",16421            "categorySlug": "pokemon",16422            "franchise": "Pokémon"16423          },16424          {16425            "handle": "plushies",16426            "categorySlug": "plush"16427          }16428        ],16429        "rules": [16430          {16431            "match": "^(?=.*\\| game \\|)(?=.*(?:hardware|console\\b|controller|joystick|arcade stick))",16432            "categorySlug": "gaming_hardware"16433          },16434          {16435            "match": "^(?=.*\\| game \\|)(?=.*(?:super famicom|\\bsfc\\b|famicom|\\bnes\\b|\\bsnes\\b|nintendo|\\bnds\\b|\\b3ds\\b|game ?boy|\\bgba\\b|\\bn64\\b|gamecube|\\bwii\\b|switch|virtual boy))",16436            "categorySlug": "nintendo_games",16437            "brand": "Nintendo"16438          },16439          {16440            "match": "^(?=.*\\| game \\|)(?=.*(?:playstation|\\bpsx\\b|\\bps[12345]\\b|\\bpsp\\b|ps vita))",16441            "categorySlug": "playstation_games",16442            "brand": "Sony"16443          },16444          {16445            "match": "^(?=.*\\| game \\|)(?=.*(?:mega drive|genesis|saturn|dreamcast|\\bsega\\b|game gear|master system))",16446            "categorySlug": "sega_games",16447            "brand": "Sega"16448          },16449          {16450            "match": "^(?=.*\\| game \\|)(?=.*(?:xbox))",16451            "categorySlug": "xbox_games",16452            "brand": "Microsoft"16453          },16454          {16455            "match": "^(?=.*\\| game \\|)(?=.*(?:pc engine|turbografx|neo geo|wonderswan|atari|\\b3do\\b|\\bmsx\\b))",16456            "categorySlug": "atari_retro_games"16457          }16458        ],16459        "defaultCategory": null,16460        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\bnsfw\\b|cast-?off|dakimakura|\\br-?18\\b|\\badult\\b|game guide|\\bdvd\\b|blu-ray|art ?book|calendar|\\bcup\\b|towel|arcade stick|gaming pad|\\bhori\\b|tapestry|poster|clear file|acrylic stand|can badge|keychain|strap\\b|phone case|sticker|mouse pad|t-shirt|cushion|blanket|\\bbag\\b|wallet|mug\\b",16461        "keepOutOfStock": true,16462        "pageSize": 250,16463        "fetchBarcodes": false,16464        "wholeShop": false16465      },16466      "capabilities": [16467        "live_listings",16468        "images",16469        "url_lookup"16470      ],16471      "refreshClass": "normal",16472      "domain": "solarisjapan.com",16473      "country": "US",16474      "requires": [],16475      "acquisitionMethod": "Shopify storefront products.json (public JSON)",16476      "historicalDepth": "none"16477    },16478    {16479      "id": "sorcery-tcg",16480      "displayName": "Sorcery: Contested Realm (official card API)",16481      "sourceId": "sorcery-tcg",16482      "sourceName": "Sorcery TCG (Erik's Curiosa)",16483      "sourceType": "manufacturer",16484      "sourceUrl": "https://sorcerytcg.com",16485      "module": "api/sorcery-tcg",16486      "enginePriority": [16487        "api"16488      ],16489      "categories": [16490        "other_tcg"16491      ],16492      "regions": [16493        "US",16494        "EU"16495      ],16496      "languages": [16497        "en"16498      ],16499      "currency": [],16500      "supportsListings": false,16501      "supportsSold": false,16502      "supportsAuctions": false,16503      "supportsImages": false,16504      "supportsCatalog": true,16505      "supportsPopulation": false,16506      "supportsLookup": false,16507      "refreshFrequencyMinutes": 10080,16508      "priority": "low",16509      "trustScore": 0.85,16510      "attributionRequired": true,16511      "termsUrl": "https://sorcerytcg.com",16512      "accessNotes": "Official public JSON (https://api.sorcerytcg.com/api/cards, one call ≈1,100 cards with every printing: set code/name, finish Standard/Foil, product Booster/Precon/Promo, print date). Catalog only, no prices or images; TCGCSV supplies Sorcery prices via TCGplayer product names. One catalog_item per printing (finish → 'Foil' variant; non-booster product noted in metadata).",16513      "enabled": true,16514      "schemaVersion": "1.0",16515      "config": {},16516      "capabilities": [16517        "catalog"16518      ],16519      "refreshClass": "archive",16520      "domain": "sorcerytcg.com",16521      "country": "US",16522      "requires": [],16523      "historicalDepth": "none"16524    },16525    {16526      "id": "sothebys",16527      "displayName": "Sotheby's (auction results & upcoming lots)",16528      "sourceId": "sothebys",16529      "sourceName": "Sotheby's",16530      "sourceType": "auction_house",16531      "sourceUrl": "https://www.sothebys.com",16532      "module": "api/sothebys",16533      "enginePriority": [16534        "api",16535        "firecrawl"16536      ],16537      "categories": [16538        "rolex",16539        "patek_philippe",16540        "audemars_piguet",16541        "omega",16542        "other_watches",16543        "luxury_handbags",16544        "jewelry",16545        "gemstones",16546        "wine",16547        "whisky",16548        "cognac",16549        "sneakers",16550        "fashion_streetwear",16551        "pokemon",16552        "magic_the_gathering",16553        "basketball_cards",16554        "baseball_cards",16555        "football_cards",16556        "sports_memorabilia",16557        "marvel_comics",16558        "dc_comics",16559        "independent_comics",16560        "art",16561        "contemporary_art",16562        "photography",16563        "books",16564        "maps",16565        "historical_documents",16566        "coins",16567        "banknotes",16568        "design_furniture",16569        "antiques",16570        "automobiles",16571        "space",16572        "scientific_instruments",16573        "fossils",16574        "minerals",16575        "meteorites",16576        "music_memorabilia",16577        "movie_memorabilia",16578        "video_games",16579        "vintage_toys"16580      ],16581      "regions": [16582        "US",16583        "GB",16584        "HK",16585        "FR",16586        "CH"16587      ],16588      "languages": [16589        "en"16590      ],16591      "currency": [16592        "USD",16593        "GBP",16594        "HKD",16595        "EUR",16596        "CHF"16597      ],16598      "supportsListings": false,16599      "supportsSold": true,16600      "supportsAuctions": true,16601      "supportsImages": true,16602      "supportsCatalog": false,16603      "supportsPopulation": false,16604      "supportsLookup": true,16605      "refreshFrequencyMinutes": 360,16606      "priority": "high",16607      "trustScore": 0.9,16608      "attributionRequired": true,16609      "termsUrl": "https://www.sothebys.com/en/terms-conditions",16610      "accessNotes": "Auction pages https://www.sothebys.com/en/buy/auction/<year>/<slug> are server-rendered (__NEXT_DATA__ Apollo cache) with auction metadata, department names, currency, dates and the first 48 lot cards including estimates and, for closed sales, the visible result (BidState.sold.premiums.finalPriceV2 = price including buyer's premium, currentBidV2 = hammer). Remaining lots are paged with the same public GraphQL endpoint the page uses (clientapi.prod.sothelabs.com/graphql, query LotCardsFilterByPaginated, no authentication; we request only public lot-card fields). Auction discovery: links on the public /en/results and /en/calendar pages (rendered through Firecrawl, 1 credit each), plus config.seeds auction URLs; auctions seen while open are re-checked after they close so their results are captured. robots.txt disallows /bsp-api/* and PDFs — not used. Prices: finalPriceV2 (buyer's premium included) → buyerPremiumIncluded=true, hammer kept in metadata; sale date = lot closingTime or the auction's closed timestamp. Condition reports are behind login and are not fetched.",16611      "enabled": true,16612      "schemaVersion": "1.0",16613      "config": {16614        "seeds": [],16615        "discoveryPages": [16616          "https://www.sothebys.com/en/results",16617          "https://www.sothebys.com/en/calendar"16618        ],16619        "departments": [],16620        "maxAuctionsPerRun": 25,16621        "pageSize": 4816622      },16623      "capabilities": [16624        "sold_listings",16625        "auction_results",16626        "images",16627        "url_lookup"16628      ],16629      "refreshClass": "normal",16630      "domain": "sothebys.com",16631      "country": "US",16632      "requires": [],16633      "historicalDepth": "none"16634    },16635    {16636      "id": "spink",16637      "displayName": "Spink & Son — sold lots since 2002 (coins, banknotes, stamps, medals)",16638      "sourceId": "spink",16639      "sourceName": "Spink & Son",16640      "sourceType": "auction_house",16641      "sourceUrl": "https://www.spink.com",16642      "module": "api/spink",16643      "enginePriority": [16644        "api",16645        "firecrawl"16646      ],16647      "categories": [16648        "coins",16649        "banknotes",16650        "stamps",16651        "medals"16652      ],16653      "regions": [16654        "GB",16655        "HK",16656        "US",16657        "SG"16658      ],16659      "languages": [16660        "en"16661      ],16662      "currency": [16663        "GBP",16664        "HKD",16665        "USD",16666        "SGD",16667        "EUR"16668      ],16669      "supportsListings": false,16670      "supportsSold": true,16671      "supportsAuctions": false,16672      "supportsImages": true,16673      "supportsCatalog": false,16674      "supportsPopulation": false,16675      "supportsLookup": true,16676      "refreshFrequencyMinutes": 1440,16677      "priority": "medium",16678      "trustScore": 0.9,16679      "attributionRequired": true,16680      "termsUrl": "https://www.spink.com/terms-and-conditions",16681      "accessNotes": "Plain HTTPS with the RareIndex user agent, 0 credits, no login; robots.txt is 'User-agent: * Disallow:' (everything allowed); Cloudflare in front but no challenge for the bot UA (HTTP 200). Pages read: /auctions/prices (the auction <select> lists 1 500+ sales since 11 Dec 2002 with date, sale number and title — the only place the sale date is printed), /auction/<code>?page=1 (category accordions with links to every lot of the sale; no prices) and /lot/<code><lot> (full description, 'Sold for £X', 'Starting price', CloudFront images). One request per lot, 1.5 s apart, ≤ 80 lots per run → a whole sale takes a few runs; the cursor keeps the lot list and index. Only coin / banknote / stamp / medal sales are crawled (wine, jewellery, handbags, autographs, bonds & shares are left to other connectors). 'Sold for' is stored with buyer_premium_included=null because Spink does not say on the page whether the premium is included; currency from the printed symbol (GBP; HK$/US$/S$ for the Hong Kong, New York and Singapore rooms). Sale date = the first day printed in the dropdown. Sales whose list page still redirects (302) to live.spink.com (results not yet published on the main site) are skipped and retried on later runs; live.spink.com itself is never crawled. Not fetched: archive keyword search, PDF catalogues, bidding/account pages.",16682      "enabled": true,16683      "schemaVersion": "1.0",16684      "config": {16685        "lotsPerRun": 8016686      },16687      "capabilities": [16688        "sold_listings",16689        "images",16690        "url_lookup",16691        "historical_backfill"16692      ],16693      "refreshClass": "normal",16694      "domain": "spink.com",16695      "country": "GB",16696      "requires": [],16697      "acquisitionMethod": "Static HTML lot pages (sale index → lot list → lot page)",16698      "historicalDepth": "decades"16699    },16700    {16701      "id": "sportscardspro",16702      "displayName": "SportsCardsPro",16703      "sourceId": "sportscardspro",16704      "sourceName": "SportsCardsPro (PriceCharting)",16705      "sourceType": "pricing_guide",16706      "sourceUrl": "https://www.sportscardspro.com",16707      "module": "api/sportscardspro",16708      "enginePriority": [16709        "firecrawl",16710        "scrapfly"16711      ],16712      "categories": [16713        "sports_cards",16714        "baseball_cards",16715        "basketball_cards",16716        "football_cards",16717        "hockey_cards",16718        "soccer_cards",16719        "f1_cards",16720        "other_sports_cards"16721      ],16722      "regions": [16723        "US"16724      ],16725      "languages": [16726        "en"16727      ],16728      "currency": [16729        "USD"16730      ],16731      "supportsListings": false,16732      "supportsSold": true,16733      "supportsAuctions": false,16734      "supportsImages": true,16735      "supportsCatalog": true,16736      "supportsPopulation": false,16737      "supportsLookup": true,16738      "refreshFrequencyMinutes": 1440,16739      "priority": "high",16740      "trustScore": 0.7,16741      "attributionRequired": true,16742      "termsUrl": "https://www.sportscardspro.com/page/terms-of-service",16743      "accessNotes": "Public product pages of PriceCharting's sports-card site. robots.txt only disallows /buy, /publish-offer, /stripe-connect. Plain HTTP with our user agent gets a Cloudflare interstitial (HTTP 403), so pages are fetched through Firecrawl (1 credit per page, ~1 MB each) — no login, no CAPTCHA solving, no account. Each page exposes guide values per grade (Ungraded, Grade 1–9.5, TAG/ACE/SGC/CGC/PSA/BGS 10, BGS 10 Black, CGC 10 Pristine) and recently completed eBay sales per grade tab; graded rows without a named grading company are stored with the generic grader 'graded' unless the eBay title names the company. Set lists come from the public /category/<sport>-cards pages; console listings use the ?format=json cursor endpoint.",16744      "enabled": true,16745      "schemaVersion": "2.0",16746      "config": {16747        "seeds": [16748          "basketball-cards-1986-fleer",16749          "basketball-cards-2003-topps-chrome",16750          "basketball-cards-2018-panini-prizm",16751          "basketball-cards-2019-panini-prizm",16752          "basketball-cards-1996-topps-chrome",16753          "baseball-cards-1952-topps",16754          "baseball-cards-1989-upper-deck",16755          "baseball-cards-2011-topps-update",16756          "baseball-cards-2018-topps-update",16757          "baseball-cards-1993-sp",16758          "football-cards-2000-playoff-contenders",16759          "football-cards-2017-panini-prizm",16760          "football-cards-2020-panini-prizm",16761          "football-cards-1957-topps",16762          "hockey-cards-1979-o-pee-chee",16763          "hockey-cards-2005-upper-deck",16764          "hockey-cards-2015-upper-deck",16765          "soccer-cards-2018-panini-prizm-world-cup",16766          "soccer-cards-2004-panini-mega-cracks"16767        ],16768        "cardCategories": [16769          "basketball-cards",16770          "baseball-cards",16771          "football-cards",16772          "hockey-cards",16773          "soccer-cards"16774        ],16775        "maxConsolesPerCategory": 25,16776        "productsPerConsole": 120,16777        "sort": "popularity"16778      },16779      "capabilities": [16780        "sold_listings",16781        "images",16782        "catalog",16783        "url_lookup"16784      ],16785      "refreshClass": "normal",16786      "domain": "sportscardspro.com",16787      "country": "US",16788      "requires": [],16789      "historicalDepth": "none"16790    },16791    {16792      "id": "stanley-gibbons-shop",16793      "displayName": "Stanley Gibbons shop (stamps for sale, GBP)",16794      "sourceId": "stanley-gibbons-shop",16795      "sourceName": "Stanley Gibbons",16796      "sourceType": "dealer",16797      "sourceUrl": "https://shop.stanleygibbons.com",16798      "module": "api/stanley-gibbons-shop",16799      "enginePriority": [16800        "api"16801      ],16802      "categories": [16803        "stamps"16804      ],16805      "regions": [16806        "GB"16807      ],16808      "languages": [16809        "en"16810      ],16811      "currency": [16812        "GBP"16813      ],16814      "supportsListings": true,16815      "supportsSold": false,16816      "supportsAuctions": false,16817      "supportsImages": true,16818      "supportsCatalog": false,16819      "supportsPopulation": false,16820      "supportsLookup": true,16821      "refreshFrequencyMinutes": 1440,16822      "priority": "low",16823      "trustScore": 0.8,16824      "attributionRequired": true,16825      "termsUrl": "https://shop.stanleygibbons.com/policies/terms-of-service",16826      "accessNotes": "Public Shopify storefront JSON (/collections/<handle>/products.json?limit=250&page=N), 0 credits, no login. robots.txt: 'Public product, collection, page, blog, policy, cart, and localized HTML is crawlable'. Collections read: stamps-great-britain (≈ 1 600 items) and stamps-commonwealth (≈ 4 100 items); publications, magazines and the 'David Spivack' consignment collection are excluded. Each product is one Stanley Gibbons stock item (SKU P267…, GBP price, availability, images, body_html with SG catalogue numbers) → fixed-price listings, never sales. Barcodes are not fetched (no per-product .js calls). 1.5 s politeness.",16827      "enabled": true,16828      "schemaVersion": "1.0",16829      "config": {16830        "currency": "GBP",16831        "seller": "Stanley Gibbons",16832        "location": "GB",16833        "collections": [16834          {16835            "handle": "stamps-great-britain",16836            "categorySlug": "stamps",16837            "brand": null,16838            "pages": 216839          },16840          {16841            "handle": "stamps-commonwealth",16842            "categorySlug": "stamps",16843            "brand": null,16844            "pages": 216845          }16846        ],16847        "rules": [16848          {16849            "match": "\\bStamp\\b|\\bSG\\s?\\d",16850            "categorySlug": "stamps"16851          }16852        ],16853        "defaultCategory": null,16854        "exclude": "gift card|catalogue|magazine|stamp monthly|album|hinges|tweezers|mount|binder|publication|book\\b",16855        "keepOutOfStock": true16856      },16857      "capabilities": [16858        "live_listings",16859        "images",16860        "url_lookup"16861      ],16862      "refreshClass": "normal",16863      "domain": "shop.stanleygibbons.com",16864      "country": "GB",16865      "requires": [],16866      "acquisitionMethod": "Shopify storefront products.json",16867      "historicalDepth": "none"16868    },16869    {16870      "id": "strangecat-toys",16871      "displayName": "Strangecat Toys (US collector-toy store, USD)",16872      "sourceId": "strangecat-toys",16873      "sourceName": "Strangecat Toys",16874      "sourceType": "dealer",16875      "sourceUrl": "https://strangecattoys.com",16876      "module": "api/strangecat-toys",16877      "enginePriority": [16878        "api"16879      ],16880      "categories": [16881        "designer_toys",16882        "plush",16883        "funko"16884      ],16885      "regions": [16886        "US"16887      ],16888      "languages": [16889        "en"16890      ],16891      "currency": [16892        "USD"16893      ],16894      "supportsListings": true,16895      "supportsSold": false,16896      "supportsAuctions": false,16897      "supportsImages": true,16898      "supportsCatalog": false,16899      "supportsPopulation": false,16900      "supportsLookup": true,16901      "refreshFrequencyMinutes": 720,16902      "priority": "medium",16903      "trustScore": 0.75,16904      "attributionRequired": true,16905      "termsUrl": "https://strangecattoys.com/policies/terms-of-service",16906      "accessNotes": "Strangecat Toys (strangecattoys.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 7 configured collections (designer-toys, blindbox-mini, custom-figures, made-by-strangecat, exclusives, pop-culture, plush-more) and /products/<handle>.json for URL lookups (~5.8k designer toys, 4.8k blind-box minis, 1.7k customs). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — bags/accessories/stationery/apparel/art prints/pins/books, toy displays, sale umbrella collections, \"open box\" items. No personal data is collected; seller = the store itself.",16907      "enabled": true,16908      "schemaVersion": "1.0",16909      "config": {16910        "currency": "USD",16911        "market": "US",16912        "seller": "Strangecat Toys",16913        "location": "Pittsburgh, PA, USA",16914        "collections": [16915          {16916            "handle": "designer-toys",16917            "categorySlug": "designer_toys"16918          },16919          {16920            "handle": "blindbox-mini",16921            "categorySlug": "designer_toys"16922          },16923          {16924            "handle": "custom-figures",16925            "categorySlug": "designer_toys",16926            "series": "Custom"16927          },16928          {16929            "handle": "made-by-strangecat",16930            "categorySlug": "designer_toys",16931            "brand": "Strangecat Toys"16932          },16933          {16934            "handle": "exclusives",16935            "categorySlug": "designer_toys"16936          },16937          {16938            "handle": "pop-culture",16939            "categorySlug": "designer_toys"16940          },16941          {16942            "handle": "plush-more",16943            "categorySlug": "plush"16944          }16945        ],16946        "rules": [16947          {16948            "match": "\\bfunko\\b|\\bpop!",16949            "categorySlug": "funko",16950            "brand": "Funko"16951          }16952        ],16953        "defaultCategory": null,16954        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b|\\bshipping\\b|\\bopen box\\b",16955        "keepOutOfStock": true,16956        "fetchBarcodes": false,16957        "wholeShop": false,16958        "pageSize": 25016959      },16960      "capabilities": [16961        "live_listings",16962        "images",16963        "url_lookup"16964      ],16965      "refreshClass": "normal",16966      "domain": "strangecattoys.com",16967      "country": "US",16968      "requires": [],16969      "acquisitionMethod": "Shopify storefront products.json",16970      "historicalDepth": "none"16971    },16972    {16973      "id": "subdial",16974      "displayName": "Subdial (UK pre-owned watch listings)",16975      "sourceId": "subdial",16976      "sourceName": "Subdial",16977      "sourceType": "marketplace",16978      "sourceUrl": "https://subdial.com",16979      "module": "api/subdial",16980      "enginePriority": [16981        "api",16982        "firecrawl"16983      ],16984      "categories": [16985        "watches",16986        "rolex",16987        "patek_philippe",16988        "audemars_piguet",16989        "omega",16990        "other_watches"16991      ],16992      "regions": [16993        "GB"16994      ],16995      "languages": [16996        "en"16997      ],16998      "currency": [16999        "GBP"17000      ],17001      "supportsListings": true,17002      "supportsSold": false,17003      "supportsAuctions": false,17004      "supportsImages": true,17005      "supportsCatalog": false,17006      "supportsPopulation": false,17007      "supportsLookup": true,17008      "refreshFrequencyMinutes": 720,17009      "priority": "medium",17010      "trustScore": 0.8,17011      "attributionRequired": true,17012      "termsUrl": "https://subdial.com/terms",17013      "accessNotes": "Listing URLs come from the public sitemap (subdial.com/sitemap-listing.xml); each listing page embeds a schema.org Product (brand, mpn = reference, sku = Subdial id, GBP price, availability) plus a specification table (reference, year, condition, box, papers). robots.txt allows / for generic agents (it blocks a list of named AI crawlers, which we are not). Plain HTTPS with the RareIndex user agent, 1.5 s between pages, capped per run; the crawl budget skips URLs already fetched recently.",17014      "enabled": true,17015      "schemaVersion": "1.0",17016      "config": {17017        "maxListingsPerRun": 25017018      },17019      "capabilities": [17020        "live_listings",17021        "images",17022        "url_lookup"17023      ],17024      "refreshClass": "normal",17025      "domain": "subdial.com",17026      "country": "GB",17027      "requires": [],17028      "historicalDepth": "none"17029    },17030    {17031      "id": "super7",17032      "displayName": "Super7 (US collector-toy store, USD)",17033      "sourceId": "super7",17034      "sourceName": "Super7",17035      "sourceType": "dealer",17036      "sourceUrl": "https://www.super7.com",17037      "module": "api/super7",17038      "enginePriority": [17039        "api"17040      ],17041      "categories": [17042        "action_figures",17043        "designer_toys"17044      ],17045      "regions": [17046        "US"17047      ],17048      "languages": [17049        "en"17050      ],17051      "currency": [17052        "USD"17053      ],17054      "supportsListings": true,17055      "supportsSold": false,17056      "supportsAuctions": false,17057      "supportsImages": true,17058      "supportsCatalog": false,17059      "supportsPopulation": false,17060      "supportsLookup": true,17061      "refreshFrequencyMinutes": 720,17062      "priority": "medium",17063      "trustScore": 0.75,17064      "attributionRequired": true,17065      "termsUrl": "https://www.super7.com/policies/terms-of-service",17066      "accessNotes": "Super7 (super7.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 13 configured collections (movie-action-figures, pop-culture-figures, music-action-figures, comic-figures, classic-monster-figures, gi-joe, godzilla, nba … (+5 more, see config.collections)) and /products/<handle>.json for URL lookups (~3.6k products; 2k movie/TV figures, 400 music figures, ReAction/Ultimates!/soft vinyl). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — apparel & accessories, BFCM/holiday umbrella collections, \"pre-order closed\" archive, gift guides. No personal data is collected; seller = the store itself.",17067      "enabled": true,17068      "schemaVersion": "1.0",17069      "config": {17070        "currency": "USD",17071        "market": "US",17072        "seller": "Super7",17073        "location": "San Francisco, CA, USA",17074        "collections": [17075          {17076            "handle": "movie-action-figures",17077            "categorySlug": "action_figures",17078            "brand": "Super7"17079          },17080          {17081            "handle": "pop-culture-figures",17082            "categorySlug": "action_figures",17083            "brand": "Super7"17084          },17085          {17086            "handle": "music-action-figures",17087            "categorySlug": "action_figures",17088            "brand": "Super7"17089          },17090          {17091            "handle": "comic-figures",17092            "categorySlug": "action_figures",17093            "brand": "Super7"17094          },17095          {17096            "handle": "classic-monster-figures",17097            "categorySlug": "action_figures",17098            "brand": "Super7"17099          },17100          {17101            "handle": "gi-joe",17102            "categorySlug": "action_figures",17103            "brand": "Super7",17104            "franchise": "G.I. Joe"17105          },17106          {17107            "handle": "godzilla",17108            "categorySlug": "action_figures",17109            "brand": "Super7",17110            "franchise": "Godzilla"17111          },17112          {17113            "handle": "nba",17114            "categorySlug": "action_figures",17115            "brand": "Super7",17116            "franchise": "NBA"17117          },17118          {17119            "handle": "in-stock-thundercats",17120            "categorySlug": "action_figures",17121            "brand": "Super7",17122            "franchise": "ThunderCats"17123          },17124          {17125            "handle": "in-stock-reaction",17126            "categorySlug": "action_figures",17127            "brand": "Super7",17128            "series": "ReAction"17129          },17130          {17131            "handle": "in-stock-ultimates-and-deluxe-figures",17132            "categorySlug": "action_figures",17133            "brand": "Super7",17134            "series": "Ultimates!"17135          },17136          {17137            "handle": "keshi-figures",17138            "categorySlug": "action_figures",17139            "brand": "Super7",17140            "series": "Keshi"17141          },17142          {17143            "handle": "kandy-kaiju",17144            "categorySlug": "designer_toys",17145            "brand": "Super7",17146            "series": "Kandy Kaiju"17147          }17148        ],17149        "rules": [17150          {17151            "match": "\\bsoft vinyl\\b|\\bsofubi\\b|kandy kaiju|super shogun",17152            "categorySlug": "designer_toys",17153            "brand": "Super7"17154          },17155          {17156            "match": "\\breaction\\b",17157            "categorySlug": "action_figures",17158            "brand": "Super7",17159            "series": "ReAction"17160          },17161          {17162            "match": "\\bultimates!?\\b",17163            "categorySlug": "action_figures",17164            "brand": "Super7",17165            "series": "Ultimates!"17166          }17167        ],17168        "defaultCategory": null,17169        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b|advent calendar|\\bglassware|\\bpint glass",17170        "keepOutOfStock": true,17171        "fetchBarcodes": false,17172        "wholeShop": false,17173        "pageSize": 25017174      },17175      "capabilities": [17176        "live_listings",17177        "images",17178        "url_lookup"17179      ],17180      "refreshClass": "normal",17181      "domain": "super7.com",17182      "country": "US",17183      "requires": [],17184      "acquisitionMethod": "Shopify storefront products.json",17185      "historicalDepth": "none"17186    },17187    {17188      "id": "surugaya",17189      "displayName": "Suruga-ya (Japanese second-hand hobby retailer, JPY)",17190      "sourceId": "surugaya",17191      "sourceName": "Suruga-ya",17192      "sourceType": "marketplace",17193      "sourceUrl": "https://www.suruga-ya.jp",17194      "module": "firecrawl/surugaya",17195      "enginePriority": [17196        "firecrawl"17197      ],17198      "categories": [17199        "pokemon",17200        "yugioh",17201        "one_piece_card_game",17202        "gundam",17203        "action_figures",17204        "nintendo_games",17205        "sega_games",17206        "playstation_games",17207        "designer_toys"17208      ],17209      "regions": [17210        "JP"17211      ],17212      "languages": [17213        "ja"17214      ],17215      "currency": [17216        "JPY"17217      ],17218      "supportsListings": true,17219      "supportsSold": false,17220      "supportsAuctions": false,17221      "supportsImages": true,17222      "supportsCatalog": true,17223      "supportsPopulation": false,17224      "supportsLookup": false,17225      "refreshFrequencyMinutes": 720,17226      "priority": "medium",17227      "trustScore": 0.75,17228      "attributionRequired": true,17229      "termsUrl": "https://www.suruga-ya.jp/man/index.html",17230      "accessNotes": "Public search result pages (suruga-ya.jp/search?...; robots.txt: 'Allow: /' for generic agents with Content-Signal search=yes, ai-train=no, use=reference — we only index prices and never train on content). Plain HTTPS returns 403 from data-centre IPs, so pages are fetched through Firecrawl (1 credit per page, ~24 items). Parsed per card: product id (shinaban), title, condition/type label, release date, brand, list price (定価), Suruga-ya price or 品切れ (sold out), and the marketplace (マケプレ) lowest price when Suruga-ya itself is out of stock. JPY. Emits catalog items + fixed-price listings; no sold history is available publicly.",17231      "enabled": true,17232      "schemaVersion": "1.0",17233      "config": {17234        "seeds": [17235          {17236            "query": "category=5&search_word=%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89%20PSA",17237            "categorySlug": "pokemon",17238            "label": "Pokémon cards PSA"17239          },17240          {17241            "query": "category=5&search_word=%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89%20SAR",17242            "categorySlug": "pokemon",17243            "label": "Pokémon SAR"17244          },17245          {17246            "query": "category=5&search_word=%E9%81%8A%E6%88%AF%E7%8E%8B%20%E3%83%97%E3%83%AA%E3%82%BA%E3%83%9E",17247            "categorySlug": "yugioh",17248            "label": "Yu-Gi-Oh! prismatic"17249          },17250          {17251            "query": "category=5&search_word=%E3%82%AC%E3%83%B3%E3%83%97%E3%83%A9%20MG",17252            "categorySlug": "gundam",17253            "label": "Gunpla MG"17254          },17255          {17256            "query": "category=5&search_word=figma",17257            "categorySlug": "action_figures",17258            "label": "figma"17259          },17260          {17261            "query": "category=5&search_word=%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%95%E3%82%A1%E3%83%9F%E3%82%B3%E3%83%B3%20%E3%82%BD%E3%83%95%E3%83%88",17262            "categorySlug": "nintendo_games",17263            "label": "Super Famicom software"17264          }17265        ],17266        "pagesPerSeed": 117267      },17268      "capabilities": [17269        "live_listings",17270        "images",17271        "catalog"17272      ],17273      "refreshClass": "normal",17274      "domain": "suruga-ya.jp",17275      "country": "JP",17276      "requires": [],17277      "historicalDepth": "none"17278    },17279    {17280      "id": "swann",17281      "displayName": "Swann Auction Galleries (results)",17282      "sourceId": "swann",17283      "sourceName": "Swann Auction Galleries",17284      "sourceType": "auction_house",17285      "sourceUrl": "https://www.swanngalleries.com",17286      "module": "api/swann",17287      "enginePriority": [17288        "api",17289        "firecrawl"17290      ],17291      "categories": [17292        "autographs",17293        "photography",17294        "movie_posters",17295        "maps",17296        "books",17297        "art",17298        "contemporary_art",17299        "historical_documents",17300        "comics",17301        "animation_art"17302      ],17303      "regions": [17304        "US"17305      ],17306      "languages": [17307        "en"17308      ],17309      "currency": [17310        "USD"17311      ],17312      "supportsListings": false,17313      "supportsSold": true,17314      "supportsAuctions": false,17315      "supportsImages": true,17316      "supportsCatalog": false,17317      "supportsPopulation": false,17318      "supportsLookup": false,17319      "refreshFrequencyMinutes": 1440,17320      "priority": "medium",17321      "trustScore": 0.9,17322      "attributionRequired": true,17323      "termsUrl": "https://www.swanngalleries.com/conditions-of-sale/",17324      "accessNotes": "Public pages over plain HTTPS with the RareIndex user agent (robots.txt: Disallow empty): the past-auctions list (/auctions/past-auctions/: date, sale number, department, catalog link) and archived catalogs (/auction-catalog/<slug>?algoliaParam=archive_lotNumber_asc_prod[page]=N, 20 lots per page) whose server-rendered cards show lot number, title, estimate and 'Sold: $X' with the note 'Sold price includes buyer's premium' → buyer_premium_included=true; 'Passed' lots are skipped. Category from the sale's department. 1.5 s politeness delay.",17325      "enabled": true,17326      "schemaVersion": "1.0",17327      "config": {17328        "auctionsPerRun": 2,17329        "pagesPerAuction": 1517330      },17331      "capabilities": [17332        "sold_listings",17333        "images"17334      ],17335      "refreshClass": "normal",17336      "domain": "swanngalleries.com",17337      "country": "US",17338      "requires": [],17339      "historicalDepth": "none"17340    },17341    {17342      "id": "sworders",17343      "displayName": "Sworders (Essex, UK) — results",17344      "sourceId": "sworders",17345      "sourceName": "Sworders Fine Art Auctioneers",17346      "sourceType": "auction_house",17347      "sourceUrl": "https://www.sworder.co.uk",17348      "module": "api/sworders",17349      "enginePriority": [17350        "api"17351      ],17352      "categories": [17353        "design_furniture",17354        "art",17355        "contemporary_art",17356        "photography",17357        "antiques",17358        "porcelain",17359        "glass_crystal",17360        "silver",17361        "clocks",17362        "jewelry",17363        "other_watches",17364        "rolex",17365        "omega",17366        "books",17367        "maps",17368        "wine",17369        "whisky",17370        "vintage_toys",17371        "model_trains",17372        "cameras",17373        "scientific_instruments",17374        "militaria",17375        "medals",17376        "coins",17377        "stamps",17378        "musical_instruments"17379      ],17380      "regions": [17381        "GB"17382      ],17383      "languages": [17384        "en"17385      ],17386      "currency": [17387        "GBP"17388      ],17389      "supportsListings": false,17390      "supportsSold": true,17391      "supportsAuctions": true,17392      "supportsImages": true,17393      "supportsCatalog": false,17394      "supportsPopulation": false,17395      "supportsLookup": false,17396      "refreshFrequencyMinutes": 1440,17397      "priority": "medium",17398      "trustScore": 0.88,17399      "attributionRequired": true,17400      "termsUrl": "https://www.sworder.co.uk/terms-and-conditions/",17401      "accessNotes": "Sworders (Stansted Mountfitchet, Essex; design, Asian art, jewellery, books, homes & interiors) runs on the goauction platform. Public pages read: /results/ (calendar of past sales: title, date, sale number, au id) and /auction/details/<slug>/?au=<id>&pn=N&g=1 (grid of 96 lots per page: lot number, title, sub-title, image, 'Sold for £1,800'; unsold lots carry no price; <link rel=next> drives pagination). The grid does not state whether 'Sold for' is hammer or premium-inclusive, so buyer_premium_included is left null. robots.txt disallows /account, /admin, /cms/lotdetailspdf, /elmah, /imagebrowser, /language only; terms page contains no clause on automated access. 2.5 s politeness; salesPerRun caps incremental runs; backfill walks the results calendar with a resumable cursor. No login, no bidder data.",17402      "enabled": true,17403      "schemaVersion": "1.0",17404      "config": {17405        "resultsUrl": "https://www.sworder.co.uk/results/",17406        "salesPerRun": 217407      },17408      "capabilities": [17409        "sold_listings",17410        "auction_results",17411        "images",17412        "historical_backfill"17413      ],17414      "refreshClass": "normal",17415      "domain": "sworder.co.uk",17416      "country": "GB",17417      "requires": [],17418      "acquisitionMethod": "server-rendered HTML (goauction platform)",17419      "historicalDepth": "years"17420    },17421    {17422      "id": "swu-db",17423      "displayName": "SWU-DB (Star Wars: Unlimited)",17424      "sourceId": "swu-db",17425      "sourceName": "SWU-DB",17426      "sourceType": "catalog",17427      "sourceUrl": "https://www.swu-db.com",17428      "module": "api/swu-db",17429      "enginePriority": [17430        "api"17431      ],17432      "categories": [17433        "star_wars_tcg"17434      ],17435      "regions": [17436        "US"17437      ],17438      "languages": [17439        "en"17440      ],17441      "currency": [17442        "USD"17443      ],17444      "supportsListings": false,17445      "supportsSold": false,17446      "supportsAuctions": false,17447      "supportsImages": true,17448      "supportsCatalog": true,17449      "supportsPopulation": false,17450      "supportsLookup": true,17451      "refreshFrequencyMinutes": 1440,17452      "priority": "medium",17453      "trustScore": 0.7,17454      "attributionRequired": true,17455      "termsUrl": "https://www.swu-db.com/api",17456      "accessNotes": "Free community API (https://api.swu-db.com/cards/<set>, no key). Each card carries TCGplayer ids and USD MarketPrice/LowPrice (+ FoilPrice/LowFoilPrice) relayed from TCGplayer without a timestamp → observations dated by the fetch day, confidence 0.7. Set codes are configured (the /catalog/sets endpoint needs an API key); VariantType (Normal, Hyperspace, Showcase…) becomes the variant, foil prices create a 'Foil' variant.",17457      "enabled": true,17458      "schemaVersion": "1.0",17459      "config": {17460        "sets": {17461          "SOR": "Spark of Rebellion",17462          "SHD": "Shadows of the Galaxy",17463          "TWI": "Twilight of the Republic",17464          "JTL": "Jump to Lightspeed",17465          "LOF": "Legends of the Force",17466          "SEC": "Secrets of Power"17467        }17468      },17469      "capabilities": [17470        "images",17471        "catalog",17472        "url_lookup"17473      ],17474      "refreshClass": "normal",17475      "domain": "swu-db.com",17476      "country": "US",17477      "requires": [],17478      "historicalDepth": "none"17479    },17480    {17481      "id": "tag-cert",17482      "displayName": "TAG Grading cert lookup (DIG report)",17483      "sourceId": "tag",17484      "sourceName": "TAG Grading",17485      "sourceType": "grading_company",17486      "sourceUrl": "https://my.taggrading.com/card",17487      "module": "firecrawl/tag-cert",17488      "enginePriority": [17489        "firecrawl"17490      ],17491      "categories": [17492        "pokemon",17493        "magic_the_gathering",17494        "yugioh",17495        "one_piece_card_game",17496        "disney_lorcana",17497        "trading_cards",17498        "sports_cards",17499        "baseball_cards",17500        "basketball_cards",17501        "football_cards",17502        "hockey_cards",17503        "soccer_cards",17504        "non_sport_cards"17505      ],17506      "regions": [17507        "US"17508      ],17509      "languages": [17510        "en"17511      ],17512      "currency": [17513        "USD"17514      ],17515      "supportsListings": false,17516      "supportsSold": false,17517      "supportsAuctions": false,17518      "supportsImages": true,17519      "supportsCatalog": true,17520      "supportsPopulation": true,17521      "supportsLookup": true,17522      "refreshFrequencyMinutes": 10080,17523      "priority": "medium",17524      "trustScore": 0.95,17525      "attributionRequired": true,17526      "termsUrl": "https://www.taggrading.com/terms",17527      "accessNotes": "Reads ONLY the public per-card DIG report https://my.taggrading.com/card/<cert> (cert = 1 letter + 7 digits; tagd.co/<cert> short links accepted by lookup) for supplied certs; no enumeration even though TAG publishes ~3M card URLs in its public dig*.xml sitemaps (robots.txt explicitly allows /card/ and /pop-report/). The page is a client-rendered React app (hashed MUI class names) so it is fetched with Firecrawl (1 credit, 8 s wait) and the markdown line sequence is parsed. Fields read: player/card name, set line (year, set, card number), subset/variation, TAG Score (1000-pt), grade + label, front/back images, the 'population' block (n <grade> graded / total graded, 'AS OF' date used as reportDate → population_report with population_scope=grade_and_total) and the card-rank/chronology figures (metadata). Sub-scores per corner/edge are not stored. Nothing behind the customer login is touched. A not-found cert yields zero records.",17528      "enabled": true,17529      "schemaVersion": "1.0",17530      "config": {17531        "grader": "tag",17532        "certs": [17533          "V6153377",17534          "T6113698"17535        ],17536        "maxPerRun": 5017537      },17538      "capabilities": [17539        "cert_lookup",17540        "grading_population",17541        "catalog",17542        "url_lookup",17543        "images"17544      ],17545      "refreshClass": "archive",17546      "domain": "my.taggrading.com",17547      "country": "US",17548      "requires": [],17549      "acquisitionMethod": "Firecrawl markdown of the public DIG report page",17550      "historicalDepth": "none"17551    },17552    {17553      "id": "tag-pop",17554      "displayName": "TAG Grading population report",17555      "sourceId": "tag",17556      "sourceName": "TAG Grading",17557      "sourceType": "grading_company",17558      "sourceUrl": "https://my.taggrading.com/pop-report",17559      "module": "firecrawl/tag-pop",17560      "enginePriority": [17561        "firecrawl"17562      ],17563      "categories": [17564        "pokemon",17565        "magic_the_gathering",17566        "yugioh",17567        "disney_lorcana",17568        "one_piece_card_game",17569        "baseball_cards",17570        "basketball_cards",17571        "football_cards",17572        "hockey_cards",17573        "soccer_cards",17574        "other_sports_cards",17575        "non_sport_cards"17576      ],17577      "regions": [17578        "US"17579      ],17580      "languages": [17581        "en"17582      ],17583      "currency": [17584        "USD"17585      ],17586      "supportsListings": false,17587      "supportsSold": false,17588      "supportsAuctions": false,17589      "supportsImages": false,17590      "supportsCatalog": false,17591      "supportsPopulation": true,17592      "supportsLookup": false,17593      "refreshFrequencyMinutes": 10080,17594      "priority": "low",17595      "trustScore": 0.95,17596      "attributionRequired": true,17597      "termsUrl": "https://www.taggrading.com/terms",17598      "accessNotes": "TAG's population report is public (robots.txt explicitly allows /pop-report/ and /card/). The pages are a client-rendered app, so set-level pages are rendered with Firecrawl (1 credit per set page, waitFor 8 s) and the markdown table is parsed: one row per card/variation with counts per grade (VA, 1–10, 10P = Pristine) and a total. Discovery is free through the public sitemap (pop.xml, ~26k URLs; set pages carry ?setName=). Category seeds and `maxPagesPerRun` bound the weekly cost. Report date = fetch day (the report is live).",17599      "enabled": true,17600      "schemaVersion": "1.0",17601      "config": {17602        "seeds": [17603          "Pokemon",17604          "Basketball",17605          "Baseball",17606          "Football",17607          "Hockey",17608          "Soccer",17609          "Magic",17610          "Yu-Gi-Oh"17611        ],17612        "maxPagesPerRun": 4017613      },17614      "capabilities": [17615        "grading_population"17616      ],17617      "refreshClass": "archive",17618      "domain": "my.taggrading.com",17619      "country": "US",17620      "requires": [],17621      "historicalDepth": "none"17622    },17623    {17624      "id": "tcgcsv",17625      "displayName": "TCGCSV (TCGplayer catalog & prices)",17626      "sourceId": "tcgcsv",17627      "sourceName": "TCGCSV",17628      "sourceType": "pricing_guide",17629      "sourceUrl": "https://tcgcsv.com",17630      "module": "api/tcgcsv",17631      "enginePriority": [17632        "api"17633      ],17634      "categories": [17635        "trading_cards",17636        "pokemon",17637        "magic_the_gathering",17638        "yugioh",17639        "disney_lorcana",17640        "one_piece_card_game",17641        "digimon_tcg",17642        "flesh_and_blood",17643        "star_wars_tcg",17644        "dragon_ball_tcg",17645        "weiss_schwarz",17646        "final_fantasy_tcg",17647        "other_tcg",17648        "funko"17649      ],17650      "regions": [17651        "US"17652      ],17653      "languages": [17654        "en",17655        "ja"17656      ],17657      "currency": [17658        "USD"17659      ],17660      "supportsListings": false,17661      "supportsSold": false,17662      "supportsAuctions": false,17663      "supportsImages": true,17664      "supportsCatalog": true,17665      "supportsPopulation": false,17666      "supportsLookup": false,17667      "refreshFrequencyMinutes": 1440,17668      "priority": "high",17669      "trustScore": 0.8,17670      "attributionRequired": true,17671      "termsUrl": "https://tcgcsv.com/faq",17672      "accessNotes": "Public daily mirror of TCGplayer's catalog and price API (JSON endpoints /tcgplayer/{categoryId}/groups, /{groupId}/products, /{groupId}/prices; robots.txt allows everything and the FAQ explicitly invites programmatic access with an identifying User-Agent and ~4 req/s). Prices (low/mid/high/market per printing subtype) are TCGplayer market data, not transactions: stored as price_observations dated with the mirror's last-updated timestamp (/last-updated.txt), confidence 0.75. Categories are mapped to taxonomy slugs in config; incremental runs cover the newest `maxGroupsPerCategory` sets per category, backfill covers all. Identifiers: tcgplayer_id (product) + tcgplayer_group_id. Historical price archives (2024-02-08 →) exist as daily 7z files and can be backfilled later.",17673      "enabled": true,17674      "schemaVersion": "1.0",17675      "config": {17676        "categories": {17677          "1": {17678            "slug": "magic_the_gathering",17679            "franchise": "Magic: The Gathering",17680            "brand": "Wizards of the Coast"17681          },17682          "2": {17683            "slug": "yugioh",17684            "franchise": "Yu-Gi-Oh!",17685            "brand": "Konami"17686          },17687          "3": {17688            "slug": "pokemon",17689            "franchise": "Pokémon",17690            "brand": "The Pokémon Company",17691            "language": "English"17692          },17693          "16": {17694            "slug": "other_tcg",17695            "franchise": "Cardfight!! Vanguard",17696            "brand": "Bushiroad"17697          },17698          "17": {17699            "slug": "other_tcg",17700            "franchise": "Force of Will",17701            "brand": "Force of Will Co."17702          },17703          "20": {17704            "slug": "weiss_schwarz",17705            "franchise": "Weiß Schwarz",17706            "brand": "Bushiroad"17707          },17708          "24": {17709            "slug": "final_fantasy_tcg",17710            "franchise": "Final Fantasy TCG",17711            "brand": "Square Enix"17712          },17713          "25": {17714            "slug": "other_tcg",17715            "franchise": "UniVersus",17716            "brand": "UVS Games"17717          },17718          "27": {17719            "slug": "dragon_ball_tcg",17720            "franchise": "Dragon Ball Super Card Game",17721            "brand": "Bandai"17722          },17723          "29": {17724            "slug": "funko",17725            "franchise": null,17726            "brand": "Funko"17727          },17728          "59": {17729            "slug": "other_tcg",17730            "franchise": "KeyForge",17731            "brand": "Ghost Galaxy"17732          },17733          "62": {17734            "slug": "flesh_and_blood",17735            "franchise": "Flesh and Blood",17736            "brand": "Legend Story Studios"17737          },17738          "63": {17739            "slug": "digimon_tcg",17740            "franchise": "Digimon",17741            "brand": "Bandai"17742          },17743          "66": {17744            "slug": "other_tcg",17745            "franchise": "MetaZoo",17746            "brand": "MetaZoo Games"17747          },17748          "68": {17749            "slug": "one_piece_card_game",17750            "franchise": "One Piece",17751            "brand": "Bandai"17752          },17753          "71": {17754            "slug": "disney_lorcana",17755            "franchise": "Disney Lorcana",17756            "brand": "Ravensburger"17757          },17758          "72": {17759            "slug": "other_tcg",17760            "franchise": "Battle Spirits Saga",17761            "brand": "Bandai"17762          },17763          "74": {17764            "slug": "other_tcg",17765            "franchise": "Grand Archive",17766            "brand": "Weebs of the Shore"17767          },17768          "77": {17769            "slug": "other_tcg",17770            "franchise": "Sorcery: Contested Realm",17771            "brand": "Erik's Curiosa"17772          },17773          "79": {17774            "slug": "star_wars_tcg",17775            "franchise": "Star Wars: Unlimited",17776            "brand": "Fantasy Flight Games"17777          },17778          "80": {17779            "slug": "dragon_ball_tcg",17780            "franchise": "Dragon Ball Super Fusion World",17781            "brand": "Bandai"17782          },17783          "81": {17784            "slug": "other_tcg",17785            "franchise": "Union Arena",17786            "brand": "Bandai"17787          },17788          "85": {17789            "slug": "pokemon",17790            "franchise": "Pokémon",17791            "brand": "The Pokémon Company",17792            "language": "Japanese"17793          },17794          "86": {17795            "slug": "other_tcg",17796            "franchise": "Gundam Card Game",17797            "brand": "Bandai"17798          },17799          "89": {17800            "slug": "other_tcg",17801            "franchise": "Riftbound",17802            "brand": "Riot Games"17803          }17804        },17805        "maxGroupsPerCategory": 40,17806        "priceKinds": [17807          "market",17808          "low"17809        ]17810      },17811      "capabilities": [17812        "images",17813        "catalog"17814      ],17815      "refreshClass": "normal",17816      "domain": "tcgcsv.com",17817      "country": "US",17818      "requires": [],17819      "historicalDepth": "none"17820    },17821    {17822      "id": "tcgdex",17823      "displayName": "TCGdex (Pokémon, multilingual)",17824      "sourceId": "tcgdex",17825      "sourceName": "TCGdex",17826      "sourceType": "catalog",17827      "sourceUrl": "https://tcgdex.dev",17828      "module": "api/tcgdex",17829      "enginePriority": [17830        "api"17831      ],17832      "categories": [17833        "pokemon"17834      ],17835      "regions": [17836        "global"17837      ],17838      "languages": [17839        "en",17840        "ja",17841        "fr",17842        "de",17843        "es",17844        "it",17845        "pt",17846        "ko",17847        "zh"17848      ],17849      "currency": [17850        "USD",17851        "EUR"17852      ],17853      "supportsListings": false,17854      "supportsSold": false,17855      "supportsAuctions": false,17856      "supportsImages": true,17857      "supportsCatalog": true,17858      "supportsPopulation": false,17859      "supportsLookup": false,17860      "refreshFrequencyMinutes": 1440,17861      "priority": "high",17862      "trustScore": 0.8,17863      "attributionRequired": true,17864      "termsUrl": "https://tcgdex.dev/",17865      "accessNotes": "Open REST API (https://api.tcgdex.net/v2, no key, MIT-licensed data) covering every Pokémon TCG language including Japanese; English cards carry TCGplayer (USD) and Cardmarket (EUR) prices per variant with their own update timestamps, which we store as price observations dated by the price's `updated` field. One request per set and per card at ≈8 req/s (self-throttled 120 ms). English ids match pokemontcg.io (base1-4) so `pokemontcg_id` aligns; set codes use the PTCGO abbreviation like pokemontcg's ptcgoCode.",17866      "enabled": true,17867      "schemaVersion": "1.0",17868      "config": {17869        "languages": [17870          "en",17871          "ja"17872        ]17873      },17874      "capabilities": [17875        "images",17876        "catalog"17877      ],17878      "refreshClass": "normal",17879      "domain": "tcgdex.dev",17880      "country": "global",17881      "requires": [],17882      "historicalDepth": "none"17883    },17884    {17885      "id": "the-game-steward",17886      "displayName": "The Game Steward (US board-game store, USD)",17887      "sourceId": "the-game-steward",17888      "sourceName": "The Game Steward",17889      "sourceType": "dealer",17890      "sourceUrl": "https://www.thegamesteward.com",17891      "module": "api/the-game-steward",17892      "enginePriority": [17893        "api"17894      ],17895      "categories": [17896        "board_games"17897      ],17898      "regions": [17899        "US"17900      ],17901      "languages": [17902        "en"17903      ],17904      "currency": [17905        "USD"17906      ],17907      "supportsListings": true,17908      "supportsSold": false,17909      "supportsAuctions": false,17910      "supportsImages": true,17911      "supportsCatalog": false,17912      "supportsPopulation": false,17913      "supportsLookup": true,17914      "refreshFrequencyMinutes": 720,17915      "priority": "medium",17916      "trustScore": 0.75,17917      "attributionRequired": true,17918      "termsUrl": "https://www.thegamesteward.com/policies/terms-of-service",17919      "accessNotes": "The Game Steward (thegamesteward.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 4 configured collections (all-kickstarter-exclusive-badge, all-kickstarter-games-all-time, core-games-stand-alone-games, eagle-gryphon-deluxe-kickstarter-games) and /products/<handle>.json for URL lookups (~2.8k Kickstarter board games, 1.5k Kickstarter-exclusive editions). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — accessories (play mats, sleeves, inserts, organizers), mechanic/player-count umbrella collections, franchise duplicates. No personal data is collected; seller = the store itself.",17920      "enabled": true,17921      "schemaVersion": "1.0",17922      "config": {17923        "currency": "USD",17924        "market": "US",17925        "seller": "The Game Steward",17926        "location": "Georgia, USA",17927        "collections": [17928          {17929            "handle": "all-kickstarter-exclusive-badge",17930            "categorySlug": "board_games",17931            "series": "Kickstarter Exclusive"17932          },17933          {17934            "handle": "all-kickstarter-games-all-time",17935            "categorySlug": "board_games",17936            "series": "Kickstarter"17937          },17938          {17939            "handle": "core-games-stand-alone-games",17940            "categorySlug": "board_games"17941          },17942          {17943            "handle": "eagle-gryphon-deluxe-kickstarter-games",17944            "categorySlug": "board_games",17945            "brand": "Eagle-Gryphon Games",17946            "series": "Deluxe Kickstarter"17947          }17948        ],17949        "rules": [],17950        "defaultCategory": null,17951        "exclude": "gift card|mystery|\\| Kickstarter Board Game Accessory \\||play ?mats?|\\bsleeves?\\b|\\binserts?\\b|organizer|\\bshipping\\b|upgrade kit|dice (tower|tray|set|bag)",17952        "keepOutOfStock": true,17953        "fetchBarcodes": false,17954        "wholeShop": false,17955        "pageSize": 25017956      },17957      "capabilities": [17958        "live_listings",17959        "images",17960        "url_lookup"17961      ],17962      "refreshClass": "normal",17963      "domain": "thegamesteward.com",17964      "country": "US",17965      "requires": [],17966      "acquisitionMethod": "Shopify storefront products.json",17967      "historicalDepth": "none"17968    },17969    {17970      "id": "the-market-bonhams",17971      "displayName": "The Market by Bonhams (results)",17972      "sourceId": "the-market-bonhams",17973      "sourceName": "The Market by Bonhams",17974      "sourceType": "auction_house",17975      "sourceUrl": "https://www.themarket.co.uk",17976      "module": "api/the-market-bonhams",17977      "enginePriority": [17978        "api"17979      ],17980      "categories": [17981        "automobiles",17982        "motorcycles"17983      ],17984      "regions": [17985        "GB",17986        "EU",17987        "AU"17988      ],17989      "languages": [17990        "en"17991      ],17992      "currency": [17993        "GBP",17994        "EUR",17995        "AUD",17996        "USD"17997      ],17998      "supportsListings": false,17999      "supportsSold": true,18000      "supportsAuctions": false,18001      "supportsImages": true,18002      "supportsCatalog": false,18003      "supportsPopulation": false,18004      "supportsLookup": false,18005      "refreshFrequencyMinutes": 720,18006      "priority": "medium",18007      "trustScore": 0.85,18008      "attributionRequired": true,18009      "termsUrl": "https://www.themarket.co.uk/terms-and-conditions",18010      "accessNotes": "The Market by Bonhams (online collector-car auctions, UK/EU/AU) publishes results server-side at /auctions/results?page=N (18 cards per page, ≈330 pages back to 2019; plain HTTPS with the RareIndex user agent; robots.txt 'User-agent: * Allow: /'). Each card: title, 'Sold for £56,000 on 17 Aug 2026' (native currency symbol £/€/A$), listing URL, bid count, location. Price = winning bid; The Market charges the buyer a separate fee, so buyer_premium_included=false. Sale date = the date printed on the card. Incremental runs stop once cards older than the newest previously seen date appear; backfill walks older pages. 1.5 s politeness.",18011      "enabled": true,18012      "schemaVersion": "1.0",18013      "config": {18014        "pagesPerRun": 818015      },18016      "capabilities": [18017        "sold_listings",18018        "images"18019      ],18020      "refreshClass": "normal",18021      "domain": "themarket.co.uk",18022      "country": "GB",18023      "requires": [],18024      "historicalDepth": "none"18025    },18026    {18027      "id": "thecardvault",18028      "displayName": "The Card Vault",18029      "sourceId": "thecardvault",18030      "sourceName": "The Card Vault",18031      "sourceType": "dealer",18032      "sourceUrl": "https://thecardvault.co.uk",18033      "module": "api/thecardvault",18034      "enginePriority": [18035        "api"18036      ],18037      "categories": [18038        "pokemon",18039        "magic_the_gathering",18040        "yugioh",18041        "one_piece_card_game",18042        "disney_lorcana",18043        "dragon_ball_tcg",18044        "digimon_tcg",18045        "weiss_schwarz",18046        "star_wars_tcg",18047        "final_fantasy_tcg",18048        "other_sports_cards",18049        "funko",18050        "designer_toys",18051        "action_figures",18052        "gundam",18053        "flesh_and_blood",18054        "other_tcg",18055        "basketball_cards",18056        "football_cards",18057        "soccer_cards",18058        "baseball_cards",18059        "hockey_cards",18060        "f1_cards"18061      ],18062      "regions": [18063        "GB"18064      ],18065      "languages": [18066        "en"18067      ],18068      "currency": [18069        "GBP"18070      ],18071      "supportsListings": true,18072      "supportsSold": false,18073      "supportsAuctions": false,18074      "supportsImages": true,18075      "supportsCatalog": false,18076      "supportsPopulation": false,18077      "supportsLookup": true,18078      "refreshFrequencyMinutes": 720,18079      "priority": "medium",18080      "trustScore": 0.65,18081      "attributionRequired": true,18082      "termsUrl": "https://thecardvault.co.uk/policies/terms-of-service",18083      "accessNotes": "The Card Vault (thecardvault.co.uk) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (singles-all-card-games, pokemon-tcg-all-products, magic-the-gathering-all-products, sealed-yu-gi-oh-products, one-piece-tcg-all-products, disney-lorcana-all-products, dragon-ball-super-cg-all-products, digimon-trading-card-game, weiss-schwarz-all-products, star-wars-unlimited-all-products, final-fantasy-tcg-all-products, sports-cards-all-products, funko-pop-vinyl-figures, youtooz-collectable-vinyl-figures, iron-studios-scale-statue, good-smile-company-nendoroid-figures, bandai-gunpla). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency GBP (/meta.json currency GBP, Shopify.currency rate 1.0). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",18084      "enabled": true,18085      "schemaVersion": "1.0",18086      "config": {18087        "currency": "GBP",18088        "seller": "The Card Vault",18089        "location": null,18090        "collections": [18091          {18092            "handle": "singles-all-card-games",18093            "categorySlug": null18094          },18095          {18096            "handle": "pokemon-tcg-all-products",18097            "categorySlug": "pokemon",18098            "franchise": "Pokémon"18099          },18100          {18101            "handle": "magic-the-gathering-all-products",18102            "categorySlug": "magic_the_gathering",18103            "franchise": "Magic: The Gathering"18104          },18105          {18106            "handle": "sealed-yu-gi-oh-products",18107            "categorySlug": "yugioh",18108            "franchise": "Yu-Gi-Oh!"18109          },18110          {18111            "handle": "one-piece-tcg-all-products",18112            "categorySlug": "one_piece_card_game",18113            "franchise": "One Piece"18114          },18115          {18116            "handle": "disney-lorcana-all-products",18117            "categorySlug": "disney_lorcana",18118            "franchise": "Disney Lorcana"18119          },18120          {18121            "handle": "dragon-ball-super-cg-all-products",18122            "categorySlug": "dragon_ball_tcg",18123            "franchise": "Dragon Ball"18124          },18125          {18126            "handle": "digimon-trading-card-game",18127            "categorySlug": "digimon_tcg",18128            "franchise": "Digimon"18129          },18130          {18131            "handle": "weiss-schwarz-all-products",18132            "categorySlug": "weiss_schwarz"18133          },18134          {18135            "handle": "star-wars-unlimited-all-products",18136            "categorySlug": "star_wars_tcg",18137            "franchise": "Star Wars"18138          },18139          {18140            "handle": "final-fantasy-tcg-all-products",18141            "categorySlug": "final_fantasy_tcg",18142            "franchise": "Final Fantasy"18143          },18144          {18145            "handle": "sports-cards-all-products",18146            "categorySlug": "other_sports_cards"18147          },18148          {18149            "handle": "funko-pop-vinyl-figures",18150            "categorySlug": "funko",18151            "brand": "Funko"18152          },18153          {18154            "handle": "youtooz-collectable-vinyl-figures",18155            "categorySlug": "designer_toys",18156            "brand": "Youtooz"18157          },18158          {18159            "handle": "iron-studios-scale-statue",18160            "categorySlug": "action_figures",18161            "brand": "Iron Studios"18162          },18163          {18164            "handle": "good-smile-company-nendoroid-figures",18165            "categorySlug": "action_figures",18166            "brand": "Good Smile Company",18167            "series": "Nendoroid"18168          },18169          {18170            "handle": "bandai-gunpla",18171            "categorySlug": "gundam",18172            "brand": "Bandai",18173            "franchise": "Gundam"18174          }18175        ],18176        "rules": [18177          {18178            "match": "^(?=.*\\| singles \\|)(?=.*\\bmagic\\b)",18179            "categorySlug": "magic_the_gathering",18180            "franchise": "Magic: The Gathering"18181          },18182          {18183            "match": "^(?=.*\\| singles \\|)(?=.*one piece)",18184            "categorySlug": "one_piece_card_game",18185            "franchise": "One Piece"18186          },18187          {18188            "match": "^(?=.*\\| singles \\|)(?=.*dragon ball)",18189            "categorySlug": "dragon_ball_tcg",18190            "franchise": "Dragon Ball"18191          },18192          {18193            "match": "^(?=.*\\| singles \\|)(?=.*star wars)",18194            "categorySlug": "star_wars_tcg",18195            "franchise": "Star Wars"18196          },18197          {18198            "match": "^(?=.*\\| singles \\|)(?=.*final fantasy)",18199            "categorySlug": "final_fantasy_tcg",18200            "franchise": "Final Fantasy"18201          },18202          {18203            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:star wars:? unlimited))",18204            "categorySlug": "star_wars_tcg",18205            "franchise": "Star Wars"18206          },18207          {18208            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:lorcana))",18209            "categorySlug": "disney_lorcana",18210            "franchise": "Disney Lorcana"18211          },18212          {18213            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:one piece (card|tcg|ccg|single|promo|sealed|booster|starter)|\\bop\\d{2}\\b|one-piece-(single|tcg|card)|\\| one piece single))",18214            "categorySlug": "one_piece_card_game",18215            "franchise": "One Piece"18216          },18217          {18218            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:dragon ?ball (super |z )?(card|tcg|ccg|fusion world)|fusion world|dragonball-super|dragon-ball-super))",18219            "categorySlug": "dragon_ball_tcg",18220            "franchise": "Dragon Ball"18221          },18222          {18223            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:digimon))",18224            "categorySlug": "digimon_tcg",18225            "franchise": "Digimon"18226          },18227          {18228            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:flesh (and|&) blood|\\bfab\\b))",18229            "categorySlug": "flesh_and_blood",18230            "franchise": "Flesh and Blood"18231          },18232          {18233            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:wei(ss|ß) schwarz))",18234            "categorySlug": "weiss_schwarz"18235          },18236          {18237            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:final fantasy (tcg|trading card|opus)|\\bopus (i{1,3}|iv|v|vi{0,3}|ix|x{1,2}|xi{1,3}|xiv|xv)\\b|\\bfftcg\\b))",18238            "categorySlug": "final_fantasy_tcg",18239            "franchise": "Final Fantasy"18240          },18241          {18242            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:yu-?gi-?oh|\\bygo\\b|yugioh))",18243            "categorySlug": "yugioh",18244            "franchise": "Yu-Gi-Oh!"18245          },18246          {18247            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:pok[eé]mon|\\bpkm\\b))",18248            "categorySlug": "pokemon",18249            "franchise": "Pokémon"18250          },18251          {18252            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:magic:? the gathering|\\bmtg\\b|magic single|secret lair|\\bcommander\\b|universes beyond|planeswalker))",18253            "categorySlug": "magic_the_gathering",18254            "franchise": "Magic: The Gathering"18255          },18256          {18257            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:cardfight|vanguard|battle spirits|union arena|riftbound|grand archive|gundam (card|tcg)|hololive (official )?card|shadowverse|sorcery:? contested|\\baltered\\b|elestrals|alpha clash|universus|my hero academia (ccg|tcg|single)|akora|kryptik|cyberpunk tcg|neuroscape|beyblade x (tcg|card)))",18258            "categorySlug": "other_tcg"18259          },18260          {18261            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bnba\\b|basketball|wnba))",18262            "categorySlug": "basketball_cards"18263          },18264          {18265            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bnfl\\b|american football))",18266            "categorySlug": "football_cards"18267          },18268          {18269            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:soccer|premier league|uefa|champions league|world cup|\\bepl\\b|bundesliga|la liga|serie a|match attax|\\bfifa\\b|road to (world cup|euro)))",18270            "categorySlug": "soccer_cards"18271          },18272          {18273            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bmlb\\b|baseball))",18274            "categorySlug": "baseball_cards"18275          },18276          {18277            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bnhl\\b|hockey))",18278            "categorySlug": "hockey_cards"18279          },18280          {18281            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bf1\\b|formula (1|one)|grand prix))",18282            "categorySlug": "f1_cards"18283          },18284          {18285            "match": "^(?!.*\\| [^|]*(?:figure|statue|plush|model kit|nendoroid|gunpla|calendar)[^|]* \\|)(?=.*(?:\\bufc\\b|wrestling|\\bwwe\\b|\\baew\\b|\\bafl\\b|\\bnrl\\b|tennis|\\bgolf\\b|cricket|rugby|boxing|nascar|racing|olympic))",18286            "categorySlug": "other_sports_cards"18287          }18288        ],18289        "defaultCategory": null,18290        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|advent calendar|cable guy|mocchi|plush|collection only|9-pocket|12-pocket|4-pocket",18291        "keepOutOfStock": true,18292        "titlePattern": "^(?<name>[^()]+?) \\((?<number>\\d[\\w/-]*)\\)$",18293        "pageSize": 250,18294        "fetchBarcodes": false,18295        "wholeShop": false18296      },18297      "capabilities": [18298        "live_listings",18299        "images",18300        "url_lookup"18301      ],18302      "refreshClass": "normal",18303      "domain": "thecardvault.co.uk",18304      "country": "GB",18305      "requires": [],18306      "acquisitionMethod": "Shopify storefront products.json (public JSON)",18307      "historicalDepth": "none"18308    },18309    {18310      "id": "tokyo-chuo",18311      "displayName": "Tokyo Chuo Auction (results, tcabid.com)",18312      "sourceId": "tokyo-chuo",18313      "sourceName": "Tokyo Chuo Auction",18314      "sourceType": "auction_house",18315      "sourceUrl": "https://tcabid.com",18316      "module": "api/tokyo-chuo",18317      "enginePriority": [18318        "api"18319      ],18320      "categories": [18321        "art",18322        "contemporary_art",18323        "antiques",18324        "porcelain",18325        "jewelry",18326        "gemstones",18327        "other_watches",18328        "rolex",18329        "patek_philippe",18330        "whisky",18331        "wine",18332        "coins",18333        "stamps",18334        "luxury_handbags",18335        "books",18336        "manga",18337        "designer_toys",18338        "cameras"18339      ],18340      "regions": [18341        "HK",18342        "JP",18343        "TW"18344      ],18345      "languages": [18346        "zh",18347        "ja",18348        "en"18349      ],18350      "currency": [18351        "HKD",18352        "JPY",18353        "TWD"18354      ],18355      "supportsListings": false,18356      "supportsSold": true,18357      "supportsAuctions": true,18358      "supportsImages": true,18359      "supportsCatalog": false,18360      "supportsPopulation": false,18361      "supportsLookup": false,18362      "refreshFrequencyMinutes": 1440,18363      "priority": "medium",18364      "trustScore": 0.85,18365      "attributionRequired": true,18366      "termsUrl": "https://www.chuo-auction.com/zh/buyer",18367      "accessNotes": "Tokyo Chuo Auction (東京中央オークション: Tokyo, Hong Kong, Taipei) publishes its catalogues and results on the tcabid.com single-page app whose unauthenticated JSON API we read: GET /app_api/v1/auctions/finished_auctions_and_store_categories (past sales with start_at, place, lot_count) and GET /app_api/v1/auction_items?auction_category_auction_id_eq=<auctionId>&per_page=100&page=N (lots: number, title, description, final_price, status hammered/unsold, transaction_time, estimate range, images, auction_category.currency — HKD/JPY/TWD depending on the saleroom). No key, no cookies, honest UA; verified 200. tcabid.com has no robots.txt rules (the SPA shell is served); the corporate site chuo-auction.com is not crawled. final_price is the HAMMER price (the site labels it 落札価格 and the buyer's commission 15–20 % is described separately on the auction page) → buyer_premium_included=false. Native currency preserved per lot; lots whose currency is missing/unsupported are dropped. Sale date = the lot's transaction_time (falls back to the auction start). No bidder or user data. 1.5 s politeness; salesPerRun caps incremental runs; backfill walks all finished auctions with a resumable cursor.",18368      "enabled": true,18369      "schemaVersion": "1.0",18370      "config": {18371        "perPage": 100,18372        "auctionsListSize": 200,18373        "salesPerRun": 218374      },18375      "capabilities": [18376        "sold_listings",18377        "auction_results",18378        "images",18379        "historical_backfill"18380      ],18381      "refreshClass": "normal",18382      "domain": "tcabid.com",18383      "country": "HK",18384      "requires": [],18385      "acquisitionMethod": "public JSON API of the tcabid.com bidding platform (BiddingArt)",18386      "historicalDepth": "years"18387    },18388    {18389      "id": "totalcards",18390      "displayName": "Total Cards",18391      "sourceId": "totalcards",18392      "sourceName": "Total Cards",18393      "sourceType": "dealer",18394      "sourceUrl": "https://www.totalcards.net",18395      "module": "api/totalcards",18396      "enginePriority": [18397        "api"18398      ],18399      "categories": [18400        "pokemon",18401        "magic_the_gathering",18402        "disney_lorcana",18403        "one_piece_card_game",18404        "digimon_tcg",18405        "dragon_ball_tcg",18406        "final_fantasy_tcg",18407        "star_wars_tcg",18408        "other_tcg",18409        "funko",18410        "action_figures",18411        "comics",18412        "marvel_comics",18413        "dc_comics",18414        "independent_comics",18415        "designer_toys",18416        "gundam"18417      ],18418      "regions": [18419        "GB"18420      ],18421      "languages": [18422        "en"18423      ],18424      "currency": [18425        "GBP"18426      ],18427      "supportsListings": true,18428      "supportsSold": false,18429      "supportsAuctions": false,18430      "supportsImages": true,18431      "supportsCatalog": false,18432      "supportsPopulation": false,18433      "supportsLookup": true,18434      "refreshFrequencyMinutes": 720,18435      "priority": "medium",18436      "trustScore": 0.7,18437      "attributionRequired": true,18438      "termsUrl": "https://www.totalcards.net/policies/terms-of-service",18439      "accessNotes": "Total Cards (totalcards.net) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (pokemon-single-cards, pokemon-japanese-single-cards, pokemon-sealed-products, magic-the-gathering-single-cards, lorcana-single-cards, one-piece-single-cards, digimon-single-cards, dragon-ball-super-single-cards, final-fantasy-single-cards, star-wars-unlimited, cardfight-vanguard-single-cards, funko-pop, figures, comic-books). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, twice a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices in products.json are the shop base currency GBP (Shopify.currency rate 1.0, /meta.json currency GBP); UK VAT included. Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",18440      "enabled": true,18441      "schemaVersion": "1.0",18442      "config": {18443        "currency": "GBP",18444        "seller": "Total Cards",18445        "location": null,18446        "collections": [18447          {18448            "handle": "pokemon-single-cards",18449            "categorySlug": "pokemon",18450            "franchise": "Pokémon"18451          },18452          {18453            "handle": "pokemon-japanese-single-cards",18454            "categorySlug": "pokemon",18455            "franchise": "Pokémon"18456          },18457          {18458            "handle": "pokemon-sealed-products",18459            "categorySlug": "pokemon",18460            "franchise": "Pokémon"18461          },18462          {18463            "handle": "magic-the-gathering-single-cards",18464            "categorySlug": "magic_the_gathering",18465            "franchise": "Magic: The Gathering"18466          },18467          {18468            "handle": "lorcana-single-cards",18469            "categorySlug": "disney_lorcana",18470            "franchise": "Disney Lorcana"18471          },18472          {18473            "handle": "one-piece-single-cards",18474            "categorySlug": "one_piece_card_game",18475            "franchise": "One Piece"18476          },18477          {18478            "handle": "digimon-single-cards",18479            "categorySlug": "digimon_tcg",18480            "franchise": "Digimon"18481          },18482          {18483            "handle": "dragon-ball-super-single-cards",18484            "categorySlug": "dragon_ball_tcg",18485            "franchise": "Dragon Ball"18486          },18487          {18488            "handle": "final-fantasy-single-cards",18489            "categorySlug": "final_fantasy_tcg",18490            "franchise": "Final Fantasy"18491          },18492          {18493            "handle": "star-wars-unlimited",18494            "categorySlug": "star_wars_tcg",18495            "franchise": "Star Wars"18496          },18497          {18498            "handle": "cardfight-vanguard-single-cards",18499            "categorySlug": "other_tcg"18500          },18501          {18502            "handle": "funko-pop",18503            "categorySlug": "funko",18504            "brand": "Funko"18505          },18506          {18507            "handle": "figures",18508            "categorySlug": "action_figures"18509          },18510          {18511            "handle": "comic-books",18512            "categorySlug": "comics"18513          }18514        ],18515        "rules": [18516          {18517            "match": "^(?=.*\\| Comic Book \\|)(?=.*(?:\\bmarvel\\b|spider-?man|x-men|avengers|wolverine|daredevil|hulk|iron man|captain america|deadpool|fantastic four|thor\\b|venom|punisher|moon knight|black panther))",18518            "categorySlug": "marvel_comics",18519            "brand": "Marvel"18520          },18521          {18522            "match": "^(?=.*\\| Comic Book \\|)(?=.*(?:\\bdc comics\\b|\\bdc\\b|batman|superman|wonder woman|justice league|flash\\b|green lantern|aquaman|harley quinn|joker|nightwing|swamp thing|sandman|watchmen|vertigo))",18523            "categorySlug": "dc_comics",18524            "brand": "DC"18525          },18526          {18527            "match": "^(?=.*\\| Comic Book \\|)(?=.*(?:image comics|dark horse|\\bidw\\b|boom! ?studios|dynamite|valiant|oni press|2000 ad|archie|spawn|invincible|walking dead|saga\\b|hellboy|tmnt|teenage mutant|transformers|2000ad|rebellion|titan comics|ahoy|mad cave|vault comics|aftershock|zenescope|fantagraphics|drawn & quarterly|avery hill))",18528            "categorySlug": "independent_comics"18529          },18530          {18531            "match": "funko|pop! ?vinyl|pop vinyl|\\bpop!\\b|pop! games|pop! animation|pop! movies",18532            "categorySlug": "funko",18533            "brand": "Funko"18534          },18535          {18536            "match": "be@rbrick|bearbrick|be rbrick|\\bkaws\\b|labubu|pop ?mart|art toy|blind ?box|designer toy|medicom|kubrick|the monsters|skullpanda|hirono|crybaby|molly\\b|dimoo|sonny angel",18537            "categorySlug": "designer_toys"18538          },18539          {18540            "match": "gunpla|gundam|figure-?rise|\\b30 ?m[ms]\\b|30 minutes (missions|sisters)",18541            "categorySlug": "gundam",18542            "franchise": "Gundam"18543          }18544        ],18545        "defaultCategory": null,18546        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|code card|energy card only|damaged box only",18547        "keepOutOfStock": true,18548        "titlePattern": "^[^-]+? - (?<set>.+) - (?<name>.+?) - (?<number>[\\w/]+)(?: \\(Foil\\))?$",18549        "pageSize": 250,18550        "fetchBarcodes": false,18551        "wholeShop": false18552      },18553      "capabilities": [18554        "live_listings",18555        "images",18556        "url_lookup"18557      ],18558      "refreshClass": "normal",18559      "domain": "totalcards.net",18560      "country": "GB",18561      "requires": [],18562      "acquisitionMethod": "Shopify storefront products.json (public JSON)",18563      "historicalDepth": "none"18564    },18565    {18566      "id": "toy-snowman",18567      "displayName": "Toy Snowman (Canadian TCG & collector-toy store, CAD)",18568      "sourceId": "toy-snowman",18569      "sourceName": "Toy Snowman",18570      "sourceType": "dealer",18571      "sourceUrl": "https://www.toysnowman.ca",18572      "module": "api/toy-snowman",18573      "enginePriority": [18574        "api"18575      ],18576      "categories": [18577        "magic_the_gathering",18578        "pokemon",18579        "one_piece_card_game",18580        "other_tcg",18581        "action_figures",18582        "gundam",18583        "lego_sets",18584        "funko",18585        "warhammer"18586      ],18587      "regions": [18588        "CA"18589      ],18590      "languages": [18591        "en"18592      ],18593      "currency": [18594        "CAD"18595      ],18596      "supportsListings": true,18597      "supportsSold": false,18598      "supportsAuctions": false,18599      "supportsImages": true,18600      "supportsCatalog": false,18601      "supportsPopulation": false,18602      "supportsLookup": true,18603      "refreshFrequencyMinutes": 720,18604      "priority": "medium",18605      "trustScore": 0.75,18606      "attributionRequired": true,18607      "termsUrl": "https://www.toysnowman.ca/policies/terms-of-service",18608      "accessNotes": "Toy Snowman (toysnowman.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 22 configured collections (magic-the-gathering-singles, pokemon-tcg-singles, pokemon-tcg, one-piece-tcg, riftbound-tcg-ccg, gundam-card-game-gundam-tcg, star-wars-the-black-series, marvel-legends … (+14 more, see config.collections)) and /products/<handle>.json for URL lookups (~9.5k products; 6k MTG singles, 700 Pokémon singles, ~2k collector figures). 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 — paints/hobby supplies, Black Library books/codexes, sale umbrella collections, accessories & supplies for toys. No personal data is collected; seller = the store itself.",18609      "enabled": true,18610      "schemaVersion": "1.0",18611      "config": {18612        "currency": "CAD",18613        "market": "CA",18614        "seller": "Toy Snowman",18615        "location": "Canada (online)",18616        "collections": [18617          {18618            "handle": "magic-the-gathering-singles",18619            "categorySlug": "magic_the_gathering",18620            "franchise": "Magic: The Gathering"18621          },18622          {18623            "handle": "pokemon-tcg-singles",18624            "categorySlug": "pokemon",18625            "franchise": "Pokémon"18626          },18627          {18628            "handle": "pokemon-tcg",18629            "categorySlug": "pokemon",18630            "franchise": "Pokémon"18631          },18632          {18633            "handle": "one-piece-tcg",18634            "categorySlug": "one_piece_card_game",18635            "franchise": "One Piece"18636          },18637          {18638            "handle": "riftbound-tcg-ccg",18639            "categorySlug": "other_tcg",18640            "franchise": "Riftbound"18641          },18642          {18643            "handle": "gundam-card-game-gundam-tcg",18644            "categorySlug": "other_tcg",18645            "franchise": "Gundam Card Game"18646          },18647          {18648            "handle": "star-wars-the-black-series",18649            "categorySlug": "action_figures",18650            "franchise": "Star Wars"18651          },18652          {18653            "handle": "marvel-legends",18654            "categorySlug": "action_figures",18655            "brand": "Hasbro",18656            "franchise": "Marvel",18657            "series": "Marvel Legends"18658          },18659          {18660            "handle": "sh-monsterarts-sh-figuarts",18661            "categorySlug": "action_figures",18662            "brand": "Bandai",18663            "series": "S.H.Figuarts / S.H.MonsterArts"18664          },18665          {18666            "handle": "four-horsemen-mythic-legion",18667            "categorySlug": "action_figures",18668            "brand": "Four Horsemen Studios",18669            "series": "Mythic Legions"18670          },18671          {18672            "handle": "mythic-legions",18673            "categorySlug": "action_figures",18674            "brand": "Four Horsemen Studios",18675            "series": "Mythic Legions"18676          },18677          {18678            "handle": "neca",18679            "categorySlug": "action_figures",18680            "brand": "NECA"18681          },18682          {18683            "handle": "transformers",18684            "categorySlug": "action_figures",18685            "franchise": "Transformers"18686          },18687          {18688            "handle": "godzilla",18689            "categorySlug": "action_figures",18690            "franchise": "Godzilla"18691          },18692          {18693            "handle": "mcfarlane-toys-1",18694            "categorySlug": "action_figures",18695            "brand": "McFarlane Toys"18696          },18697          {18698            "handle": "threezero",18699            "categorySlug": "action_figures",18700            "brand": "threezero"18701          },18702          {18703            "handle": "hiya-toys",18704            "categorySlug": "action_figures",18705            "brand": "Hiya Toys"18706          },18707          {18708            "handle": "gundam",18709            "categorySlug": "gundam",18710            "brand": "Bandai",18711            "franchise": "Gundam"18712          },18713          {18714            "handle": "lego",18715            "categorySlug": "lego_sets",18716            "brand": "LEGO"18717          },18718          {18719            "handle": "funko",18720            "categorySlug": "funko",18721            "brand": "Funko"18722          },18723          {18724            "handle": "warhammer-40k",18725            "categorySlug": "warhammer",18726            "brand": "Games Workshop",18727            "franchise": "Warhammer 40,000"18728          },18729          {18730            "handle": "age-of-sigmar",18731            "categorySlug": "warhammer",18732            "brand": "Games Workshop",18733            "franchise": "Warhammer Age of Sigmar"18734          }18735        ],18736        "rules": [],18737        "defaultCategory": null,18738        "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|display case|acrylic case|\\bstand\\b|\\bcodex\\b|\\bbattletome\\b|rulebook|\\bnovel\\b|paperback|hardcover",18739        "keepOutOfStock": true,18740        "fetchBarcodes": false,18741        "wholeShop": false,18742        "pageSize": 25018743      },18744      "capabilities": [18745        "live_listings",18746        "images",18747        "url_lookup"18748      ],18749      "refreshClass": "normal",18750      "domain": "toysnowman.ca",18751      "country": "CA",18752      "requires": [],18753      "acquisitionMethod": "Shopify storefront products.json",18754      "historicalDepth": "none"18755    },18756    {18757      "id": "toy-tokyo",18758      "displayName": "Toy Tokyo (US collector-toy store, USD)",18759      "sourceId": "toy-tokyo",18760      "sourceName": "Toy Tokyo",18761      "sourceType": "dealer",18762      "sourceUrl": "https://www.toytokyo.com",18763      "module": "api/toy-tokyo",18764      "enginePriority": [18765        "api"18766      ],18767      "categories": [18768        "funko",18769        "designer_toys",18770        "action_figures"18771      ],18772      "regions": [18773        "US"18774      ],18775      "languages": [18776        "en"18777      ],18778      "currency": [18779        "USD"18780      ],18781      "supportsListings": true,18782      "supportsSold": false,18783      "supportsAuctions": false,18784      "supportsImages": true,18785      "supportsCatalog": false,18786      "supportsPopulation": false,18787      "supportsLookup": true,18788      "refreshFrequencyMinutes": 720,18789      "priority": "medium",18790      "trustScore": 0.75,18791      "attributionRequired": true,18792      "termsUrl": "https://www.toytokyo.com/policies/terms-of-service",18793      "accessNotes": "Toy Tokyo (toytokyo.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 31 configured collections (funko, pop-animation, pop-anime, pop-disney, pop-television, pop-marvel, pop-games, pop-dc … (+23 more, see config.collections)) and /products/<handle>.json for URL lookups (~860 Funko Pop! (incl. Toy Tokyo exclusives), 455 Medicom / 160 BE@RBRICK, 390 Banpresto, KAWS, sofubi). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — accessories/apparel/enamel pins/keychains/plush, gift and holiday umbrella collections, NTWRK drops. No personal data is collected; seller = the store itself.",18794      "enabled": true,18795      "schemaVersion": "1.0",18796      "config": {18797        "currency": "USD",18798        "market": "US",18799        "seller": "Toy Tokyo",18800        "location": "New York, NY, USA",18801        "collections": [18802          {18803            "handle": "funko",18804            "categorySlug": "funko",18805            "brand": "Funko"18806          },18807          {18808            "handle": "pop-animation",18809            "categorySlug": "funko",18810            "brand": "Funko"18811          },18812          {18813            "handle": "pop-anime",18814            "categorySlug": "funko",18815            "brand": "Funko"18816          },18817          {18818            "handle": "pop-disney",18819            "categorySlug": "funko",18820            "brand": "Funko"18821          },18822          {18823            "handle": "pop-television",18824            "categorySlug": "funko",18825            "brand": "Funko"18826          },18827          {18828            "handle": "pop-marvel",18829            "categorySlug": "funko",18830            "brand": "Funko"18831          },18832          {18833            "handle": "pop-games",18834            "categorySlug": "funko",18835            "brand": "Funko"18836          },18837          {18838            "handle": "pop-dc",18839            "categorySlug": "funko",18840            "brand": "Funko"18841          },18842          {18843            "handle": "pop-star-wars",18844            "categorySlug": "funko",18845            "brand": "Funko"18846          },18847          {18848            "handle": "pop-movies",18849            "categorySlug": "funko",18850            "brand": "Funko"18851          },18852          {18853            "handle": "pop-heroes",18854            "categorySlug": "funko",18855            "brand": "Funko"18856          },18857          {18858            "handle": "pop-pokemon-1",18859            "categorySlug": "funko",18860            "brand": "Funko"18861          },18862          {18863            "handle": "pop-icons",18864            "categorySlug": "funko",18865            "brand": "Funko"18866          },18867          {18868            "handle": "pop-toy-tokyo",18869            "categorySlug": "funko",18870            "brand": "Funko"18871          },18872          {18873            "handle": "pop-soda",18874            "categorySlug": "funko",18875            "brand": "Funko"18876          },18877          {18878            "handle": "pop-rocks-1",18879            "categorySlug": "funko",18880            "brand": "Funko"18881          },18882          {18883            "handle": "medicom-toy",18884            "categorySlug": "designer_toys",18885            "brand": "Medicom Toy"18886          },18887          {18888            "handle": "be-rbricks",18889            "categorySlug": "designer_toys",18890            "brand": "Medicom Toy",18891            "series": "BE@RBRICK"18892          },18893          {18894            "handle": "1000-be-rbrick",18895            "categorySlug": "designer_toys",18896            "brand": "Medicom Toy",18897            "series": "BE@RBRICK"18898          },18899          {18900            "handle": "100-be-rbrick",18901            "categorySlug": "designer_toys",18902            "brand": "Medicom Toy",18903            "series": "BE@RBRICK"18904          },18905          {18906            "handle": "vcd",18907            "categorySlug": "designer_toys",18908            "brand": "Medicom Toy",18909            "series": "VCD"18910          },18911          {18912            "handle": "kaws",18913            "categorySlug": "designer_toys",18914            "brand": "KAWS"18915          },18916          {18917            "handle": "sofubi",18918            "categorySlug": "designer_toys"18919          },18920          {18921            "handle": "vinyl",18922            "categorySlug": "designer_toys"18923          },18924          {18925            "handle": "action-figures",18926            "categorySlug": "action_figures"18927          },18928          {18929            "handle": "banpresto",18930            "categorySlug": "action_figures",18931            "brand": "Banpresto"18932          },18933          {18934            "handle": "bandai",18935            "categorySlug": "action_figures",18936            "brand": "Bandai"18937          },18938          {18939            "handle": "neca",18940            "categorySlug": "action_figures",18941            "brand": "NECA"18942          },18943          {18944            "handle": "mezco",18945            "categorySlug": "action_figures",18946            "brand": "Mezco Toyz"18947          },18948          {18949            "handle": "star-wars",18950            "categorySlug": "action_figures",18951            "franchise": "Star Wars"18952          },18953          {18954            "handle": "godzilla-1",18955            "categorySlug": "action_figures",18956            "franchise": "Godzilla"18957          }18958        ],18959        "rules": [18960          {18961            "match": "\\bfunko\\b|\\bpop!",18962            "categorySlug": "funko",18963            "brand": "Funko"18964          },18965          {18966            "match": "be@rbrick|bearbrick|be-rbrick",18967            "categorySlug": "designer_toys",18968            "brand": "Medicom Toy",18969            "series": "BE@RBRICK"18970          },18971          {18972            "match": "\\bkaws\\b",18973            "categorySlug": "designer_toys",18974            "brand": "KAWS"18975          },18976          {18977            "match": "\\bsofubi\\b|\\bsoft vinyl\\b",18978            "categorySlug": "designer_toys"18979          }18980        ],18981        "defaultCategory": null,18982        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Hats?|Accessories|Pins?|Enamel Pins?|Patches?|Socks|Hoodies?|Bags?|Stationery|Stickers?|Prints?|Posters?|Merch|Keychains?|Lanyards?|Pins? Lanyard Set|Books?|Toy Displays?|Home Goods|Drinkware) \\||t-shirt|\\btee\\b|hoodie|sweatshirt|\\bhat\\b|\\bcap\\b|beanie|\\bsocks?\\b|enamel pin|\\bpins? set\\b|\\bpatch\\b|sticker|\\bkeychain\\b|lanyard|\\bmug\\b|\\btote\\b|tumbler|display case|acrylic case|pop protector only|art print|\\bposter\\b|\\bzine\\b|\\bbook\\b|\\bgame\\b|puzzle|blanket|towel|\\bwallet\\b|backpack|\\bshirt\\b",18983        "keepOutOfStock": true,18984        "fetchBarcodes": false,18985        "wholeShop": false,18986        "pageSize": 25018987      },18988      "capabilities": [18989        "live_listings",18990        "images",18991        "url_lookup"18992      ],18993      "refreshClass": "normal",18994      "domain": "toytokyo.com",18995      "country": "US",18996      "requires": [],18997      "acquisitionMethod": "Shopify storefront products.json",18998      "historicalDepth": "none"18999    },19000    {19001      "id": "toyzeroplus",19002      "displayName": "TOYZEROPLUS",19003      "sourceId": "toyzeroplus",19004      "sourceName": "TOYZEROPLUS",19005      "sourceType": "dealer",19006      "sourceUrl": "https://toyzeroplus.com",19007      "module": "api/toyzeroplus",19008      "enginePriority": [19009        "api"19010      ],19011      "categories": [19012        "designer_toys"19013      ],19014      "regions": [19015        "HK"19016      ],19017      "languages": [19018        "en",19019        "zh"19020      ],19021      "currency": [19022        "HKD"19023      ],19024      "supportsListings": true,19025      "supportsSold": false,19026      "supportsAuctions": false,19027      "supportsImages": true,19028      "supportsCatalog": false,19029      "supportsPopulation": false,19030      "supportsLookup": true,19031      "refreshFrequencyMinutes": 1440,19032      "priority": "medium",19033      "trustScore": 0.7,19034      "attributionRequired": true,19035      "termsUrl": "https://toyzeroplus.com/policies/terms-of-service",19036      "accessNotes": "TOYZEROPLUS (toyzeroplus.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (art-toy, blind-box, pp-x-monster, pp-baby, lulu-the-piggy, aaaz, banggri, dog-together-studio, esther-bunny, cici-s-story, mewky). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency HKD (/meta.json currency HKD, country HK, Shopify.currency rate 1.0). A blind-box product has \"Single\"/\"Set\" variants (the Set price is the full case). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",19037      "enabled": true,19038      "schemaVersion": "1.0",19039      "config": {19040        "currency": "HKD",19041        "seller": "TOYZEROPLUS",19042        "location": null,19043        "collections": [19044          {19045            "handle": "art-toy",19046            "categorySlug": "designer_toys",19047            "brand": "TOYZEROPLUS"19048          },19049          {19050            "handle": "blind-box",19051            "categorySlug": "designer_toys",19052            "brand": "TOYZEROPLUS"19053          },19054          {19055            "handle": "pp-x-monster",19056            "categorySlug": "designer_toys",19057            "brand": "TOYZEROPLUS",19058            "series": "PP x Monster"19059          },19060          {19061            "handle": "pp-baby",19062            "categorySlug": "designer_toys",19063            "brand": "TOYZEROPLUS",19064            "series": "PP Baby"19065          },19066          {19067            "handle": "lulu-the-piggy",19068            "categorySlug": "designer_toys",19069            "brand": "TOYZEROPLUS",19070            "series": "Lulu the Piggy"19071          },19072          {19073            "handle": "aaaz",19074            "categorySlug": "designer_toys",19075            "brand": "TOYZEROPLUS"19076          },19077          {19078            "handle": "banggri",19079            "categorySlug": "designer_toys",19080            "brand": "TOYZEROPLUS",19081            "series": "Banggri"19082          },19083          {19084            "handle": "dog-together-studio",19085            "categorySlug": "designer_toys",19086            "brand": "TOYZEROPLUS",19087            "series": "Dog Together"19088          },19089          {19090            "handle": "esther-bunny",19091            "categorySlug": "designer_toys",19092            "brand": "TOYZEROPLUS",19093            "series": "Esther Bunny"19094          },19095          {19096            "handle": "cici-s-story",19097            "categorySlug": "designer_toys",19098            "brand": "TOYZEROPLUS",19099            "series": "CiCi's Story"19100          },19101          {19102            "handle": "mewky",19103            "categorySlug": "designer_toys",19104            "brand": "TOYZEROPLUS",19105            "series": "Mewky"19106          }19107        ],19108        "rules": [],19109        "defaultCategory": null,19110        "exclude": "gift card|side product|side-product|merchandise|t-shirt|tote|cushion|pouch|sticker|towel|\\bmug\\b|\\bbadge\\b|notebook|umbrella|card holder|phone case|socks|\\bcap\\b|hoodie|blanket|tumbler|lanyard|bookmark|postcard|coaster|pillow|\\bbag\\b|charm only|red packet|calendar",19111        "keepOutOfStock": true,19112        "pageSize": 250,19113        "fetchBarcodes": false,19114        "wholeShop": false19115      },19116      "capabilities": [19117        "live_listings",19118        "images",19119        "url_lookup"19120      ],19121      "refreshClass": "normal",19122      "domain": "toyzeroplus.com",19123      "country": "HK",19124      "requires": [],19125      "acquisitionMethod": "Shopify storefront products.json (public JSON)",19126      "historicalDepth": "none"19127    },19128    {19129      "id": "trademe",19130      "displayName": "Trade Me API (New Zealand collectibles listings, NZD) — gated",19131      "sourceId": "trademe",19132      "sourceName": "Trade Me",19133      "sourceType": "marketplace",19134      "sourceUrl": "https://www.trademe.co.nz",19135      "module": "api/trademe",19136      "enginePriority": [19137        "api"19138      ],19139      "categories": [19140        "coins",19141        "banknotes",19142        "stamps",19143        "clocks",19144        "scientific_instruments",19145        "silver",19146        "jewelry",19147        "other_watches",19148        "militaria",19149        "medals",19150        "movie_memorabilia",19151        "pins",19152        "postcards",19153        "design_furniture",19154        "antiques",19155        "automotive_memorabilia",19156        "maps",19157        "historical_documents",19158        "royal_memorabilia",19159        "advertising",19160        "porcelain",19161        "glass_crystal",19162        "vintage_toys",19163        "model_cars",19164        "lego_sets",19165        "trading_cards",19166        "music",19167        "music_memorabilia",19168        "books",19169        "comics",19170        "cameras"19171      ],19172      "regions": [19173        "NZ"19174      ],19175      "languages": [19176        "en"19177      ],19178      "currency": [19179        "NZD"19180      ],19181      "supportsListings": true,19182      "supportsSold": false,19183      "supportsAuctions": false,19184      "supportsImages": true,19185      "supportsCatalog": false,19186      "supportsPopulation": false,19187      "supportsLookup": false,19188      "refreshFrequencyMinutes": 360,19189      "priority": "low",19190      "trustScore": 0.7,19191      "attributionRequired": true,19192      "termsUrl": "https://developer.trademe.co.nz/api-terms/",19193      "accessNotes": "Official Trade Me API v1 (developer.trademe.co.nz). GET https://api.trademe.co.nz/v1/Search/General.json?category=<number>&rows=25&page=N&sort_order=Default&photo_size=Large. Public search methods accept application-only OAuth 1.0a: Authorization: OAuth oauth_consumer_key=\"<key>\", oauth_signature_method=\"PLAINTEXT\", oauth_signature=\"<consumer_secret>&\" — no member token is required or requested. Response: TotalCount, Page, PageSize and List[] of listings with ListingId, Title, Subtitle, Category (number), CategoryPath, StartPrice, BuyNowPrice, MaxBidAmount, BidCount, HasBuyNow, HasReserve/ReserveState, IsClassified, IsNew, StartDate/EndDate (.NET '/Date(ms)/'), PictureHref, Region/Suburb (public listing location, no member data), Attributes. All prices NZD → listings (Buy Now price when offered, else leading bid, else start price; auctions labelled listingType=auction with bidCount). Seeds: the category numbers from /v1/Categories.json (public, verified 2026-09-08): Antiques & collectables (0187-…: Coins 4353, Banknotes 4342, Stamps 4383, Clocks & scientific instruments 3210, Silver metalware & tins 3224, Jewellery 3212, Militaria 0451, Movie & TV memorabilia 6216, Pins badges & patches 0454, Postcards & writing 0455, Art deco & retro 2192, Furniture & woodenware 3215, Automotive & transport 0443, Documents & maps 3232, Royal family 6492, Advertising 1443), Toys & models (0347-2695 Vintage, 0347-0921 Die casts, 0347-0923 Lego), Gaming trading cards 0202-3193, Music vinyl 0343-0894 & memorabilia 0343-3151, Jewellery & watches 0246-0486, Pottery & glass (0340-2609, 0340-2650), Rare & collectable books 0193-0466, Comics 0193-1222, Film cameras 0124-3412. Rate limits: Trade Me counts calls per hour per application (1,000/h per authenticated user; application-only calls share the app allowance) and answers HTTP 429 when exceeded — we run ≤ 8 categories × 1 page every 6 h (rows=25, the documented default; larger row counts may need a member token). Production applications must be reviewed by Trade Me staff (developer.trademe.co.nz → Register an application; sandbox api.tmsandbox.co.nz with TRADEME_ENV=sandbox). Set TRADEME_CONSUMER_KEY and TRADEME_CONSUMER_SECRET; until then the framework reports the connector DISABLED (requires) and the crawler exits with a missing_credentials anomaly. Trade Me has no public sold-price endpoint (closed listings are only visible to the parties) → listings only. Fixture synthesised from the documented response fields (SearchResults/Listing), not a live capture. API Terms: data may be displayed with attribution to Trade Me and must not be resold as a raw feed; RareIndex keeps only listing-level market data with source links.",19194      "enabled": true,19195      "schemaVersion": "1.0",19196      "config": {19197        "rows": 25,19198        "pagesPerCategory": 1,19199        "backfillPages": 8,19200        "categoriesPerRun": 8,19201        "sortOrder": "Default",19202        "condition": "All",19203        "photoSize": "Large",19204        "categories": [19205          {19206            "category": "0187-4353-",19207            "categorySlug": "coins"19208          },19209          {19210            "category": "0187-4342-",19211            "categorySlug": "banknotes"19212          },19213          {19214            "category": "0187-4383-",19215            "categorySlug": "stamps"19216          },19217          {19218            "category": "0187-3210-",19219            "categorySlug": "clocks",19220            "hint": "science"19221          },19222          {19223            "category": "0187-3224-",19224            "categorySlug": "silver"19225          },19226          {19227            "category": "0187-3212-",19228            "categorySlug": "jewelry"19229          },19230          {19231            "category": "0187-0451-",19232            "categorySlug": "militaria",19233            "hint": "militaria"19234          },19235          {19236            "category": "0187-6216-",19237            "categorySlug": "movie_memorabilia"19238          },19239          {19240            "category": "0187-0454-",19241            "categorySlug": "pins"19242          },19243          {19244            "category": "0187-0455-",19245            "categorySlug": "postcards"19246          },19247          {19248            "category": "0187-2192-",19249            "categorySlug": "design_furniture",19250            "hint": "decorative"19251          },19252          {19253            "category": "0187-3215-",19254            "categorySlug": "antiques",19255            "hint": "furniture"19256          },19257          {19258            "category": "0187-0443-",19259            "categorySlug": "automotive_memorabilia"19260          },19261          {19262            "category": "0187-3232-",19263            "categorySlug": "maps",19264            "hint": "books"19265          },19266          {19267            "category": "0187-6492-",19268            "categorySlug": "royal_memorabilia"19269          },19270          {19271            "category": "0187-1443-",19272            "categorySlug": "advertising"19273          },19274          {19275            "category": "0340-2609-",19276            "categorySlug": "porcelain"19277          },19278          {19279            "category": "0340-2650-",19280            "categorySlug": "glass_crystal"19281          },19282          {19283            "category": "0347-2695-",19284            "categorySlug": "vintage_toys",19285            "hint": "toys"19286          },19287          {19288            "category": "0347-0921-",19289            "categorySlug": "model_cars"19290          },19291          {19292            "category": "0347-0923-",19293            "categorySlug": "lego_sets"19294          },19295          {19296            "category": "0202-3193-",19297            "categorySlug": "trading_cards",19298            "hint": "cards"19299          },19300          {19301            "category": "0343-0894-",19302            "categorySlug": "music"19303          },19304          {19305            "category": "0343-3151-",19306            "categorySlug": "music_memorabilia"19307          },19308          {19309            "category": "0246-0486-",19310            "categorySlug": "other_watches",19311            "hint": "watches"19312          },19313          {19314            "category": "0193-0466-",19315            "categorySlug": "books"19316          },19317          {19318            "category": "0193-1222-",19319            "categorySlug": "comics",19320            "hint": "comics"19321          },19322          {19323            "category": "0124-3412-",19324            "categorySlug": "cameras"19325          }19326        ]19327      },19328      "capabilities": [19329        "live_listings",19330        "images"19331      ],19332      "refreshClass": "normal",19333      "domain": "trademe.co.nz",19334      "country": "NZ",19335      "requires": [19336        "TRADEME_CONSUMER_KEY",19337        "TRADEME_CONSUMER_SECRET"19338      ],19339      "acquisitionMethod": "official API (OAuth 1.0a application-only)",19340      "historicalDepth": "none"19341    },19342    {19343      "id": "trainz",19344      "displayName": "Trainz (model train dealer)",19345      "sourceId": "trainz",19346      "sourceName": "Trainz.com",19347      "sourceType": "dealer",19348      "sourceUrl": "https://www.trainz.com",19349      "module": "api/trainz",19350      "enginePriority": [19351        "api"19352      ],19353      "categories": [19354        "model_trains"19355      ],19356      "regions": [19357        "US"19358      ],19359      "languages": [19360        "en"19361      ],19362      "currency": [19363        "USD"19364      ],19365      "supportsListings": true,19366      "supportsSold": false,19367      "supportsAuctions": false,19368      "supportsImages": true,19369      "supportsCatalog": true,19370      "supportsPopulation": false,19371      "supportsLookup": false,19372      "refreshFrequencyMinutes": 1440,19373      "priority": "low",19374      "trustScore": 0.7,19375      "attributionRequired": true,19376      "termsUrl": "https://www.trainz.com/pages/terms-of-service",19377      "accessNotes": "Public Shopify JSON feed (/collections/<handle>/products.json?limit=250&page=N; robots.txt allows) — the same data the storefront renders. Each product gives title (with Trainz's condition code suffix such as LN/Box, EX/Box), vendor, tags (condition:, class:, era:, Inventory Type2_), variant price/SKU/availability and images. Emits a catalog item (brand = vendor, scale/gauge when present) and a fixed-price dealer listing with the condition mapped to the boxed_toys scale. 1.5 s politeness, 0 credits; collections rotate through the configured seed list each run.",19378      "enabled": true,19379      "schemaVersion": "1.0",19380      "config": {19381        "collectionsPerRun": 4,19382        "pagesPerCollection": 2,19383        "collections": [19384          "lionel-o-postwar-trains",19385          "lionel-o-prewar-trains",19386          "lionel-standard-gauge-trains",19387          "american-flyer-postwar-trains",19388          "american-flyer-s-gauge",19389          "marklin-trains",19390          "mth-o-gauge-trains",19391          "brass-model-trains",19392          "lgb-trains",19393          "k-line",19394          "williams",19395          "kato-trains",19396          "bachmann-trains",19397          "atlas-o-gauge",19398          "lionel-o-gauge-passenger-cars",19399          "lionel-o-gauge-steam-locomotives"19400        ]19401      },19402      "capabilities": [19403        "live_listings",19404        "images",19405        "catalog"19406      ],19407      "refreshClass": "normal",19408      "domain": "trainz.com",19409      "country": "US",19410      "requires": [],19411      "historicalDepth": "none"19412    },19413    {19414      "id": "travellingman",19415      "displayName": "Travelling Man",19416      "sourceId": "travellingman",19417      "sourceName": "Travelling Man",19418      "sourceType": "dealer",19419      "sourceUrl": "https://travellingman.com",19420      "module": "api/travellingman",19421      "enginePriority": [19422        "api"19423      ],19424      "categories": [19425        "manga",19426        "comics",19427        "action_figures",19428        "funko",19429        "designer_toys",19430        "pokemon",19431        "magic_the_gathering",19432        "yugioh",19433        "disney_lorcana",19434        "digimon_tcg",19435        "dragon_ball_tcg",19436        "star_wars_tcg",19437        "gundam",19438        "marvel_comics",19439        "dc_comics",19440        "independent_comics"19441      ],19442      "regions": [19443        "GB"19444      ],19445      "languages": [19446        "en"19447      ],19448      "currency": [19449        "GBP"19450      ],19451      "supportsListings": true,19452      "supportsSold": false,19453      "supportsAuctions": false,19454      "supportsImages": true,19455      "supportsCatalog": false,19456      "supportsPopulation": false,19457      "supportsLookup": true,19458      "refreshFrequencyMinutes": 1440,19459      "priority": "medium",19460      "trustScore": 0.65,19461      "attributionRequired": true,19462      "termsUrl": "https://travellingman.com/policies/terms-of-service",19463      "accessNotes": "Travelling Man (travellingman.com) is a Shopify shop; we read only the public, unauthenticated storefront JSON the shop serves to every visitor: /collections/<handle>/products.json?limit=250&page=N for the configured collections and /products/<handle>.json for URL lookups (manga, all-graphic-novels, dragon-ball-figuarts, trading-figures, pokemon-moncolle, funko, blind-boxes, pokemon-tcg, magic-the-gathering, yugioh, disney-lorcana, digimon-card-game, dragon-ball-super-tcg, star-wars-unlimited, gundam). robots.txt (checked 2026-09-08) is the standard Shopify file: for User-agent * it disallows /admin, /cart, /orders, /checkout(s), /carts, /account, /search, /policies, /recommendations/products, sort_by / filter / \"+\" collection permutations, preview_theme_id, oseid, the -remote product variants and /cdn/wpm; it blocks AhrefsBot, AhrefsSiteAudit, MJ12bot, Bytespider, Nutch and Pinterest entirely. The /collections/<handle>/products.json and /products/<handle>.json endpoints we read are not disallowed. Rate: 1 request per 1.5 s, one connection (connectors/domains.d/g4-shops-intl.json), honest RareIndexBot UA, once a day, 3 pages per collection per incremental run (backfill bounded by backfillMaxPages). Prices are the base currency GBP (/meta.json currency GBP). Manga/graphic-novel SKUs are ISBN-13s (kept as sku; ISBN identifiers are only derived from the barcode field). Dealer asking prices are stored as listings, never as sales (SPEC §111); out-of-stock variants are kept as ended listings for price-history audit. Deliberately not fetched: cart/checkout/account pages, customer names, reviews or any personal data, search and sort/filter permutations (robots-disallowed), /recommendations, blog pages, and images beyond the URLs already present in the JSON.",19464      "enabled": true,19465      "schemaVersion": "1.0",19466      "config": {19467        "currency": "GBP",19468        "seller": "Travelling Man",19469        "location": null,19470        "collections": [19471          {19472            "handle": "manga",19473            "categorySlug": "manga"19474          },19475          {19476            "handle": "all-graphic-novels",19477            "categorySlug": "comics"19478          },19479          {19480            "handle": "dragon-ball-figuarts",19481            "categorySlug": "action_figures",19482            "brand": "Bandai",19483            "series": "S.H.Figuarts",19484            "franchise": "Dragon Ball"19485          },19486          {19487            "handle": "trading-figures",19488            "categorySlug": "action_figures"19489          },19490          {19491            "handle": "pokemon-moncolle",19492            "categorySlug": "action_figures",19493            "franchise": "Pokémon",19494            "series": "Moncolle"19495          },19496          {19497            "handle": "funko",19498            "categorySlug": "funko",19499            "brand": "Funko"19500          },19501          {19502            "handle": "blind-boxes",19503            "categorySlug": "designer_toys"19504          },19505          {19506            "handle": "pokemon-tcg",19507            "categorySlug": "pokemon",19508            "franchise": "Pokémon"19509          },19510          {19511            "handle": "magic-the-gathering",19512            "categorySlug": "magic_the_gathering",19513            "franchise": "Magic: The Gathering"19514          },19515          {19516            "handle": "yugioh",19517            "categorySlug": "yugioh",19518            "franchise": "Yu-Gi-Oh!"19519          },19520          {19521            "handle": "disney-lorcana",19522            "categorySlug": "disney_lorcana",19523            "franchise": "Disney Lorcana"19524          },19525          {19526            "handle": "digimon-card-game",19527            "categorySlug": "digimon_tcg",19528            "franchise": "Digimon"19529          },19530          {19531            "handle": "dragon-ball-super-tcg",19532            "categorySlug": "dragon_ball_tcg",19533            "franchise": "Dragon Ball"19534          },19535          {19536            "handle": "star-wars-unlimited",19537            "categorySlug": "star_wars_tcg",19538            "franchise": "Star Wars"19539          },19540          {19541            "handle": "gundam",19542            "categorySlug": "gundam",19543            "franchise": "Gundam"19544          }19545        ],19546        "rules": [19547          {19548            "match": "^(?=.*\\| (?:Graphic Novel|Comic|Comics)s? \\|)(?=.*(?:\\bmarvel\\b|spider-?man|x-men|avengers|wolverine|daredevil|hulk|iron man|captain america|deadpool|fantastic four|thor\\b|venom|punisher|moon knight|black panther))",19549            "categorySlug": "marvel_comics",19550            "brand": "Marvel"19551          },19552          {19553            "match": "^(?=.*\\| (?:Graphic Novel|Comic|Comics)s? \\|)(?=.*(?:\\bdc comics\\b|\\bdc\\b|batman|superman|wonder woman|justice league|flash\\b|green lantern|aquaman|harley quinn|joker|nightwing|swamp thing|sandman|watchmen|vertigo))",19554            "categorySlug": "dc_comics",19555            "brand": "DC"19556          },19557          {19558            "match": "^(?=.*\\| (?:Graphic Novel|Comic|Comics)s? \\|)(?=.*(?:image comics|dark horse|\\bidw\\b|boom! ?studios|dynamite|valiant|oni press|2000 ad|archie|spawn|invincible|walking dead|saga\\b|hellboy|tmnt|teenage mutant|transformers|2000ad|rebellion|titan comics|ahoy|mad cave|vault comics|aftershock|zenescope|fantagraphics|drawn & quarterly|avery hill))",19559            "categorySlug": "independent_comics"19560          }19561        ],19562        "defaultCategory": null,19563        "exclude": "gift card|\\bsleeves?\\b|deck box|deck case|deck holder|binder|playmat|play mat|toploader|top loader|storage box|card case|portfolio|\\balbum\\b|\\bdice\\b|spindown|life counter|tokens? only|bundle of|mystery (box|pack|bundle|bag)|repack|\\bticket|event entry|entry fee|weekly league|display case|acrylic (stand|display|case)|card holder|card protector|magnetic holder|semi-rigid|perfect fit|penny sleeve|team bag|card saver|\\baccessor|dice set|d20|d6\\b|\\bpaint|brush|primer|glue|hobby tool|cutter|tweezers|sticker|keyring|key ring|lanyard|badge|coaster|mug\\b|t-shirt|hoodie|\\bcap\\b|socks|towel|blanket|poster|wall scroll|calendar|advent|\\| accessories \\||\\| dice \\||\\| paint|scenery|miniatures? paint|art book|cook book|colouring|\\| novels? \\||\\| light novel \\||board game|puzzle",19564        "keepOutOfStock": true,19565        "pageSize": 250,19566        "fetchBarcodes": false,19567        "wholeShop": false19568      },19569      "capabilities": [19570        "live_listings",19571        "images",19572        "url_lookup"19573      ],19574      "refreshClass": "normal",19575      "domain": "travellingman.com",19576      "country": "GB",19577      "requires": [],19578      "acquisitionMethod": "Shopify storefront products.json (public JSON)",19579      "historicalDepth": "none"19580    },19581    {19582      "id": "turntable-lab",19583      "displayName": "Turntable Lab (US vinyl store, USD)",19584      "sourceId": "turntable-lab",19585      "sourceName": "Turntable Lab",19586      "sourceType": "dealer",19587      "sourceUrl": "https://www.turntablelab.com",19588      "module": "api/turntable-lab",19589      "enginePriority": [19590        "api"19591      ],19592      "categories": [19593        "music"19594      ],19595      "regions": [19596        "US"19597      ],19598      "languages": [19599        "en"19600      ],19601      "currency": [19602        "USD"19603      ],19604      "supportsListings": true,19605      "supportsSold": false,19606      "supportsAuctions": false,19607      "supportsImages": true,19608      "supportsCatalog": false,19609      "supportsPopulation": false,19610      "supportsLookup": true,19611      "refreshFrequencyMinutes": 720,19612      "priority": "medium",19613      "trustScore": 0.75,19614      "attributionRequired": true,19615      "termsUrl": "https://www.turntablelab.com/policies/terms-of-service",19616      "accessNotes": "Turntable Lab (turntablelab.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 (colored-vinyl-editions-alpha, deluxe-editions-date, 180g-vinyl-pressings-date, 7-vinyl-date, 12-vinyl-date, 10-vinyl-date, beggars-group-vinyl-records, classic-rock-vinyl … (+7 more, see config.collections)) and /products/<handle>.json for URL lookups (~800 colored-vinyl editions, 415 deluxe editions, 340 180g pressings + genre collections). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — audio components, DJ hardware, cartridges/styli, cables, accessories, clothing, clearance umbrella collections. No personal data is collected; seller = the store itself.",19617      "enabled": true,19618      "schemaVersion": "1.0",19619      "config": {19620        "currency": "USD",19621        "market": "US",19622        "seller": "Turntable Lab",19623        "location": "New York, NY, USA",19624        "collections": [19625          {19626            "handle": "colored-vinyl-editions-alpha",19627            "categorySlug": "music"19628          },19629          {19630            "handle": "deluxe-editions-date",19631            "categorySlug": "music"19632          },19633          {19634            "handle": "180g-vinyl-pressings-date",19635            "categorySlug": "music"19636          },19637          {19638            "handle": "7-vinyl-date",19639            "categorySlug": "music"19640          },19641          {19642            "handle": "12-vinyl-date",19643            "categorySlug": "music"19644          },19645          {19646            "handle": "10-vinyl-date",19647            "categorySlug": "music"19648          },19649          {19650            "handle": "beggars-group-vinyl-records",19651            "categorySlug": "music"19652          },19653          {19654            "handle": "classic-rock-vinyl",19655            "categorySlug": "music"19656          },19657          {19658            "handle": "emo-vinyl-records",19659            "categorySlug": "music"19660          },19661          {19662            "handle": "essential-electronic-vinyl",19663            "categorySlug": "music"19664          },19665          {19666            "handle": "essential-alternative-new-wave-vinyl",19667            "categorySlug": "music"19668          },19669          {19670            "handle": "ambient-music-vinyl",19671            "categorySlug": "music"19672          },19673          {19674            "handle": "blues-country-vinyl",19675            "categorySlug": "music"19676          },19677          {19678            "handle": "blue-note-records",19679            "categorySlug": "music"19680          },19681          {19682            "handle": "audiophile-pressings-dss-pure-vinyl",19683            "categorySlug": "music"19684          }19685        ],19686        "rules": [],19687        "defaultCategory": null,19688        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Merch|Accessories|Turntables?|Speakers?|Headphones?|Cartridges?|Cables?|Posters?|Digital) \\||t-shirt|hoodie|\\bshirt\\b|\\bhat\\b|\\btote\\b|\\bmug\\b|poster|slipmat|slip mat|cartridge|stylus|turntable|speaker|headphone|\\bcable\\b|cleaner|cleaning|\\bbrush\\b|record weight|inner sleeves?|outer sleeves?|\\bcrate\\b|\\bstand\\b|\\bpin\\b|enamel pin|digital (album|download)|\\bsocks?\\b|\\bpatch\\b|\\bsticker",19689        "keepOutOfStock": true,19690        "fetchBarcodes": false,19691        "wholeShop": false,19692        "pageSize": 25019693      },19694      "capabilities": [19695        "live_listings",19696        "images",19697        "url_lookup"19698      ],19699      "refreshClass": "normal",19700      "domain": "turntablelab.com",19701      "country": "US",19702      "requires": [],19703      "acquisitionMethod": "Shopify storefront products.json",19704      "historicalDepth": "none"19705    },19706    {19707      "id": "videogametrader",19708      "displayName": "Video Game Trader (retro & modern game listings)",19709      "sourceId": "videogametrader",19710      "sourceName": "Video Game Trader",19711      "sourceType": "dealer",19712      "sourceUrl": "https://videogametrader.com",19713      "module": "api/videogametrader",19714      "enginePriority": [19715        "api"19716      ],19717      "categories": [19718        "nintendo_games",19719        "sega_games",19720        "playstation_games",19721        "xbox_games",19722        "atari_retro_games",19723        "pc_games",19724        "gaming_hardware"19725      ],19726      "regions": [19727        "US"19728      ],19729      "languages": [19730        "en"19731      ],19732      "currency": [19733        "USD"19734      ],19735      "supportsListings": true,19736      "supportsSold": false,19737      "supportsAuctions": false,19738      "supportsImages": true,19739      "supportsCatalog": false,19740      "supportsPopulation": false,19741      "supportsLookup": true,19742      "refreshFrequencyMinutes": 720,19743      "priority": "medium",19744      "trustScore": 0.75,19745      "attributionRequired": true,19746      "termsUrl": "https://videogametrader.com/policies/terms-of-service",19747      "accessNotes": "Reads only the public, unauthenticated Shopify storefront JSON: https://videogametrader.com/collections/<handle>/products.json?limit=250&page=N for the platform collections listed in config (Nintendo, Sega, Sony, Xbox, Atari/Intellivision/ColecoVision/Odyssey²/3DO/CD-i/TurboGrafx/Neo Geo, PC, vintage). robots.txt (Shopify standard): `User-agent: *` Allow: / for products and collections; plain HTTPS with the RareIndex bot UA returns 200. Each product carries title ('Game - Platform - Used (Complete)'), product_type ('Video Games >> Used >> Playstation'), tags (Platform:…, Condition:…, Genre:…), variants with SKU (UPC-derived for many CIB items) and price. Accessories, cables, manuals/box-art-only items, strategy guides, TCG singles/boosters, plush, amiibo/Skylanders/Disney Infinity figures, posters, soundtracks and gift cards are excluded by rule; systems/controllers map to gaming_hardware. Asking prices are listings, never sales (SPEC §111); out-of-stock items are kept as 'ended' listings. 1.5 s politeness, concurrency 2, no cart/checkout/account endpoints.",19748      "enabled": true,19749      "schemaVersion": "1.0",19750      "config": {19751        "currency": "USD",19752        "seller": "Video Game Trader",19753        "location": "US",19754        "keepOutOfStock": true,19755        "titlePattern": "^(?<name>.+?)\\s*[|-]\\s*(?<set>[^|-]+?)\\s*-\\s*(?:Used|New|NEW|Preowned|Pre-owned|Brand New|Sealed)",19756        "exclude": "gift card|manual only|manuals?, inserts|box art|box only|no game|cables? & adapters|Genre:Accessories|adapter|controller skin|strategy guide|trading card|booster|singles|plush|amiibo|skylanders|disney infinity|lego dimensions|poster|soundtrack|vinyl record|door mat|custom game case|game case|screen protector|carrying case|charging|battery|stylus|memory card|av cable|hdmi|power supply|magazine|toys to life|figure",19757        "collections": [19758          {19759            "handle": "nintendo-nes-games",19760            "categorySlug": "nintendo_games",19761            "brand": "Nintendo"19762          },19763          {19764            "handle": "super-nintendo",19765            "categorySlug": "nintendo_games",19766            "brand": "Nintendo"19767          },19768          {19769            "handle": "nintendo-64",19770            "categorySlug": "nintendo_games",19771            "brand": "Nintendo"19772          },19773          {19774            "handle": "nintendo-gamecube-1",19775            "categorySlug": "nintendo_games",19776            "brand": "Nintendo"19777          },19778          {19779            "handle": "nintendo-gameboy-gameboy-color",19780            "categorySlug": "nintendo_games",19781            "brand": "Nintendo"19782          },19783          {19784            "handle": "nintendo-gameboy-advance",19785            "categorySlug": "nintendo_games",19786            "brand": "Nintendo"19787          },19788          {19789            "handle": "nintendo-virtual-boy",19790            "categorySlug": "nintendo_games",19791            "brand": "Nintendo"19792          },19793          {19794            "handle": "nintendo-switch",19795            "categorySlug": "nintendo_games",19796            "brand": "Nintendo"19797          },19798          {19799            "handle": "sega",19800            "categorySlug": "sega_games",19801            "brand": "Sega"19802          },19803          {19804            "handle": "sony-playstation",19805            "categorySlug": "playstation_games",19806            "brand": "Sony"19807          },19808          {19809            "handle": "sony-playstation-2",19810            "categorySlug": "playstation_games",19811            "brand": "Sony"19812          },19813          {19814            "handle": "sony-psp",19815            "categorySlug": "playstation_games",19816            "brand": "Sony"19817          },19818          {19819            "handle": "xbox",19820            "categorySlug": "xbox_games",19821            "brand": "Microsoft"19822          },19823          {19824            "handle": "xbox-360",19825            "categorySlug": "xbox_games",19826            "brand": "Microsoft"19827          },19828          {19829            "handle": "atari",19830            "categorySlug": "atari_retro_games",19831            "brand": "Atari"19832          },19833          {19834            "handle": "intellivision",19835            "categorySlug": "atari_retro_games",19836            "brand": "Mattel"19837          },19838          {19839            "handle": "colecovision",19840            "categorySlug": "atari_retro_games",19841            "brand": "Coleco"19842          },19843          {19844            "handle": "odyssey-2",19845            "categorySlug": "atari_retro_games",19846            "brand": "Magnavox"19847          },19848          {19849            "handle": "nec-turbografx-16-pc-engine-in-japan",19850            "categorySlug": "atari_retro_games",19851            "brand": "NEC"19852          },19853          {19854            "handle": "neo-geo-neo-geo-pocket-color",19855            "categorySlug": "atari_retro_games",19856            "brand": "SNK"19857          },19858          {19859            "handle": "3do",19860            "categorySlug": "atari_retro_games"19861          },19862          {19863            "handle": "cd-i",19864            "categorySlug": "atari_retro_games",19865            "brand": "Philips"19866          },19867          {19868            "handle": "pc-games",19869            "categorySlug": "pc_games"19870          },19871          {19872            "handle": "vintage-video-games",19873            "categorySlug": "atari_retro_games"19874          }19875        ],19876        "rules": [19877          {19878            "match": "Genre:Systems|Retro Video Game Console|\\bconsole\\b|\\bsystem\\b(?!.*(game|cartridge))|controller|Hyperkin|RetroN|Analogue",19879            "categorySlug": "gaming_hardware"19880          },19881          {19882            "match": "Platform:(NES|Super Nintendo|Nintendo|GameBoy|Game Boy|GameCube|Wii|Switch|N64|DS|3DS|Virtual Boy|Famicom|Game & Watch)|Nintendo >>|>> NES|>> Super Nintendo|>> GameBoy|>> Nintendo",19883            "categorySlug": "nintendo_games",19884            "brand": "Nintendo"19885          },19886          {19887            "match": "Platform:(Sega|Genesis|Dreamcast|Saturn|Game Gear|Master System|32X|Sega CD|Mega Drive)|>> Sega|>> Genesis|>> Dreamcast",19888            "categorySlug": "sega_games",19889            "brand": "Sega"19890          },19891          {19892            "match": "Platform:(Playstation|PlayStation|PSP|Vita|PS[1-5])|>> Playstation|>> PSP|>> PS Vita",19893            "categorySlug": "playstation_games",19894            "brand": "Sony"19895          },19896          {19897            "match": "Platform:(Xbox)|>> Xbox",19898            "categorySlug": "xbox_games",19899            "brand": "Microsoft"19900          },19901          {19902            "match": "Platform:(Atari|Intellivision|ColecoVision|Odyssey|3DO|CD-i|TurboGrafx|PC Engine|Neo Geo|Jaguar|Lynx|Vectrex|Commodore|Evercade)|>> Atari|>> Intellivision|>> ColecoVision|>> TurboGrafx|>> Neo Geo|>> Evercade",19903            "categorySlug": "atari_retro_games"19904          },19905          {19906            "match": "Platform:PC\\b|>> PC Games|>> PC\\b",19907            "categorySlug": "pc_games"19908          }19909        ],19910        "defaultCategory": null19911      },19912      "capabilities": [19913        "live_listings",19914        "images",19915        "url_lookup"19916      ],19917      "refreshClass": "normal",19918      "domain": "videogametrader.com",19919      "country": "US",19920      "requires": [],19921      "acquisitionMethod": "Shopify storefront products.json",19922      "historicalDepth": "none"19923    },19924    {19925      "id": "watchfinder",19926      "displayName": "Watchfinder & Co. (UK pre-owned watch listings)",19927      "sourceId": "watchfinder",19928      "sourceName": "Watchfinder & Co.",19929      "sourceType": "dealer",19930      "sourceUrl": "https://www.watchfinder.co.uk",19931      "module": "firecrawl/watchfinder",19932      "enginePriority": [19933        "firecrawl",19934        "scrapfly"19935      ],19936      "categories": [19937        "watches",19938        "rolex",19939        "patek_philippe",19940        "audemars_piguet",19941        "omega",19942        "other_watches"19943      ],19944      "regions": [19945        "GB"19946      ],19947      "languages": [19948        "en"19949      ],19950      "currency": [19951        "GBP"19952      ],19953      "supportsListings": true,19954      "supportsSold": false,19955      "supportsAuctions": false,19956      "supportsImages": true,19957      "supportsCatalog": false,19958      "supportsPopulation": false,19959      "supportsLookup": false,19960      "refreshFrequencyMinutes": 720,19961      "priority": "medium",19962      "trustScore": 0.85,19963      "attributionRequired": true,19964      "termsUrl": "https://www.watchfinder.co.uk/terms-and-conditions",19965      "accessNotes": "Plain HTTPS returns 403 to non-browser agents (robots.txt is not served either); Firecrawl's standard fetch returns the public model pages (watchfinder.co.uk/watches/<brand>/<model>?p=N). Each product card carries data attributes (sku, brand, series, model reference, image), box/papers icons, year and the GBP price (data-price-amount). 1 Firecrawl credit per page (~24 watches); 2 s between pages. Listings only.",19966      "enabled": true,19967      "schemaVersion": "1.0",19968      "config": {19969        "seeds": [19970          "rolex/daytona",19971          "rolex/submariner",19972          "rolex/gmt-master-ii",19973          "rolex/datejust",19974          "rolex/day-date",19975          "rolex/explorer",19976          "patek-philippe/nautilus",19977          "patek-philippe/aquanaut",19978          "audemars-piguet/royal-oak",19979          "audemars-piguet/royal-oak-offshore",19980          "omega/speedmaster",19981          "omega/seamaster",19982          "cartier/santos",19983          "tudor/black-bay",19984          "iwc/portugieser",19985          "jaeger-lecoultre/reverso"19986        ],19987        "pagesPerSeed": 219988      },19989      "capabilities": [19990        "live_listings",19991        "images"19992      ],19993      "refreshClass": "normal",19994      "domain": "watchfinder.co.uk",19995      "country": "GB",19996      "requires": [],19997      "historicalDepth": "none"19998    },19999    {20000      "id": "waxwork-records",20001      "displayName": "Waxwork Records (US vinyl store, USD)",20002      "sourceId": "waxwork-records",20003      "sourceName": "Waxwork Records",20004      "sourceType": "dealer",20005      "sourceUrl": "https://waxworkrecords.com",20006      "module": "api/waxwork-records",20007      "enginePriority": [20008        "api"20009      ],20010      "categories": [20011        "music"20012      ],20013      "regions": [20014        "US"20015      ],20016      "languages": [20017        "en"20018      ],20019      "currency": [20020        "USD"20021      ],20022      "supportsListings": true,20023      "supportsSold": false,20024      "supportsAuctions": false,20025      "supportsImages": true,20026      "supportsCatalog": false,20027      "supportsPopulation": false,20028      "supportsLookup": true,20029      "refreshFrequencyMinutes": 1440,20030      "priority": "low",20031      "trustScore": 0.75,20032      "attributionRequired": true,20033      "termsUrl": "https://waxworkrecords.com/policies/terms-of-service",20034      "accessNotes": "Waxwork Records (waxworkrecords.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 3 configured collections (vinyl, cd, cassettes) and /products/<handle>.json for URL lookups (~250 vinyl soundtracks, 30 CDs, cassettes). 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=US cookie — the shop's own home market, exactly what a US visitor gets — so prices are always the declared USD (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 USD (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 — merch/apparel/pins, digital albums, wholesale collections. No personal data is collected; seller = the store itself.",20035      "enabled": true,20036      "schemaVersion": "1.0",20037      "config": {20038        "currency": "USD",20039        "market": "US",20040        "seller": "Waxwork Records",20041        "location": "New Orleans, LA, USA",20042        "collections": [20043          {20044            "handle": "vinyl",20045            "categorySlug": "music",20046            "brand": "Waxwork Records"20047          },20048          {20049            "handle": "cd",20050            "categorySlug": "music",20051            "brand": "Waxwork Records"20052          },20053          {20054            "handle": "cassettes",20055            "categorySlug": "music",20056            "brand": "Waxwork Records"20057          }20058        ],20059        "rules": [],20060        "defaultCategory": null,20061        "exclude": "gift card|mystery|\\| (Apparel|T-Shirts?|Merch|Accessories|Turntables?|Speakers?|Headphones?|Cartridges?|Cables?|Posters?|Digital) \\||t-shirt|hoodie|\\bshirt\\b|\\bhat\\b|\\btote\\b|\\bmug\\b|poster|slipmat|slip mat|cartridge|stylus|turntable|speaker|headphone|\\bcable\\b|cleaner|cleaning|\\bbrush\\b|record weight|inner sleeves?|outer sleeves?|\\bcrate\\b|\\bstand\\b|\\bpin\\b|enamel pin|digital (album|download)|\\bsocks?\\b|\\bpatch\\b|\\bsticker",20062        "keepOutOfStock": true,20063        "fetchBarcodes": false,20064        "wholeShop": false,20065        "pageSize": 25020066      },20067      "capabilities": [20068        "live_listings",20069        "images",20070        "url_lookup"20071      ],20072      "refreshClass": "normal",20073      "domain": "waxworkrecords.com",20074      "country": "US",20075      "requires": [],20076      "acquisitionMethod": "Shopify storefront products.json",20077      "historicalDepth": "none"20078    },20079    {20080      "id": "whisky-auction",20081      "displayName": "Whisky.Auction (past auction results, London)",20082      "sourceId": "whisky-auction",20083      "sourceName": "Whisky.Auction",20084      "sourceType": "auction_house",20085      "sourceUrl": "https://whisky.auction",20086      "module": "api/whisky-auction",20087      "enginePriority": [20088        "api"20089      ],20090      "categories": [20091        "whisky",20092        "rum",20093        "cognac",20094        "wine"20095      ],20096      "regions": [20097        "GB"20098      ],20099      "languages": [20100        "en"20101      ],20102      "currency": [20103        "GBP"20104      ],20105      "supportsListings": false,20106      "supportsSold": true,20107      "supportsAuctions": false,20108      "supportsImages": true,20109      "supportsCatalog": false,20110      "supportsPopulation": false,20111      "supportsLookup": false,20112      "refreshFrequencyMinutes": 1440,20113      "priority": "medium",20114      "trustScore": 0.9,20115      "attributionRequired": true,20116      "termsUrl": "https://whisky.auction/terms-and-conditions",20117      "accessNotes": "Whisky.Auction (London, monthly online auctions since 2016, ~190 past auctions of 800–4,000 lots) serves its past-auction lot grids as plain server-rendered HTML to the honest RareIndexBot UA — no Cloudflare, no JS requirement. We read (1) /auctions, the Past Auctions list (auction id, title, start/end dates, highest winning bid) and (2) /auctions/auction/<id>?category=<list>&pageIndex=N&pageSize=90&sort=Price&dir=desc, the lot grid, whose lot cards carry data-winningbid (GBP), data-enddate, data-product-id, the lot state as CSS classes (Met / NA = sold, Aftersale = sold after the auction, NotMet = unsold with winning bid -1), the /auctions/lot/<id>/<slug> link, the title/subtitle (bottling year, size / ABV) and the media.whisky.auction image. Seeds are the site's own category filters grouped by taxonomy slug (all whisky categories → whisky; Rum → rum; Cognac,Armagnac → cognac; all wine/champagne categories → wine); gin/vodka/tequila/liqueurs/memorabilia have no RareIndex category and are not requested. Because the grid is sorted by price descending, a seed is finished as soon as a whole page is unsold. Winning bid = hammer price: Whisky.Auction charges buyers a separate commission (see /our-fees), so buyerPremiumIncluded=false; lots 'Sold in Aftersale' are kept as sales with lower confidence and flagged in metadata. Sale date = the lot's own end timestamp (UK time). robots.txt (User-agent: *) only disallows /smartpaynotification paths; sitemap.xml lists every lot. Terms and conditions (checked 2026-09-08) regulate bidding/selling and contain no clause on automated access of public pages. Lot detail pages are JS-rendered and are not fetched (no lookup). Politeness: 2.5 s between requests, 1 in flight, at most 12 grid pages per incremental run (one auction ≈ 10 pages at 90 lots); backfill walks the archive auction by auction with a resumable {progress, complete} cursor.",20118      "enabled": true,20119      "schemaVersion": "1.0",20120      "config": {20121        "pageSize": 90,20122        "auctionsPerRun": 1,20123        "pagesPerRun": 12,20124        "seeds": [20125          {20126            "category": "Blended Whisky,Blended Malt,Grain Whisky,Campbeltown,Highland,Island,Islay,Lowland,Speyside,Speyside (non Macallan),Macallan,Whiskey - USA,Whiskey - Ireland,Whisky - Japan,Whisky - World - Other",20127            "slug": "whisky"20128          },20129          {20130            "category": "Rum",20131            "slug": "rum"20132          },20133          {20134            "category": "Cognac,Armagnac",20135            "slug": "cognac"20136          },20137          {20138            "category": "Wine - Bordeaux,Wine - Burgundy - Red,Wine - Burgundy - White,Wine - Europe - Other,Wine - France - Other,Wine - Italy,Wine - New World,Wine - Rhone,Wine - Spain,Champagne,Fortified & Dessert",20139            "slug": "wine"20140          }20141        ]20142      },20143      "capabilities": [20144        "sold_listings",20145        "images",20146        "historical_backfill"20147      ],20148      "refreshClass": "normal",20149      "domain": "whisky.auction",20150      "country": "GB",20151      "requires": [],20152      "acquisitionMethod": "public HTML (past-auction lot grids, data-attributes)",20153      "historicalDepth": "years"20154    },20155    {20156      "id": "whisky-hammer",20157      "displayName": "Whisky Hammer (previous auctions)",20158      "sourceId": "whisky-hammer",20159      "sourceName": "Whisky Hammer",20160      "sourceType": "auction_house",20161      "sourceUrl": "https://www.whiskyhammer.com",20162      "module": "firecrawl/whisky-hammer",20163      "enginePriority": [20164        "firecrawl"20165      ],20166      "categories": [20167        "whisky",20168        "rum",20169        "cognac"20170      ],20171      "regions": [20172        "GB",20173        "NL"20174      ],20175      "languages": [20176        "en"20177      ],20178      "currency": [20179        "GBP"20180      ],20181      "supportsListings": false,20182      "supportsSold": true,20183      "supportsAuctions": false,20184      "supportsImages": true,20185      "supportsCatalog": false,20186      "supportsPopulation": false,20187      "supportsLookup": false,20188      "refreshFrequencyMinutes": 1440,20189      "priority": "medium",20190      "trustScore": 0.9,20191      "attributionRequired": true,20192      "termsUrl": "https://www.whiskyhammer.com/buying-and-selling/terms-conditions",20193      "accessNotes": "Whisky Hammer (Aberdeenshire, monthly auctions, UK + EU warehouses) lists previous auctions at /previous-auctions (plain HTTPS) but the per-auction lot pages (/auction/past/auc-<n>/?page=N, 50 lots per page sorted high→low bid) sit behind a Cloudflare interstitial for plain clients, so they are fetched with Firecrawl (1 credit per page, ≈88 pages for a 4,300-lot auction; capped by config.pagesPerRun). Each lot block: title + /item/<id>/ link, 'Lot #<id>', and 'Sold dd/mm/yyyy£X' — the GBP hammer price (Whisky Hammer's buyer commission is separate → buyer_premium_included=false) with the individual sale date. Unsold lots have no 'Sold' line and are skipped. robots.txt only disallows sort/page-size/return_name query variants, which are not used. Scrapfly fallback disabled to keep cost predictable.",20194      "enabled": true,20195      "schemaVersion": "1.0",20196      "config": {20197        "auctionsPerRun": 1,20198        "pagesPerRun": 620199      },20200      "capabilities": [20201        "sold_listings",20202        "images"20203      ],20204      "refreshClass": "normal",20205      "domain": "whiskyhammer.com",20206      "country": "GB",20207      "requires": [],20208      "historicalDepth": "none"20209    },20210    {20211      "id": "winebid",20212      "displayName": "WineBid (recent sales per wine)",20213      "sourceId": "winebid",20214      "sourceName": "WineBid",20215      "sourceType": "marketplace",20216      "sourceUrl": "https://www.winebid.com",20217      "module": "api/winebid",20218      "enginePriority": [20219        "api",20220        "firecrawl",20221        "scrapfly"20222      ],20223      "categories": [20224        "wine",20225        "whisky"20226      ],20227      "regions": [20228        "US"20229      ],20230      "languages": [20231        "en"20232      ],20233      "currency": [20234        "USD"20235      ],20236      "supportsListings": true,20237      "supportsSold": true,20238      "supportsAuctions": true,20239      "supportsImages": true,20240      "supportsCatalog": false,20241      "supportsPopulation": false,20242      "supportsLookup": true,20243      "refreshFrequencyMinutes": 1440,20244      "priority": "medium",20245      "trustScore": 0.85,20246      "attributionRequired": true,20247      "termsUrl": "https://www.winebid.com/Help/TermsAndConditions",20248      "accessNotes": "US online wine auction (weekly auctions). Category browse pages (/BuyWine/Items/<region>/<id>) are rendered through Firecrawl (1 credit, plain HTTP returns 403 for list pages) to discover item URLs; each public item page (/BuyWine/Item/<id>/<slug>, plain HTTPS) shows the wine, the current auction lot (estimate / current bid) and a 'Recent sales' table of past winning bids for the same wine: item id, quantity sold, per-bottle amount (USD) and sale date. robots.txt lists rules for named search engines only (no generic group); we still avoid /Sales, /AuctionClosed and account paths. Winning bids exclude WineBid's 17% buyer's premium (buyer_premium_included=false; premium % in metadata). Sale dates come from the table (PDT). 2 s politeness delay; itemsPerRun caps each run.",20249      "enabled": true,20250      "schemaVersion": "1.0",20251      "config": {20252        "categories": [20253          {20254            "path": "/BuyWine/Items/Bordeaux/18403",20255            "label": "Bordeaux"20256          },20257          {20258            "path": "/BuyWine/Items/Burgundy/15363",20259            "label": "Burgundy"20260          },20261          {20262            "path": "/BuyWine/Items/Napa-Valley/2910",20263            "label": "Napa Valley"20264          },20265          {20266            "path": "/BuyWine/Items/Barolo/16367",20267            "label": "Barolo"20268          },20269          {20270            "path": "/BuyWine/Items/Brunello-di-Montalcino/7725165",20271            "label": "Brunello di Montalcino"20272          },20273          {20274            "path": "/BuyWine/Items/Big-Bottles/7902856",20275            "label": "Large formats"20276          }20277        ],20278        "itemsPerRun": 2420279      },20280      "capabilities": [20281        "live_listings",20282        "sold_listings",20283        "auction_results",20284        "images",20285        "url_lookup"20286      ],20287      "refreshClass": "normal",20288      "domain": "winebid.com",20289      "country": "US",20290      "requires": [],20291      "historicalDepth": "none"20292    },20293    {20294      "id": "wizards-tower",20295      "displayName": "Wizard's Tower (Canadian TCG & board-game store, CAD)",20296      "sourceId": "wizards-tower",20297      "sourceName": "Wizard's Tower",20298      "sourceType": "dealer",20299      "sourceUrl": "https://www.kanatacg.com",20300      "module": "api/wizards-tower",20301      "enginePriority": [20302        "api"20303      ],20304      "categories": [20305        "magic_the_gathering",20306        "disney_lorcana",20307        "board_games"20308      ],20309      "regions": [20310        "CA"20311      ],20312      "languages": [20313        "en"20314      ],20315      "currency": [20316        "CAD"20317      ],20318      "supportsListings": true,20319      "supportsSold": false,20320      "supportsAuctions": false,20321      "supportsImages": true,20322      "supportsCatalog": false,20323      "supportsPopulation": false,20324      "supportsLookup": true,20325      "refreshFrequencyMinutes": 720,20326      "priority": "medium",20327      "trustScore": 0.75,20328      "attributionRequired": true,20329      "termsUrl": "https://www.kanatacg.com/policies/terms-of-service",20330      "accessNotes": "Wizard's Tower (kanatacg.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 17 configured collections (commander-legends-singles, commander-masters-singles, double-masters-singles, commander-legends-battle-for-baldurs-gate-singles, avatar-the-last-airbender-singles, edge-of-eternities-singles, adventures-in-the-forgotten-realms-singles, dominaria-united-singles … (+9 more, see config.collections)) and /products/<handle>.json for URL lookups (~30k MTG singles across per-set collections, 5.9k Lorcana). 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 — card-game supplies, dice, modelling supplies, sale umbrella collections, events. No personal data is collected; seller = the store itself.",20331      "enabled": true,20332      "schemaVersion": "1.0",20333      "config": {20334        "currency": "CAD",20335        "market": "CA",20336        "seller": "Wizard's Tower",20337        "location": "Ottawa (Kanata), ON, Canada",20338        "collections": [20339          {20340            "handle": "commander-legends-singles",20341            "categorySlug": "magic_the_gathering",20342            "franchise": "Magic: The Gathering"20343          },20344          {20345            "handle": "commander-masters-singles",20346            "categorySlug": "magic_the_gathering",20347            "franchise": "Magic: The Gathering"20348          },20349          {20350            "handle": "double-masters-singles",20351            "categorySlug": "magic_the_gathering",20352            "franchise": "Magic: The Gathering"20353          },20354          {20355            "handle": "commander-legends-battle-for-baldurs-gate-singles",20356            "categorySlug": "magic_the_gathering",20357            "franchise": "Magic: The Gathering"20358          },20359          {20360            "handle": "avatar-the-last-airbender-singles",20361            "categorySlug": "magic_the_gathering",20362            "franchise": "Magic: The Gathering"20363          },20364          {20365            "handle": "edge-of-eternities-singles",20366            "categorySlug": "magic_the_gathering",20367            "franchise": "Magic: The Gathering"20368          },20369          {20370            "handle": "adventures-in-the-forgotten-realms-singles",20371            "categorySlug": "magic_the_gathering",20372            "franchise": "Magic: The Gathering"20373          },20374          {20375            "handle": "dominaria-united-singles",20376            "categorySlug": "magic_the_gathering",20377            "franchise": "Magic: The Gathering"20378          },20379          {20380            "handle": "bloomburrow-singles",20381            "categorySlug": "magic_the_gathering",20382            "franchise": "Magic: The Gathering"20383          },20384          {20385            "handle": "duskmourn-house-of-horror-singles",20386            "categorySlug": "magic_the_gathering",20387            "franchise": "Magic: The Gathering"20388          },20389          {20390            "handle": "aetherdrift-singles",20391            "categorySlug": "magic_the_gathering",20392            "franchise": "Magic: The Gathering"20393          },20394          {20395            "handle": "double-masters-2022-singles",20396            "categorySlug": "magic_the_gathering",20397            "franchise": "Magic: The Gathering"20398          },20399          {20400            "handle": "dominaria-remastered-singles",20401            "categorySlug": "magic_the_gathering",20402            "franchise": "Magic: The Gathering"20403          },20404          {20405            "handle": "core-set-2021-singles",20406            "categorySlug": "magic_the_gathering",20407            "franchise": "Magic: The Gathering"20408          },20409          {20410            "handle": "30th-anniversary-edition-singles",20411            "categorySlug": "magic_the_gathering",20412            "franchise": "Magic: The Gathering"20413          },20414          {20415            "handle": "disney-lorcana-tcg",20416            "categorySlug": "disney_lorcana",20417            "franchise": "Disney Lorcana"20418          },20419          {20420            "handle": "board-games",20421            "categorySlug": "board_games"20422          }20423        ],20424        "rules": [],20425        "defaultCategory": null,20426        "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",20427        "keepOutOfStock": true,20428        "fetchBarcodes": false,20429        "wholeShop": false,20430        "pageSize": 250,20431        "titlePattern": "^(?<name>.+?) \\((?<set>[A-Z0-9]{2,6})\\)$"20432      },20433      "capabilities": [20434        "live_listings",20435        "images",20436        "url_lookup"20437      ],20438      "refreshClass": "normal",20439      "domain": "kanatacg.com",20440      "country": "CA",20441      "requires": [],20442      "acquisitionMethod": "Shopify storefront products.json",20443      "historicalDepth": "none"20444    },20445    {20446      "id": "woolley-wallis",20447      "displayName": "Woolley & Wallis (Salisbury) — hammer prices",20448      "sourceId": "woolley-wallis",20449      "sourceName": "Woolley & Wallis",20450      "sourceType": "auction_house",20451      "sourceUrl": "https://www.woolleyandwallis.co.uk",20452      "module": "api/woolley-wallis",20453      "enginePriority": [20454        "api"20455      ],20456      "categories": [20457        "antiques",20458        "silver",20459        "porcelain",20460        "glass_crystal",20461        "clocks",20462        "jewelry",20463        "other_watches",20464        "rolex",20465        "omega",20466        "patek_philippe",20467        "art",20468        "contemporary_art",20469        "photography",20470        "design_furniture",20471        "books",20472        "maps",20473        "medals",20474        "militaria",20475        "coins",20476        "vintage_toys",20477        "cameras",20478        "scientific_instruments",20479        "wine"20480      ],20481      "regions": [20482        "GB"20483      ],20484      "languages": [20485        "en"20486      ],20487      "currency": [20488        "GBP"20489      ],20490      "supportsListings": false,20491      "supportsSold": true,20492      "supportsAuctions": true,20493      "supportsImages": true,20494      "supportsCatalog": false,20495      "supportsPopulation": false,20496      "supportsLookup": false,20497      "refreshFrequencyMinutes": 1440,20498      "priority": "medium",20499      "trustScore": 0.9,20500      "attributionRequired": true,20501      "termsUrl": "https://www.woolleyandwallis.co.uk/buying/terms-and-conditions/",20502      "accessNotes": "Woolley & Wallis (Salisbury; silver, jewellery, watches, Asian art, 20th-century design, tribal art, medals). robots.txt DISALLOWS /umbraco/ — the site's past-sales endpoint lives there, so it is deliberately NOT called. Instead: the public /sitemap-xml lists every sale page (/departments/<dept>/<code>/), the sale page gives title + date, its public first lot page (/view-lot/1/) exposes sale-id=\"<id>\", and lots are read from the public JSON GET /api/lots/search?pageIndex=N&filter=&saleId=<id>&pageSize=100 (allowed by robots): LotNumber, Title, FullDescription, LowerEstimate/UpperEstimate, HammerPrice (explicitly the HAMMER → buyer_premium_included=false, GBP), MainImageUrl, ViewUrl, categories, condition report. Unsold lots have no HammerPrice → auction_lot (ended). 2.5 s politeness; up to 3 requests per sale before the lot pages; salesPerRun caps incremental runs; resumable backfill over the sitemap (≈480 sales). No login, no bidder data.",20503      "enabled": true,20504      "schemaVersion": "1.0",20505      "config": {20506        "sitemapUrl": "https://www.woolleyandwallis.co.uk/sitemap-xml",20507        "salesPerRun": 220508      },20509      "capabilities": [20510        "sold_listings",20511        "auction_results",20512        "images",20513        "historical_backfill"20514      ],20515      "refreshClass": "normal",20516      "domain": "woolleyandwallis.co.uk",20517      "country": "GB",20518      "requires": [],20519      "acquisitionMethod": "public lot-search JSON API + sitemap/sale pages (robots-compliant)",20520      "historicalDepth": "years"20521    },20522    {20523      "id": "wright",20524      "displayName": "Wright / Rago (design & art results)",20525      "sourceId": "wright",20526      "sourceName": "Wright",20527      "sourceType": "auction_house",20528      "sourceUrl": "https://www.wright20.com",20529      "module": "api/wright",20530      "enginePriority": [20531        "api"20532      ],20533      "categories": [20534        "design_furniture",20535        "art",20536        "contemporary_art",20537        "photography",20538        "glass_crystal",20539        "porcelain",20540        "silver",20541        "clocks",20542        "jewelry",20543        "other_watches",20544        "antiques",20545        "books",20546        "movie_posters"20547      ],20548      "regions": [20549        "US"20550      ],20551      "languages": [20552        "en"20553      ],20554      "currency": [20555        "USD"20556      ],20557      "supportsListings": false,20558      "supportsSold": true,20559      "supportsAuctions": true,20560      "supportsImages": true,20561      "supportsCatalog": false,20562      "supportsPopulation": false,20563      "supportsLookup": false,20564      "refreshFrequencyMinutes": 1440,20565      "priority": "medium",20566      "trustScore": 0.9,20567      "attributionRequired": true,20568      "termsUrl": "https://www.wright20.com/buying/terms-of-sale/",20569      "accessNotes": "Plain HTTPS with the RareIndex user agent. robots.txt: Crawl-delay 10 (honoured: 10 s between requests), Disallow /items/item/*, /items/index/zoom/*, /auctions/bid/*, /auctions/view/*, /auctions/view_search/*, /search/*, /catalogs/popup*, /*?cms=* — none of these paths is ever requested. We read only /sitemap-index.xml (which lists one child sitemap per sale session, sitemaps/sessions/sitemap-auctions_<yyyy>_<mm>_<slug>.xml; the child files are not fetched, the session URL is derived from the name), the session index page /auctions/<yyyy>/<mm>/<slug> whose <div id=app data-page> Inertia JSON holds every lot of the sale (artist, title, lot number, estimate, price realized `result`, bid count, image, location) and, for closed sales, the public /auctions/<yyyy>/<mm>/<slug>/info page whose JSON carries the session close time (ended_at) and the flag show_results_with_premium (1 → results include the buyer's premium; stored as buyerPremiumIncluded, null when the info page is unavailable). Lot detail pages are never fetched. Sale date = ended_at (fallback: auction date). Results flagged preliminary by the house lower confidence to 0.75. Sessions go back to 2000 (614 sessions in the index). 0 credits.",20570      "enabled": true,20571      "schemaVersion": "1.0",20572      "config": {20573        "sessionsPerRun": 2,20574        "fetchInfoPage": true20575      },20576      "capabilities": [20577        "sold_listings",20578        "auction_results",20579        "images",20580        "historical_backfill"20581      ],20582      "refreshClass": "normal",20583      "domain": "wright20.com",20584      "country": "US",20585      "requires": [],20586      "acquisitionMethod": "embedded Inertia JSON (data-page) on public session pages",20587      "historicalDepth": "decades"20588    },20589    {20590      "id": "yahoo-auctions-jp",20591      "displayName": "Yahoo! Auctions Japan (ヤフオク! live listings + recent closed lots)",20592      "sourceId": "yahoo-auctions-jp",20593      "sourceName": "Yahoo! Auctions Japan (ヤフオク!)",20594      "sourceType": "marketplace",20595      "sourceUrl": "https://auctions.yahoo.co.jp",20596      "module": "api/yahoo-auctions-jp",20597      "enginePriority": [20598        "api",20599        "scrapfly"20600      ],20601      "categories": [20602        "pokemon",20603        "yugioh",20604        "one_piece_card_game",20605        "trading_cards",20606        "rolex",20607        "omega",20608        "other_watches",20609        "nike_jordan",20610        "sneakers",20611        "action_figures",20612        "gundam",20613        "nintendo_games",20614        "designer_toys"20615      ],20616      "regions": [20617        "JP"20618      ],20619      "languages": [20620        "ja"20621      ],20622      "currency": [20623        "JPY"20624      ],20625      "supportsListings": true,20626      "supportsSold": true,20627      "supportsAuctions": true,20628      "supportsImages": true,20629      "supportsCatalog": false,20630      "supportsPopulation": false,20631      "supportsLookup": true,20632      "refreshFrequencyMinutes": 60,20633      "priority": "high",20634      "trustScore": 0.75,20635      "attributionRequired": true,20636      "termsUrl": "https://www.lycorp.co.jp/ja/company/terms/",20637      "accessNotes": "Reads two public, login-free pages with the honest RareIndexBot user agent over plain HTTPS (Scrapfly country=jp only as fallback if the direct fetch is blocked): (1) the keyword search `/search/search?p=<kw>[&auccat=<id>][&b=<offset>]` whose server-rendered `pageData` JSON lists 50 live lots per page (id, title, category id, current price, buy-now price, bid count, end time JST) enriched with the card anchors (image, flea-market flag) → listings; (2) the closed search `/closedsearch/closedsearch?p=<kw>[&b=<offset>]` whose Next.js `__NEXT_DATA__` state lists 50 ended lots (final price, bid count, end time, category path, item condition, fixed-price flag) → sales only when bidCount ≥ 1 (hammer price, no buyer premium). robots.txt (verified 2026-09-08): `Allow: /closedsearch/closedsearch` overrides the generic `/closedsearch/` disallow; `/search/*?*n=`, `*mode=`, `*s1=`, `*o1=`, `*min=`/`*max=` filters are disallowed, so we never send page-size, sort or price filters and paginate only with `b=` (50 per page). Seller names are masked by the site and not stored; bidder data, watchlists, /user/, /seller/ pages are never fetched. Item pages are fetched only for URL lookup (`/jp/auction/<id>`). 4 s between requests, concurrency 1. Closed pages beyond the site's own window are the aucfree connector's job (same yahoo_auction_id identifier).",20638      "enabled": true,20639      "schemaVersion": "1.0",20640      "config": {20641        "seeds": [20642          {20643            "q": "ポケモンカード PSA10",20644            "category": "pokemon",20645            "language": "Japanese",20646            "auccat": null20647          },20648          {20649            "q": "ポケモンカード 旧裏面",20650            "category": "pokemon",20651            "language": "Japanese",20652            "auccat": null20653          },20654          {20655            "q": "遊戯王 PSA",20656            "category": "yugioh",20657            "language": "Japanese",20658            "auccat": null20659          },20660          {20661            "q": "ワンピースカード PSA10",20662            "category": "one_piece_card_game",20663            "language": "Japanese",20664            "auccat": null20665          },20666          {20667            "q": "ロレックス 腕時計",20668            "category": "rolex",20669            "language": null,20670            "auccat": null20671          },20672          {20673            "q": "オメガ スピードマスター",20674            "category": "omega",20675            "language": null,20676            "auccat": null20677          },20678          {20679            "q": "グランドセイコー",20680            "category": "other_watches",20681            "language": null,20682            "auccat": null20683          },20684          {20685            "q": "ナイキ エアジョーダン1 未使用",20686            "category": "nike_jordan",20687            "language": null,20688            "auccat": null20689          },20690          {20691            "q": "ガンプラ MG 未組立",20692            "category": "gundam",20693            "language": null,20694            "auccat": null20695          },20696          {20697            "q": "figma 未開封",20698            "category": "action_figures",20699            "language": null,20700            "auccat": null20701          },20702          {20703            "q": "ファミコン 未開封",20704            "category": "nintendo_games",20705            "language": null,20706            "auccat": null20707          },20708          {20709            "q": "BE@RBRICK 1000%",20710            "category": "designer_toys",20711            "language": null,20712            "auccat": null20713          }20714        ],20715        "pagesPerSeed": 2,20716        "closedPagesPerSeed": 1,20717        "includeClosed": true,20718        "defaultCategory": "trading_cards"20719      },20720      "capabilities": [20721        "live_listings",20722        "sold_listings",20723        "auction_results",20724        "images",20725        "url_lookup",20726        "historical_backfill"20727      ],20728      "refreshClass": "active",20729      "domain": "auctions.yahoo.co.jp",20730      "country": "JP",20731      "requires": [],20732      "acquisitionMethod": "public HTML (server-rendered pageData JSON + Next.js state), direct HTTP",20733      "historicalDepth": "months"20734    },20735    {20736      "id": "yahoo-shopping-jp",20737      "displayName": "Yahoo! Shopping Japan (itemSearch V3 API — store listings)",20738      "sourceId": "yahoo-shopping-jp",20739      "sourceName": "Yahoo! Shopping (Yahoo!ショッピング)",20740      "sourceType": "marketplace",20741      "sourceUrl": "https://shopping.yahoo.co.jp",20742      "module": "api/yahoo-shopping-jp",20743      "enginePriority": [20744        "api"20745      ],20746      "categories": [20747        "pokemon",20748        "yugioh",20749        "one_piece_card_game",20750        "trading_cards",20751        "rolex",20752        "omega",20753        "other_watches",20754        "nike_jordan",20755        "adidas_yeezy",20756        "sneakers",20757        "gundam",20758        "action_figures",20759        "nintendo_games",20760        "lego_sets"20761      ],20762      "regions": [20763        "JP"20764      ],20765      "languages": [20766        "ja"20767      ],20768      "currency": [20769        "JPY"20770      ],20771      "supportsListings": true,20772      "supportsSold": false,20773      "supportsAuctions": false,20774      "supportsImages": true,20775      "supportsCatalog": false,20776      "supportsPopulation": false,20777      "supportsLookup": false,20778      "refreshFrequencyMinutes": 360,20779      "priority": "medium",20780      "trustScore": 0.7,20781      "attributionRequired": true,20782      "termsUrl": "https://developer.yahoo.co.jp/webapi/shopping/",20783      "accessNotes": "GATED — official Yahoo! JAPAN Web API (Shopping itemSearch V3). Needs a free Yahoo! JAPAN application id (Client ID) in YAHOO_JP_APP_ID. Requests: `shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid=…&query=<kw>&results=50&start=<n>&image_size=600[&condition=used|new]`, paginated with `start` (the API caps start+results at 1 000 → ≤ 20 pages per seed). Stored fields: item code, name, JPY price, url, condition (new/used), stock flag, JAN code (→ identifiers.jan/ean), brand, store id/name, genre category, release date, image, description. Asking prices are listings (never sales). The app id is redacted from stored URLs. Documented limit: 1 query/s (429 when exceeded) → 1.1 s between requests, concurrency 1; Yahoo! JAPAN's Web API guidelines require the 'Web Services by Yahoo! JAPAN' credit — `attributionRequired: true`. Without the key the framework reports the connector DISABLED; the fixture is the documentation's own sample response (see fixture note).",20784      "enabled": true,20785      "schemaVersion": "1.0",20786      "config": {20787        "seeds": [20788          {20789            "q": "ポケモンカード PSA10",20790            "category": "pokemon",20791            "language": "Japanese",20792            "condition": null20793          },20794          {20795            "q": "遊戯王 PSA10",20796            "category": "yugioh",20797            "language": "Japanese",20798            "condition": null20799          },20800          {20801            "q": "ワンピースカード PSA10",20802            "category": "one_piece_card_game",20803            "language": "Japanese",20804            "condition": null20805          },20806          {20807            "q": "ロレックス",20808            "category": "rolex",20809            "language": null,20810            "condition": "used"20811          },20812          {20813            "q": "オメガ スピードマスター",20814            "category": "omega",20815            "language": null,20816            "condition": "used"20817          },20818          {20819            "q": "グランドセイコー",20820            "category": "other_watches",20821            "language": null,20822            "condition": "used"20823          },20824          {20825            "q": "エアジョーダン1",20826            "category": "nike_jordan",20827            "language": null,20828            "condition": null20829          },20830          {20831            "q": "イージーブースト",20832            "category": "adidas_yeezy",20833            "language": null,20834            "condition": null20835          },20836          {20837            "q": "ガンプラ MG",20838            "category": "gundam",20839            "language": null,20840            "condition": null20841          },20842          {20843            "q": "レゴ 廃盤",20844            "category": "lego_sets",20845            "language": null,20846            "condition": null20847          }20848        ],20849        "pagesPerSeed": 2,20850        "sort": "-score",20851        "defaultCategory": "trading_cards"20852      },20853      "capabilities": [20854        "live_listings",20855        "images"20856      ],20857      "refreshClass": "normal",20858      "domain": "shopping.yahoo.co.jp",20859      "country": "JP",20860      "requires": [20861        "YAHOO_JP_APP_ID"20862      ],20863      "acquisitionMethod": "official API (Yahoo! JAPAN Web API — Shopping itemSearch V3)",20864      "historicalDepth": "none"20865    },20866    {20867      "id": "ygoprodeck",20868      "displayName": "YGOPRODeck (Yu-Gi-Oh!)",20869      "sourceId": "ygoprodeck",20870      "sourceName": "YGOPRODeck",20871      "sourceType": "catalog",20872      "sourceUrl": "https://ygoprodeck.com",20873      "module": "api/ygoprodeck",20874      "enginePriority": [20875        "api"20876      ],20877      "categories": [20878        "yugioh"20879      ],20880      "regions": [20881        "US",20882        "EU"20883      ],20884      "languages": [20885        "en"20886      ],20887      "currency": [20888        "USD",20889        "EUR"20890      ],20891      "supportsListings": false,20892      "supportsSold": false,20893      "supportsAuctions": false,20894      "supportsImages": true,20895      "supportsCatalog": true,20896      "supportsPopulation": false,20897      "supportsLookup": false,20898      "refreshFrequencyMinutes": 1440,20899      "priority": "high",20900      "trustScore": 0.75,20901      "attributionRequired": true,20902      "termsUrl": "https://ygoprodeck.com/api-guide/",20903      "accessNotes": "Public API v7 (https://db.ygoprodeck.com/api/v7/cardinfo.php), no key; rate limit 20 req/s — a full crawl is ONE request (~21 MB, ~14.5k cards / ~44k printings) plus optional misc=yes. The API carries no price timestamp: card_sets[].set_price (USD, per printing) and card_prices (cardmarket EUR / tcgplayer / ebay / amazon / coolstuffinc USD, card-level) are recorded as price_observations dated at fetch time with confidence 0.7 and metadata.price_scope. Images may not be hot-linked in bulk per the API guide (we store URLs, never mirror). Yu-Gi-Oh! © Konami.",20904      "enabled": true,20905      "schemaVersion": "1.0",20906      "config": {20907        "misc": true20908      },20909      "capabilities": [20910        "images",20911        "catalog"20912      ],20913      "refreshClass": "normal",20914      "domain": "ygoprodeck.com",20915      "country": "US",20916      "requires": [],20917      "historicalDepth": "none"20918    },20919    {20920      "id": "yuyu-tei",20921      "displayName": "Yuyu-tei (遊々亭) singles",20922      "sourceId": "yuyu-tei",20923      "sourceName": "Yuyu-tei",20924      "sourceType": "dealer",20925      "sourceUrl": "https://yuyu-tei.jp",20926      "module": "api/yuyu-tei",20927      "enginePriority": [20928        "api"20929      ],20930      "categories": [20931        "pokemon",20932        "one_piece_card_game",20933        "yugioh",20934        "weiss_schwarz",20935        "digimon_tcg",20936        "dragon_ball_tcg",20937        "other_tcg"20938      ],20939      "regions": [20940        "JP"20941      ],20942      "languages": [20943        "ja"20944      ],20945      "currency": [20946        "JPY"20947      ],20948      "supportsListings": true,20949      "supportsSold": false,20950      "supportsAuctions": false,20951      "supportsImages": true,20952      "supportsCatalog": true,20953      "supportsPopulation": false,20954      "supportsLookup": false,20955      "refreshFrequencyMinutes": 1440,20956      "priority": "high",20957      "trustScore": 0.8,20958      "attributionRequired": true,20959      "termsUrl": "https://yuyu-tei.jp/guide/index",20960      "accessNotes": "Yuyu-tei is one of Japan's largest single-card shops; its sell pages are public, server-rendered and need no login or JS. robots.txt only sets Crawl-delay for Slurp/bingbot/AhrefsBot/serpstatbot and lists a sitemap (which 404s); nothing is disallowed for other agents. Per game (poc Pokémon, opc One Piece, ygo Yu-Gi-Oh! OCG, ws Weiss Schwarz, digi Digimon, dm Duel Masters, ua Union Arena, vg Vanguard, bs Battle Spirits, gcg Gundam) we read the game top page https://yuyu-tei.jp/top/<game> once to list the expansion codes and names (the `vers[]` checkboxes), then one page per expansion https://yuyu-tei.jp/sell/<game>/s/<ver> which lists every single of that expansion grouped by rarity (number, Japanese name, sell price in JPY incl. tax, stock count, card image). Incremental runs cover the newest `setsPerGame` expansions per game; backfill walks all of them. Requests are spaced ≥ 4 s, 1 concurrent, honest UA. Not fetched: buy-list (買取) prices, damaged-card pages (/s/damage), member/cart pages, card detail pages (only linked). Prices are shop asking prices → listings, never sales; the shop is the seller (no personal data).",20961      "enabled": true,20962      "schemaVersion": "1.0",20963      "config": {20964        "games": {20965          "poc": {20966            "slug": "pokemon",20967            "name": "Pokémon Card Game",20968            "franchise": "Pokémon",20969            "brand": "The Pokémon Company"20970          },20971          "opc": {20972            "slug": "one_piece_card_game",20973            "name": "One Piece Card Game",20974            "franchise": "One Piece",20975            "brand": "Bandai"20976          },20977          "ygo": {20978            "slug": "yugioh",20979            "name": "Yu-Gi-Oh! OCG",20980            "franchise": "Yu-Gi-Oh!",20981            "brand": "Konami"20982          },20983          "ws": {20984            "slug": "weiss_schwarz",20985            "name": "Weiss Schwarz",20986            "franchise": "Weiß Schwarz",20987            "brand": "Bushiroad"20988          },20989          "digi": {20990            "slug": "digimon_tcg",20991            "name": "Digimon Card Game",20992            "franchise": "Digimon",20993            "brand": "Bandai"20994          },20995          "dm": {20996            "slug": "other_tcg",20997            "name": "Duel Masters",20998            "franchise": "Duel Masters",20999            "brand": "Takara Tomy"21000          },21001          "ua": {21002            "slug": "other_tcg",21003            "name": "Union Arena",21004            "franchise": "Union Arena",21005            "brand": "Bandai"21006          },21007          "vg": {21008            "slug": "other_tcg",21009            "name": "Cardfight!! Vanguard",21010            "franchise": "Cardfight!! Vanguard",21011            "brand": "Bushiroad"21012          },21013          "bs": {21014            "slug": "other_tcg",21015            "name": "Battle Spirits",21016            "franchise": "Battle Spirits",21017            "brand": "Bandai"21018          },21019          "gcg": {21020            "slug": "other_tcg",21021            "name": "Gundam Card Game",21022            "franchise": "Gundam",21023            "brand": "Bandai"21024          }21025        },21026        "setsPerGame": 621027      },21028      "capabilities": [21029        "live_listings",21030        "catalog",21031        "images"21032      ],21033      "refreshClass": "normal",21034      "domain": "yuyu-tei.jp",21035      "country": "JP",21036      "requires": [],21037      "acquisitionMethod": "public HTML set pages (server-rendered, plain HTTP)",21038      "historicalDepth": "none"21039    }21040  ]21041}21042