← back to Whatsmystyle

scripts/clothing-apis/brands.json

78 lines

{
  "_note": "Brand registry for catalog ingestion. Each entry names the source adapter + endpoint. 'shopify' means /products.json paginated, no key. Add new brands by appending — the importer reads this file at runtime.",
  "_updated": "2026-05-12",

  "shopify_dtc": [
    { "id": "allbirds",       "name": "Allbirds",        "domain": "allbirds.com",          "sustain_tier": 5, "pro_grade": 1 },
    { "id": "reformation",    "name": "Reformation",     "domain": "thereformation.com",    "sustain_tier": 5, "pro_grade": 0, "disabled": true, "disabled_reason": "Shopify Plus headless — /products.json returns 404. Try affiliate feed (Awin) instead." },
    { "id": "pact",           "name": "Pact",            "domain": "wearpact.com",          "sustain_tier": 5, "pro_grade": 1, "disabled": true, "disabled_reason": "Not Shopify — wearpact.com is a custom site, /products.json returns the HTML homepage. Needs a bespoke adapter." },
    { "id": "outerknown",     "name": "Outerknown",      "domain": "outerknown.com",        "sustain_tier": 5, "pro_grade": 1 },
    { "id": "tradlands",      "name": "Tradlands",       "domain": "tradlands.com",         "sustain_tier": 4, "pro_grade": 1 },
    { "id": "whimsyandrow",   "name": "Whimsy + Row",    "domain": "whimsyandrow.com",      "sustain_tier": 4, "pro_grade": 1 },
    { "id": "cuyana",         "name": "Cuyana",          "domain": "cuyana.com",            "sustain_tier": 4, "pro_grade": 1 },
    { "id": "kotn",           "name": "Kotn",            "domain": "kotn.com",              "sustain_tier": 5, "pro_grade": 1, "disabled": true, "disabled_reason": "Not Shopify — kotn.com is a Next.js + custom backend, /products.json returns SPA HTML. Needs a bespoke adapter." },
    { "id": "matethelabel",   "name": "Mate the Label",  "domain": "matethelabel.com",      "sustain_tier": 5, "pro_grade": 1 },
    { "id": "boody",          "name": "Boody",           "domain": "boody.com",             "sustain_tier": 4, "pro_grade": 1 },
    { "id": "naadam",         "name": "Naadam",          "domain": "naadam.co",             "sustain_tier": 4, "pro_grade": 1 },
    { "id": "christydawn",    "name": "Christy Dawn",    "domain": "christydawn.com",       "sustain_tier": 5, "pro_grade": 0 },
    { "id": "mottandbow",     "name": "Mott & Bow",      "domain": "mottandbow.com",        "sustain_tier": 4, "pro_grade": 1 },
    { "id": "saintjames",     "name": "Saint James",     "domain": "saintjames.us",         "sustain_tier": 3, "pro_grade": 1, "disabled": true, "disabled_reason": "Connection timeout — saintjames.us blocks or rate-limits this network. Retry from a different IP or use the affiliate feed." },
    { "id": "tentree",        "name": "Tentree",         "domain": "tentree.com",           "sustain_tier": 4, "pro_grade": 1 },
    { "id": "mara-hoffman",   "name": "Mara Hoffman",    "domain": "marahoffman.com",       "sustain_tier": 4, "pro_grade": 0 },
    { "id": "knickey",        "name": "Knickey",         "domain": "knickey.com",           "sustain_tier": 4, "pro_grade": 1 },
    { "id": "boyish",         "name": "Boyish",          "domain": "boyish.com",            "sustain_tier": 5, "pro_grade": 1 },
    { "id": "fordays",        "name": "For Days",        "domain": "fordays.com",           "sustain_tier": 5, "pro_grade": 1 },
    { "id": "everybody-world","name": "Everybody.World", "domain": "everybody.world",       "sustain_tier": 5, "pro_grade": 1 }
  ],

  "woocommerce_dtc": [
    "_note: empty seed. Tick 20 probing showed major DTC brands (Pact/Reformation/Kotn/Frank+Oak/Burton) don't expose /wp-json/wc/store/v1/products. Add small/indie WooCommerce shops here as they're found. Same shape as shopify_dtc entries."
  ],

  "_note_headless_spa": "Tick 21 — Browserbase-driven scrape of SPA brands. Each entry needs hand-crafted CSS selectors for the product card / title / price / image / link. Expect quarterly maintenance as vendors redesign. Cost ~$0.001 per page fetched.",
  "headless_spa": [
    {
      "id": "reformation-spa",
      "name": "Reformation",
      "domain": "thereformation.com",
      "products_path": "/products",
      "sustain_tier": 5,
      "pro_grade": 0,
      "disabled": true,
      "disabled_reason": "Selectors not yet calibrated — enable + craft after a manual DOM probe via the BB live debugger URL.",
      "selectors": { "card": ".product-card", "title": ".product-card__title", "price": ".product-card__price", "image": "img", "link": "a" }
    },
    {
      "id": "kotn-spa",
      "name": "Kotn",
      "domain": "kotn.com",
      "products_path": "/collections/all",
      "sustain_tier": 5,
      "pro_grade": 1,
      "disabled": true,
      "disabled_reason": "Selectors not yet calibrated — Kotn is a Next.js SPA with hash-class names that change per deploy.",
      "selectors": { "card": "[data-test-id='product-card']", "title": "h3", "price": ".price", "image": "img", "link": "a" }
    }
  ],

  "_note_awin": "Tick 21 — Awin affiliate feed ingest from local CSVs. After approval per-advertiser, drop the feed CSV at data/awin/<advertiser_id>.csv and add an entry below.",
  "awin_advertisers": [
    "_note: empty seed. Wire AWIN_PUBLISHER_ID + AWIN_API_KEY env once Steve has signed up at awin.com publisher portal."
  ],

  "etsy_categories": [
    { "id": "etsy-vintage-clothing",     "name": "Etsy — Vintage Clothing",      "category_id": "11050", "query": "vintage clothing", "needs_key": true },
    { "id": "etsy-handmade-fashion",     "name": "Etsy — Handmade Fashion",      "category_id": "11000", "query": "handmade clothing", "needs_key": true }
  ],

  "ebay_categories": [
    { "id": "ebay-vintage-fashion-women", "name": "eBay — Vintage Women's",      "category_id": "175759",  "needs_key": true },
    { "id": "ebay-vintage-fashion-men",   "name": "eBay — Vintage Men's",        "category_id": "175760",  "needs_key": true }
  ],

  "amazon_searches": [
    { "id": "amazon-womens-tops",        "name": "Amazon — Women's Tops",        "node_id": "1045024",     "needs_key": true },
    { "id": "amazon-mens-shirts",        "name": "Amazon — Men's Shirts",        "node_id": "1045788",     "needs_key": true }
  ]
}