Promo codes & checkout discounts
Looks up currently-known promo codes and checkout discounts for a merchant by domain — the code string (when one exists), human discount text, title,…
Looks up currently-known promo codes and checkout discounts for a merchant by domain — the code string (when one exists), human discount text, title, description, whether the source verified it, and a link to redeem it. Fans out across coupon aggregators; direct API, no browser.
Also known as: promo code, promo codes, coupon, coupon code, coupon codes, discount code, discount codes, checkout discount, voucher code
Call it
bowmark.promocodes.search(domain: string, options?: CallOptions): Promise<PromoCodeSearchResult>Functions
| Function | What it does |
|---|---|
search | Looks up promo codes and checkout discounts for a merchant — bowmark.promocodes.search("getyourguide.com") — and returns normalized offers ranked verified-with-code first, then any code,… |
Types
// One normalized promo code / checkout discount offer.
type PromoCode = {
source: string // which source this offer came from, e.g. "couponfollow"
id: string // that source's own id for this offer; stable within source, not across
code: string | null // the code to enter at checkout; null for a deal-only listing
discount: string | null // human text ("5% OFF", "$10 OFF"); null when unstated
title: string
description: string
verified: boolean // the SOURCE's own verification, not Bowmark's
exclusive: boolean
url: string // merchant page if known, else the source's own listing page
}
type PromoCodeSearchResult = {
codes: PromoCode[] // ranked: verified-with-code first, then any code, deal-only last
warnings: string[] // always present; empty when nothing was dropped
}
type CallOptions = {
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
// A provider slower than this is DROPPED from the results and
// NAMED in warnings — never silently absent
}Examples
// is there a working promo code for GetYourGuide right now?
const { codes, warnings } = await bowmark.promocodes.search("getyourguide.com");
for (const w of warnings) log(w);
const best = codes.find(c => c.code) || null;
log(best ? `${best.code} — ${best.discount ?? best.title}` : "no working code found");
return codes.slice(0, 5);// compare GetYourGuide and Viator's best currently-known discount
const [gyg, viator] = await Promise.all([
bowmark.promocodes.search("getyourguide.com"),
bowmark.promocodes.search("viator.com"),
]);
return {
getyourguide: gyg.codes[0] ?? null,
viator: viator.codes[0] ?? null,
};Providers behind it
| Provider | |
|---|---|
couponfollow | CouponFollow |