KUIU
KUIU's live hunting-apparel catalogue — every product, its camo-pattern/color and size variants, real prices and stock — plus the storefront's own Find…
KUIU's live hunting-apparel catalogue — every product, its camo-pattern/color and size variants, real prices and stock — plus the storefront's own Find Your Fit men's size chart and a live-validated checkout handoff link.
Domain: kuiu.com
Also known as: kuiu, KUIU, KUIU Ultralight Hunting
Call it directly
bowmark.providers.kuiu.listKuiuProducts(opts?: { limit?: number }): Promise<KuiuProduct[]>
bowmark.providers.kuiu.getKuiuProduct(handle: string): Promise<KuiuProduct>
bowmark.providers.kuiu.findKuiuSize(measurements: { chest: number; waist: number }): Promise<KuiuSizeMatch>
bowmark.providers.kuiu.getKuiuCheckoutLink(handle: string, variantTitleOrOptions: string, opts?: { quantity?: number }): Promise<KuiuCheckoutLink>Functions
| Function | What it does |
|---|---|
listKuiuProducts | Reads the live KUIU catalogue as the storefront publishes it — every product, its handle, title, vendor, description, tags, images and the per-variant price/stock the storefront is quoting… |
getKuiuProduct | Reads one product by its handle — every camo-pattern/color and size variant, its exact price and whether that specific variant is purchasable right now. |
findKuiuSize | Maps chest and waist measurements (inches) to KUIU's own published men's apparel size, reading the storefront's live Find Your Fit chart. |
getKuiuCheckoutLink | Resolves a product handle + a variant match (either the exact variant title like "Vias / M", or a substring of it) to a real Shopify cart-permalink URL, validated live against the… |
Types
interface KuiuVariant {
/** Shopify's numeric variant id as a string. */
id: string;
/** The variant's own label, e.g. "Vias / M". */
title: string;
/** String verbatim from the storefront — "129.00" (dollars) on /products.json, "12900" (cents) on /products/<handle>.js. */
price: string;
/** Same scale as price. Null when the variant is not on sale. */
compareAtPrice: string | null;
sku: string | null;
/** Whether the variant is purchasable right now. */
available: boolean;
/** e.g. ["Vias", "M"] — camo pattern/color + size. */
options: string[];
}
interface KuiuProduct {
/** 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: KuiuVariant[];
priceRange: { min: string; max: string } | null;
/** True if ANY variant is purchasable. */
inStock: boolean;
tags: string[];
images: string[];
}
interface KuiuSizeMatch {
/** The chart size that matched both chest and waist, e.g. "M". Null on no match. */
size: string | null;
chestRange: string | null;
waistRange: string | null;
armLengthRange: string | null;
/** The size the CHEST measurement alone points to. */
chestMatch: string | null;
/** The size the WAIST measurement alone points to. */
waistMatch: string | null;
/** Populated when chest and waist disagree, or neither matched. */
warnings: string[];
}
interface KuiuCheckoutLink {
/** Shopify's own cart-permalink URL — a GET that adds the line item and redirects into the cart. */
url: string;
variant: KuiuVariant;
product: KuiuProduct;
}Examples
// what's my size, and is it in stock?
const size = await bowmark.providers.kuiu.findKuiuSize({ chest: 39, waist: 32 });
log(size.size ? `You're a ${size.size}` : `No single chart row fits — chest says ${size.chestMatch}, waist says ${size.waistMatch}`);// cheapest in-stock KUIU pieces right now
const all = await bowmark.providers.kuiu.listKuiuProducts({ 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(", "));