Bowmark AIdocs

Liquid Death

Liquid Death's live storefront: search the catalogue, read one product's real variants, prices and per-size stock, and hand the shopper a filled cart to…

Liquid Death's live storefront: search the catalogue, read one product's real variants, prices and per-size stock, and hand the shopper a filled cart to open.

Domain: liquiddeath.com

Also known as: Liquid Death, liquiddeath, LIQUID DEATH, liquid death

Call it directly

bowmark.providers.liquiddeath.searchProducts(query: string, opts?: { productType?: string; inStockOnly?: boolean; limit?: number }): Promise<LiquiddeathProduct[]>
bowmark.providers.liquiddeath.getProduct(handle: string): Promise<LiquiddeathProduct>
bowmark.providers.liquiddeath.addToCart(items: LiquiddeathCartItem[]): Promise<LiquiddeathCart>
bowmark.providers.liquiddeath.getCart(cartId: string): Promise<LiquiddeathLiveCart>

Functions

FunctionWhat it does
searchProductsSearches Liquid Death's live catalogue and returns matching products with their real variants, current prices and per-variant stock.
getProductReads one product by its handle — every variant, its exact price and whether that specific size or colour is purchasable right now.
addToCartBuilds a filled Liquid Death cart for the shopper to open — give it handles and quantities, get back cartUrl (lands on the store's cart page with the lines in it) and checkoutUrl (straight…
getCartReads a cart the shopper already has, by its id — line items, quantities, per-unit and per-line prices, order subtotal and total, the cart's currency and expiry, and the real checkout URL…

Types

interface LiquiddeathVariant {
  id: string;
  title: string;
  price: string;
  compareAtPrice: string | null;
  sku: string | null;
  available: boolean;
  options: string[];
}
interface LiquiddeathProduct {
  handle: string;
  title: string;
  productType: string;
  vendor: string;
  url: string;
  optionNames: string[];
  variants: LiquiddeathVariant[];
  priceRange: { min: string; max: string } | null;
  inStock: boolean;
  tags: string[];
  descriptionHtml: string | null;
}
interface LiquiddeathCartItem {
  handle: string;
  variantId?: string;
  variantTitle?: string;
  quantity?: number;
}
interface LiquiddeathCartLine {
  handle: string;
  productTitle: string;
  variantId: string;
  variantTitle: string;
  quantity: number;
  price: string;
  lineTotal: string;
  available: boolean;
}
interface LiquiddeathCart {
  lines: LiquiddeathCartLine[];
  subtotal: string;
  cartUrl: string;
  checkoutUrl: string;
  allAvailable: boolean;
  unavailable: string[];
}
interface LiquiddeathLiveCartLine {
  lineId: string;
  variantId: string;
  title: string;
  quantity: number;
  unitPrice: string;
  lineTotal: string;
}
interface LiquiddeathLiveCart {
  id: string;
  lines: LiquiddeathLiveCartLine[];
  totalQuantity: number;
  subtotal: string;
  total: string;
  currency: string;
  checkoutUrl: string;
  expiresAt: string | null;
}

Examples

// what iced tea do they sell, and can I actually buy any of it?
const hits = await bowmark.providers.liquiddeath.searchProducts("iced tea");
for (const p of hits) log(`${p.title} from $${p.priceRange?.min} — in stock: ${p.inStock}`);
// which sizes of this tee are actually left?
const p = await bowmark.providers.liquiddeath.getProduct("hot-reaper-tee");
const left = p.variants.filter((v) => v.available).map((v) => v.title);
log(left.length ? `${p.title}: ${left.join(", ")}` : `${p.title} is sold out`);
log(p.url); // hand the shopper back to the store to finish