Zenni Optical
Online prescription eyewear.
Online prescription eyewear. Prices a real frame + Rx + lens-type configuration off the site's own configurator, and checks live per-SKU stock.
Domain: zennioptical.com
Also known as: Zenni, Zenni Optical, ZENNI
Call it directly
bowmark.providers.zennioptical.searchFrames(query: string, limit?: number): Promise<ZenniFrameSearch>
bowmark.providers.zennioptical.getFrame(skuId: string): Promise<ZenniFrame>
bowmark.providers.zennioptical.checkStock(skuId: string): Promise<ZenniStock>
bowmark.providers.zennioptical.priceLensConfig(skuId: string, rx: ZenniRx): Promise<ZenniLensPriceRow[]>Functions
| Function | What it does |
|---|---|
searchFrames | Searches Zenni's own storefront catalog for what a shopper would type ("round tortoise", "titanium rimless") and returns matching frames with the sku every other function here takes. |
getFrame | Reads one frame's name, base price and per-color-variant price straight off the product page's own embedded data. |
checkStock | Checks live per-SKU inventory off Zenni's own inventory endpoint. |
priceLensConfig | Runs a real prescription through Zenni's own order-configurator wizard (usage type -> manual Rx entry -> confirm) and returns the priced lens-type matrix the site computes for that exact Rx… |
Types
interface ZenniFrameSummary {
sku: string;
name: string;
color: string;
price: number;
salePrice: number;
inStock: boolean;
shape: string | null;
material: string | null;
url: string;
}
interface ZenniFrameSearch {
frames: ZenniFrameSummary[];
total: number;
}
interface ZenniFrame {
sku: string;
name: string;
price: number;
colors: Array<{ sku: string; price: number }>;
}
interface ZenniStock {
skuId: string;
inStock: boolean;
quantity: number;
backOrderable: boolean;
preOrderable: boolean;
}
interface ZenniRx {
odSph: number;
osSph: number;
pd: number;
birthYear: number;
}
interface ZenniLensPriceRow {
type: string;
minPrice: number;
maxPrice: number;
subTypes: Array<{ type: string; usage: string; minPrice: number; maxPrice: number; tints: boolean }>;
}