Sears
Sears' own storefront — product search, product detail, fulfillment/stock and store locator.
Domain: sears.com
Also known as: Sears, Sears.com
Call it directly
bowmark.providers.sears.search(query: SearsSearchQuery): Promise<SearsSearchResult[]>
bowmark.providers.sears.getProduct(idOrUrl: string, opts?: { zipCode?: string }): Promise<SearsProduct>
bowmark.providers.sears.checkStock(idOrUrl: string, opts?: { zipCode?: string; quantity?: number }): Promise<SearsStock>Functions
| Function | What it does |
|---|---|
search | Searches Sears' live catalog by free-text keyword the way the site's own search bar does, returning matching product rows: id, name, brand, current and regular price, a thumbnail,… |
getProduct | Reads one Sears product in full: name, brand, current and regular price, whether it's in stock, every image and the site's own full labelled spec sheet (dimensions, features, overview).… |
checkStock | Answers whether a Sears product is buyable right now — for shipping/delivery AND for in-store/curbside pickup — the way the product page's own fulfillment panel does, in one call. |
Types
interface SearsSearchPrice {
currentAmount: number;
currentDisplay: string;
regularAmount: number | null;
regularDisplay: string | null;
onSale: boolean;
}
interface SearsSearchResult {
productId: string;
url: string;
name: string;
brand: string | null;
price: SearsSearchPrice;
thumbnail: string | null;
rating: number | null;
reviewCount: number | null;
totalCount: number;
}
interface SearsSearchQuery {
query: string;
zipCode?: string;
limit?: number;
}
interface SearsProductPrice {
currentAmount: number;
currentDisplay: string;
regularAmount: number | null;
regularDisplay: string | null;
onSale: boolean;
}
interface SearsProductSpecification {
label: string;
attributes: string[];
}
interface SearsProduct {
productId: string;
url: string;
name: string;
brand: string | null;
price: SearsProductPrice;
inStock: boolean;
images: string[];
description: string | null;
specifications: SearsProductSpecification[];
}
interface SearsShippingAvailability {
available: boolean;
availableQuantity: number | null;
ffmType: string | null;
shipModes: string[];
dcUnitId: string | null;
promiseDate: string | null;
autoUpgrade: boolean;
freeShipping: boolean;
freeEligible: boolean;
freeQualified: boolean;
}
interface SearsStockStore {
unitId: string | null;
storeName: string | null;
storeBrand: string | null;
storeAddress: string | null;
promiseDate: string | null;
ffmType: string | null;
}
interface SearsPickupAvailability {
available: boolean;
stores: SearsStockStore[];
message: string | null;
}
interface SearsStock {
productId: string;
zipCode: string;
quantity: number;
shipping: SearsShippingAvailability | null;
pickup: SearsPickupAvailability;
}Examples
// find a product to read in full with getProduct
const rows = await bowmark.providers.sears.search({ query: "refrigerator" });
for (const r of rows) {
log(`${r.name} — ${r.price.currentDisplay}${r.price.onSale ? ` (was ${r.price.regularDisplay})` : ""}`);
}
log(`${rows[0]?.totalCount} total matches`);// read one product in full — the id comes from a search row, a bookmark or a link
const p = await bowmark.providers.sears.getProduct("A108603727");
log(`${p.name} — ${p.price.currentDisplay}${p.price.onSale ? ` (was ${p.price.regularDisplay})` : ""}`);
log(p.inStock ? "in stock" : "out of stock");