Mixbook
Mixbook's real photo-book theme catalog, its published rate card, and each theme's live server-computed price — search real designs, price a custom page…
Mixbook's real photo-book theme catalog, its published rate card, and each theme's live server-computed price — search real designs, price a custom page count against Mixbook's own formula, read one theme's real price, and read the live sitewide promo code, rather than a researched estimate.
Domain: mixbook.com
Also known as: Mixbook, mixbook, Mixbook.com, mixbook.com
Call it directly
bowmark.providers.mixbook.searchPhotoBookThemes(query: string): Promise<MixbookThemeResult[]>
bowmark.providers.mixbook.getProductPrice(path: string): Promise<MixbookProductPrice>
bowmark.providers.mixbook.getPhotoBookPriceTable(binding?: MixbookBinding): Promise<MixbookPriceCell[]>
bowmark.providers.mixbook.priceCustomBook(binding: MixbookBinding, cover: string, paper: string, size: string, pageCount: number): Promise<MixbookCustomBookPrice>
bowmark.providers.mixbook.getActivePromotion(): Promise<MixbookPromotion>Functions
| Function | What it does |
|---|---|
searchPhotoBookThemes | Searches Mixbook's real 750+ photo-book theme catalog (Mixbook's own public Algolia index, not a scrape) and returns real theme names, descriptions, page counts, and the real product-page… |
getProductPrice | Reads ONE theme's real product page and returns Mixbook's own server-computed price for its default size/cover/paper/page-count configuration — the same schema.org Offer price the page… |
getPhotoBookPriceTable | Returns Mixbook's full published rate card — every cover/paper x size combination, for softcover, hardcover, or both — with the real base price for a 20-page book and the real… |
priceCustomBook | Prices an exact custom photo book — binding, cover, paper, size and any page count >= 20 — against Mixbook's own published rate-card formula (base price for 20 pages, plus the per-page… |
getActivePromotion | Reads the real, currently-active sitewide coupon banner (description, code, terms URL) Mixbook is showing right now. |
Types
// Mixbook's OWN shapes — not a capability contract.
type MixbookBinding = "softcover" | "hardcover";
interface MixbookPriceCell {
binding: MixbookBinding;
cover: string;
paper: string;
size: string;
basePrice20pg: number; // dollars, real published base price for a 20-page book
perAdditionalPage: number; // dollars, real published per-page increment
currency: string;
}
interface MixbookThemeResult {
name: string;
description: string;
path: string; // pass into getProductPrice
themeId: number;
pageCount: number;
orientation: string;
image: string;
tags: string[];
}
interface MixbookProductPrice {
path: string;
name: string;
sku: string;
size: string;
price: number; // real Mixbook-computed price for the default configuration
currency: string;
availability: string;
url: string;
}
interface MixbookCustomBookPrice {
binding: MixbookBinding;
cover: string;
paper: string;
size: string;
pageCount: number;
totalPrice: number; // basePrice20pg + perAdditionalPage * max(0, pageCount - 20)
currency: string;
cell: MixbookPriceCell;
}
interface MixbookPromotion {
description: string; // e.g. "Up to 50% off + an extra 10% off & free shipping on 79+"
code: string;
termsUrl: string;
}Examples
// What real Mixbook themes exist for a beach trip, and what does the default configuration cost?
const themes = await bowmark.providers.mixbook.searchPhotoBookThemes("beach");
const priced = await bowmark.providers.mixbook.getProductPrice(themes[0].path);
return { theme: themes[0].name, price: priced.price, currency: priced.currency, url: priced.url };// What would a 40-page hardcover 8.5x8.5 Matte book with Everyday Semi-Gloss paper cost, and is there an active promo?
const priced = await bowmark.providers.mixbook.priceCustomBook("hardcover", "Matte", "Everyday Semi-Gloss", "8.5×8.5", 40);
const promo = await bowmark.providers.mixbook.getActivePromotion();
return { totalPrice: priced.totalPrice, promoCode: promo.code, promoDescription: promo.description };