Micro Center
Micro Center (microcenter.com) — live product search over this store's own catalogue, cheapest matching item first.
Domain: microcenter.com
Also known as: Micro Center, MicroCenter, microcenter
Prefer the capability
bowmark.pcparts covers this provider and routes around it when it is having a bad day. Reach for this page when you need microcenter.com specifically.
Call it directly
bowmark.providers.microcenter.search(part: string): Promise<StoreOffer[]>
bowmark.providers.microcenter.getProduct(url: string): Promise<StoreProduct>
bowmark.providers.microcenter.checkStock(url: string): Promise<StoreStock>
bowmark.providers.microcenter.checkStoreStock(url: string): Promise<StoreShelfRoster>Functions
| Function | What it does |
|---|---|
search | Searches microcenter.com for a part and returns up to 3 rows, cheapest first. |
getProduct | Reads ONE microcenter.com product page in full — the identity search cannot give you (SKU, manufacturer part number, brand), the current price and availability, and the store's whole spec… |
checkStock | Answers whether ONE microcenter.com item is actually gettable right now, rather than merely listed at a price — the question search cannot answer, because the grid carries no availability… |
checkStoreStock | Answers WHICH Micro Center has it on the shelf today, not just whether the chain does. |
Types
// Micro Center's OWN row shape — not the `pcparts` capability contract.
interface StoreOffer {
title: string; // the listing title as the store writes it
price: number | null; // USD; null when the tile shows no price
url: string | null; // product page on microcenter.com
}
// One product page in full. Nulls mean "Micro Center does not report it for
// this product", never "we failed to read it".
interface StoreSpec { group: string; name: string; value: string }
interface StoreProduct {
url: string;
title: string;
brand: string | null;
sku: string | null; // Micro Center's own stock number
mpn: string | null; // manufacturer part number — the cross-retailer identity
price: number | null; // USD
currency: string;
availability: string | null; // "InStock" / "OutOfStock" / …
rating: number | null; // mean customer rating; null when unrated
description: string | null;
images: string[];
specs: StoreSpec[]; // the store's own spec sheet, in its own groups
}
// "Can I actually get this right now?" — THREE facts, because on a real
// storefront they disagree: Micro Center will cart a "Temporarily Out of
// Stock" item, so `orderable` alone overstates and the wording alone
// understates. Read the one your decision turns on.
interface StoreStock {
url: string;
title: string;
sku: string | null;
availability: string | null; // "InStock" | "BackOrder" | "OutOfStock" |
// "Discontinued" | "PreOrder" |
// "LimitedAvailability"; null = wording we
// do not classify — read availabilityText
availabilityText: string | null; // Micro Center's OWN words, verbatim
orderable: boolean; // is the cart control actually on the page
price: number | null; // USD
currency: string;
checkedAt: string; // ISO-8601 — stock is only true at an instant
}
// Which BRANCH has it — the read a bricks-and-mortar chain has and its
// online-only competitors do not. One product page carries every store's answer,
// so this costs the same single page load as `checkStock`.
interface StoreShelf {
storeNumber: string; // Micro Center's own store number, e.g. "205"
state: string | null; // "AZ"
city: string | null; // "Phoenix"
name: string; // the store's own label, "AZ - Phoenix"
inStock: boolean; // is one on THIS store's shelf right now
url: string; // this product priced at THIS store (?storeid=…)
}
interface StoreShelfRoster {
url: string;
title: string;
productId: string;
stores: StoreShelf[]; // PHYSICAL stores only, 31 of them
inStockCount: number; // how many have one on the shelf
storeCount: number; // how many were reported at all
shippable: boolean | null; // the ship-to-home catalogue, which is NOT a store
checkedAt: string; // ISO-8601 — shelf stock is only true at an instant
}Examples
const rows = await bowmark.providers.microcenter.search("RTX 4070 Super");
return rows[0] ?? null;// Price a part, then pull the full spec sheet + part number for the cheapest one.
const [cheapest] = await bowmark.providers.microcenter.search("Samsung 990 PRO 1TB");
if (!cheapest?.url) return null;
const product = await bowmark.providers.microcenter.getProduct(cheapest.url);
return { mpn: product.mpn, price: product.price, specs: product.specs };