TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1{2 "id": "livestock",3 "displayName": "Livestock (Canadian sneaker store, CAD)",4 "sourceId": "livestock",5 "sourceName": "Livestock",6 "sourceType": "dealer",7 "sourceUrl": "https://www.deadstock.ca",8 "module": "api/livestock",9 "enginePriority": [10 "api"11 ],12 "categories": [13 "sneakers",14 "adidas_yeezy",15 "nike_jordan",16 "new_balance_asics_other"17 ],18 "regions": [19 "CA"20 ],21 "languages": [22 "en"23 ],24 "currency": [25 "CAD"26 ],27 "supportsListings": true,28 "supportsSold": false,29 "supportsAuctions": false,30 "supportsImages": true,31 "supportsCatalog": false,32 "supportsPopulation": false,33 "supportsLookup": true,34 "refreshFrequencyMinutes": 1440,35 "priority": "low",36 "trustScore": 0.75,37 "attributionRequired": true,38 "termsUrl": "https://www.deadstock.ca/policies/terms-of-service",39 "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.",40 "enabled": true,41 "schemaVersion": "1.0",42 "acquisitionMethod": "Shopify storefront products.json",43 "historicalDepth": "none",44 "requires": [],45 "config": {46 "currency": "CAD",47 "market": "CA",48 "seller": "Livestock",49 "location": "Vancouver / Toronto, Canada",50 "collections": [51 {52 "handle": "footwear",53 "categorySlug": "sneakers"54 },55 {56 "handle": "footwear-adidas",57 "categorySlug": "adidas_yeezy",58 "brand": "adidas"59 },60 {61 "handle": "footwear-jordan",62 "categorySlug": "nike_jordan",63 "brand": "Jordan"64 },65 {66 "handle": "footwear-asics",67 "categorySlug": "new_balance_asics_other",68 "brand": "ASICS"69 },70 {71 "handle": "footwear-converse",72 "categorySlug": "new_balance_asics_other",73 "brand": "Converse"74 }75 ],76 "rules": [77 {78 "match": "\\b(air )?jordan\\b|\\bnike\\b",79 "categorySlug": "nike_jordan"80 },81 {82 "match": "\\badidas\\b|\\byeezy\\b",83 "categorySlug": "adidas_yeezy"84 },85 {86 "match": "new balance|\\basics\\b|\\bsalomon\\b|\\bhoka\\b|\\bpuma\\b|\\breebok\\b|\\bsaucony\\b|\\bconverse\\b|\\bvans\\b|\\bon running\\b|\\bmizuno\\b",87 "categorySlug": "new_balance_asics_other"88 }89 ],90 "defaultCategory": null,91 "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?",92 "keepOutOfStock": true,93 "fetchBarcodes": false,94 "wholeShop": false,95 "pageSize": 25096 }97}98