Champion Xpress Carwash
Reads Champion Xpress Carwash's own live "25 for Life" MVP Unlimited membership picker — every currently enrolled wash location, and for a chosen one, the…
Reads Champion Xpress Carwash's own live "25 for Life" MVP Unlimited membership picker — every currently enrolled wash location, and for a chosen one, the real current monthly price plus a preseeded add-to-cart link — the way the site's own state/location select computes it, real-time.
Domain: champxpress.com
Also known as: Champion Xpress Carwash, Champion Xpress, champxpress.com, ChampXpress
Call it directly
bowmark.providers.champxpress.listLocations(): Promise<ChampxpressLocation[]>
bowmark.providers.champxpress.getPlanQuote(location: string): Promise<ChampxpressPlanQuote>Functions
| Function | What it does |
|---|---|
listLocations | Lists every wash location currently enrolled in Champion Xpress's "25 for Life" MVP Unlimited membership plan, read live off the plan page's own state/location select. |
getPlanQuote | Runs the site's own price computation for one location — location is a free-text name or slug from listLocations(), e.g. "El Paso" or "el-paso-tx-alameda" — and returns the real current… |
Types
// Champion Xpress's OWN shapes — not a capability contract.
interface ChampxpressLocation { slug: string; displayName: string; state: string }
interface ChampxpressPlanQuote {
location: ChampxpressLocation;
planName: string;
price: number;
currency: "USD";
checkoutUrl: string; // preseeded add-to-cart link; not visited by this provider
}Examples
// The query ChatGPT could only half-answer: a real current price for a named
// location plus a working add-to-cart link, not a promise to "send the checkout link".
const locations = await bowmark.providers.champxpress.listLocations();
const quote = await bowmark.providers.champxpress.getPlanQuote(locations[0].displayName);
return quote.checkoutUrl;