Lovely Bride
Reads Lovely Bride's real per-store BridalLive appointment scheduler — every store, a store's real bookable appointment types and prices, and real open…
Reads Lovely Bride's real per-store BridalLive appointment scheduler — every store, a store's real bookable appointment types and prices, and real open time slots — straight off lovelybride.com and app.bridallive.com's own private JSON API, no key, no browser.
Domain: lovelybride.com
Also known as: Lovely Bride, lovelybride, lovelybride.com, LovelyBride
Call it directly
bowmark.providers.lovelybride.listStores(): Promise<LovelybrideStore[]>
bowmark.providers.lovelybride.getStoreAppointmentTypes(storeSlug: string): Promise<{ store: LovelybrideStoreInfo; appointmentTypes: LovelybrideAppointmentType[] }>
bowmark.providers.lovelybride.getAvailableSlots(storeSlug: string, appointmentTypeId: number, date: string): Promise<LovelybrideAvailability>Functions
| Function | What it does |
|---|---|
listStores | Lists every Lovely Bride store the site's own store locator links — 19 across the US and one in London, each with the slug the other two functions take. |
getStoreAppointmentTypes | Reads one store's real, currently-bookable BridalLive appointment types — each with its real price and duration exactly as the store's own scheduler quotes it — plus the store's contact… |
getAvailableSlots | Reads the real open appointment slots for one store, one appointment type, and one date ("YYYY-MM-DD") — the exact slots a shopper would see on the store's own scheduler page. |
Types
interface LovelybrideStore {
slug: string; // e.g. "houston" — what the other two functions take
name: string; // e.g. "Houston"
url: string;
}
interface LovelybrideAppointmentType {
id: number; // e.g. 66220 — what getAvailableSlots takes
description: string; // e.g. "1. Lovely Bridal Gown Appointment - $50 Fee"
durationMinutes: number; // e.g. 90
priceUsd: number | null;
priceFormatted: string | null; // e.g. "$50.00"
requiresPaymentInfo: boolean;
}
interface LovelybrideStoreInfo {
name: string;
emailAddress: string | null;
phoneNumber: string | null;
address: string | null;
schedulerUrl: string; // the BridalLive scheduler page — the write handoff
}
interface LovelybrideTimeSlot {
startDateTime: string; // ISO 8601
endDateTime: string; // ISO 8601
startDateTimeForView: string; // e.g. "10:00AM", store-local time
location: string | null; // e.g. "Room 2"
}
interface LovelybrideAvailability {
storeSlug: string;
date: string; // echoes the requested "YYYY-MM-DD"
slots: LovelybrideTimeSlot[]; // [] is a genuine "fully booked" answer
}