← 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 }
]
}