Tatcha
Runs Tatcha's real "Ritual Finder" skincare quiz — the site's own product-matching backend, not a generic routine.
Domain: tatcha.com
Also known as: Tatcha, tatcha, Tatcha Beauty, tatcha.com
Call it directly
bowmark.providers.tatcha.getRitualQuizOptions(): Promise<TatchaRitualQuizOptions>
bowmark.providers.tatcha.getPersonalizedRitual(skinType: string, benefits: string[], eyeConcerns?: string[], sensitive?: boolean, owned?: string[]): Promise<TatchaRitual>Functions
| Function | What it does |
|---|---|
getRitualQuizOptions | Reads the live Ritual Finder quiz's real skin-type, benefit and eye-concern menus. |
getPersonalizedRitual | Runs real quiz answers through Tatcha's own personalization backend and returns the real AM/PM product ritual it recommends. |
Types
interface TatchaQuizOption {
value: string;
label: string;
}
interface TatchaRitualQuizOptions {
skinTypes: TatchaQuizOption[];
benefits: TatchaQuizOption[];
eyeConcerns: TatchaQuizOption[];
}
interface TatchaRitualProduct {
step: string;
sku: string;
name: string;
secondaryName: string;
price: string;
handle: string;
url: string;
image: string;
usageTime: "AM" | "PM" | "both";
description: string;
inStock: boolean;
}
interface TatchaRitual {
summary: string;
products: TatchaRitualProduct[];
handoffUrl: string;
}Examples
// What ritual does Tatcha's own quiz recommend for combo-to-dry, brightening + hydrating skin?
const options = await bowmark.providers.tatcha.getRitualQuizOptions();
const ritual = await bowmark.providers.tatcha.getPersonalizedRitual(
"combo_to_dry",
["brightening", "hydrating"],
["Eye_Hydrating"],
false,
[],
);
return { summary: ritual.summary, steps: ritual.products.map((p) => `${p.step}: ${p.name} (${p.price})`) };