Modular Closets
Modular Closets' real pre-configured kit catalog (closets, wardrobes, pantries, laundry, mudroom) and its real Shopify-priced configurator — search real…
Modular Closets' real pre-configured kit catalog (closets, wardrobes, pantries, laundry, mudroom) and its real Shopify-priced configurator — search real kits, read one kit's real option tree (Color, Width, and on some kits a third option), and price one exact combination against the site's own real variant price.
Domain: modularclosets.com
Also known as: Modular Closets, modularclosets, modularclosets.com
Call it directly
bowmark.providers.modularclosets.searchClosetKits(query?: string): Promise<ModularClosetsKit[]>
bowmark.providers.modularclosets.getKitConfigurator(handle: string): Promise<ModularClosetsConfigurator>
bowmark.providers.modularclosets.priceKitConfiguration(handle: string, selections: Record<string, string>): Promise<ModularClosetsPriceResult>Functions
| Function | What it does |
|---|---|
searchClosetKits | Searches Modular Closets' real pre-configured kit catalog (closets, wardrobes, pantries, laundry, mudroom — every room type in one collection), optionally filtered by a free-text query… |
getKitConfigurator | Reads one kit's real option tree (Color, Width, and on some kits a third option like "Doors included") plus every real priced variant for every combination, straight off the site's own… |
priceKitConfiguration | Resolves one exact build (a kit handle + a chosen value for every real option from getKitConfigurator) to Modular Closets' own real Shopify-priced variant — the same number and availability… |
Types
// Modular Closets' OWN shapes — not a capability contract.
interface ModularClosetsKit {
handle: string; // the key getKitConfigurator/priceKitConfiguration take
title: string;
tags: string[]; // the site's own room-type/grouping tags, e.g. ["Bedroom"]
priceMin: number; // dollars — cheapest real combination
priceMax: number;
}
interface ModularClosetsOption {
name: string; // e.g. "Color", "Width", "Doors included"
values: string[]; // this kit's real values for that option
}
interface ModularClosetsVariant {
variantId: number;
selections: Record<string, string>; // every real option name -> this variant's value
price: number; // the real Shopify-priced total for this exact combination
available: boolean;
}
interface ModularClosetsConfigurator {
handle: string;
title: string;
options: ModularClosetsOption[];
variants: ModularClosetsVariant[]; // every real priced combination
}
interface ModularClosetsPriceResult {
handle: string;
selections: Record<string, string>;
variantId: number;
price: number; // the real number the site's own product page would show
available: boolean;
}Examples
// What does a 66" wide Total Closet Kit cost in Natural Oak?
const kits = await bowmark.providers.modularclosets.searchClosetKits("total closet kit");
const kit = kits[0];
const configurator = await bowmark.providers.modularclosets.getKitConfigurator(kit.handle);
const priced = await bowmark.providers.modularclosets.priceKitConfiguration(kit.handle, {
Color: "Natural Oak",
Width: '66" WIDE',
});
return { price: priced.price, available: priced.available, options: configurator.options };