Sunlighten
Sunlighten's own 'Find My Sauna' quiz match (wellness goals + room capacity -> the real recommended model) plus that model's real, currently-quoted price…
Sunlighten's own 'Find My Sauna' quiz match (wellness goals + room capacity -> the real recommended model) plus that model's real, currently-quoted price off the public storefront — read directly from the site's own published data, no browser.
Domain: sunlighten.com
Also known as: Sunlighten, sunlighten, SUNLIGHTEN
Call it directly
bowmark.providers.sunlighten.matchSauna(input: { wellnessGoals: string[]; capacity: number }): Promise<SunlightenModel[]>
bowmark.providers.sunlighten.getModelPricing(input: { model: string }): Promise<SunlightenPriceListing[]>Functions
| Function | What it does |
|---|---|
matchSauna | Runs Sunlighten's own 'Find My Sauna' quiz match — the same wellness-goal + room-capacity filter the site's quiz JS runs client-side after submit — against the site's own build-time product… |
getModelPricing | Reads the real, currently-quoted price for a Sunlighten sauna model off the public Shopify storefront (shop-us.sunlighten.com) — the marketing site's own '/get-pricing' page is a lead-gen… |
Types
interface SunlightenModel {
/** The marketing-site page slug, e.g. "amplify-ii". Not a Shopify handle — see getModelPricing. */
slug: string;
name: string;
description: string | null;
/** The site's own wellness-goal codenames this model is tagged with. */
wellnessTags: string[];
wellnessTagNames: string[];
/** e.g. "n2_person". Null on a page the CMS never gave a capacity (never matches a real quiz answer). */
capacityCodename: string | null;
/** e.g. "2-Person". */
capacityLabel: string | null;
/** The live marketing page for this model. */
url: string;
}
interface SunlightenPriceListing {
/** The Shopify handle — a DIFFERENT identifier from SunlightenModel.slug (the marketing page slug). */
handle: string;
/** The storefront's own product title, e.g. "mPulse Believe Smart Sauna - Basswood" (one row per wood finish). */
title: string;
/** The lowest variant price on this listing, as the store publishes it (decimal string, dollars). Null if the listing carries no parseable price. */
price: string | null;
available: boolean;
url: string;
}Examples
// what does the Find My Sauna quiz recommend for detox + sleep, 3-person?
const models = await bowmark.providers.sunlighten.matchSauna({ wellnessGoals: ["Detoxification", "Sleep"], capacity: 3 });
log(models.map(m => m.name).join(", "));// and what does it actually cost?
const models = await bowmark.providers.sunlighten.matchSauna({ wellnessGoals: ["Detoxification"], capacity: 2 });
for (const m of models) {
const listings = await bowmark.providers.sunlighten.getModelPricing({ model: m.name });
log(`${m.name}: ${listings.map(l => `${l.title} $${l.price}`).join(" / ") || "no live listing found"}`);
}