Bowmark AIdocs

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

FunctionWhat it does
searchSearches 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,…
getProductReads 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).…
checkStockAnswers 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");