Bowmark AIdocs

Brixton

Brixton apparel and headwear catalogue — every product, its size/color variants, real prices and stock — read off the live Shopify storefront, plus a…

Brixton apparel and headwear catalogue — every product, its size/color variants, real prices and stock — read off the live Shopify storefront, plus a live-validated checkout handoff link.

Domain: brixton.com

Also known as: brixton, Brixton, Brixton Ltd

Call it directly

bowmark.providers.brixton.listBrixtonProducts(opts?: { limit?: number }): Promise<BrixtonProduct[]>
bowmark.providers.brixton.getBrixtonProduct(handle: string): Promise<BrixtonProduct>
bowmark.providers.brixton.getBrixtonCheckoutLink(handle: string, variantTitleOrOptions: string, opts?: { quantity?: number }): Promise<BrixtonCheckoutLink>

Functions

FunctionWhat it does
listBrixtonProductsReads the live Brixton catalogue as the storefront publishes it — every product, its handle, title, vendor, description, tags, images and the per-variant price the storefront is quoting…
getBrixtonProductReads one product by its handle — every size/color variant, its exact price and whether that specific variant is purchasable right now.
getBrixtonCheckoutLinkResolves a product handle + a variant match (either the exact variant title like "M", or a substring of it) to a real Shopify cart-permalink URL, validated live against the storefront.

Types

interface BrixtonVariant {
  /** Shopify's numeric variant id as a string. */
  id: string;
  /** The variant's own label, e.g. "M" or "Black / M" on multi-option products. */
  title: string;
  /** String verbatim from the storefront — "30.00" (dollars) on /products.json, "10900" (cents) on /products/<h>.js. */
  price: string;
  /** Same scale as price. Null when the variant is not on sale. */
  compareAtPrice: string | null;
  /** The store's own SKU. Null on a variant without one. */
  sku: string | null;
  /** Whether the variant is purchasable right now. */
  available: boolean;
  /** e.g. ["M"] or ["Black", "M"]. */
  options: string[];
}
interface BrixtonProduct {
  /** The handle is the only stable identifier across the catalogue. */
  handle: string;
  title: string;
  vendor: string;
  productType: string;
  url: string;
  descriptionHtml: string | null;
  optionNames: string[];
  variants: BrixtonVariant[];
  /** Same scale as variants — see BrixtonVariant.price. */
  priceRange: { min: string; max: string } | null;
  /** True if ANY variant is purchasable. */
  inStock: boolean;
  tags: string[];
  /** Brixton's own images, in the order the storefront publishes them. */
  images: string[];
}
interface BrixtonCatalogue {
  /** All matching products, in-stock first, then by handle. */
  products: BrixtonProduct[];
  /** What the filter DROPPED, in the same register the rest of the library uses. */
  warnings: string[];
}
interface BrixtonCheckoutLink {
  /** Shopify's own cart-permalink URL — a GET that adds the line item and redirects into the cart. */
  url: string;
  /** The exact variant the link resolved to, read live off the storefront. */
  variant: BrixtonVariant;
  /** The product the variant belongs to. */
  product: BrixtonProduct;
}

Examples

// what are the cheapest in-stock Brixton pieces right now?
const all = await bowmark.providers.brixton.listBrixtonProducts({ limit: 50 });
const inStock = all.filter(p => p.inStock).sort((a, b) => Number(a.priceRange?.min ?? 0) - Number(b.priceRange?.min ?? 0));
log(inStock.slice(0, 5).map(p => `${p.title} from $${p.priceRange?.min}`).join(", "));
// what size does the Sonoran Cowboy Hat come in, and is Medium in stock?
const p = await bowmark.providers.brixton.getBrixtonProduct("sonoran-cowboy-hat-black");
const m = p.variants.find(v => v.title === "M");
log(m?.available ? `M is in stock at $${m.price}` : `M is out of stock`);