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
| Function | What it does |
|---|---|
searchProducts | Searches Liquid Death's live catalogue and returns matching products with their real variants, current prices and per-variant stock. |
getProduct | Reads one product by its handle — every variant, its exact price and whether that specific size or colour is purchasable right now. |
addToCart | Builds 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… |
getCart | Reads 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