← Blog
2026-04-28

Per-store inventory: how Pennysku tells you where to drive

When the SKU is at $0.06 nationwide but only 3 stores have stock — we tell you which 3. Plus aisle and bay.

Penny errors on Home Depot and Best Buy don't fire across every store at once. Sometimes a SKU is mispriced nationwide but stocked in three Bay Area stores and one in Atlanta. If you're flipping, you don't want to drive to the closest store and find an empty peg — you want to drive to the closest store that actually has the item, and you want the aisle and bay before you get there.

Best Buy: the Developer API path

BB ships a free Developer API (50k calls/day on the hobby tier) that returns nationwide pricing + onlineAvailability + inStoreAvailability for any SKU. We pull the BB Stores API to get nearby stores from your saved ZIP, then hit BB's Buying Options API to learn open-box prices per store. Total cost: 1 store-finder call + 1 buying-options call per push. All free under the BB Developer key. No SerpAPI dependency.

Home Depot: the SerpAPI store_id path

HD has no public Developer API. The store finder endpoint at homedepot.com/StoreSearchServices/v2/storesearch is fronted by Akamai — datacenter IPs get a 403 — so we route it through ScrapingBee's premium_proxy (~6 credits per call). Once we have the store list, per-store pricing comes from SerpAPI's home_depot engine with the `store_id` query param. The response includes aisle and bay when HD's data has them, which is most of the time on store-stocked items.

Cost: ~$0.005 per store per check. Ten stores in radius = $0.05 per click. We cache aggressively — the per-store snapshot table holds 24h of results, so re-renders during a hunt cost zero.

Drive route

Once the in-stock list is built, we synthesize a Google Maps multi-stop URL with up to 10 in-stock stores in distance order. Click it, navigate. If you grab the item at the first store, the rest of the route is still loaded — no replanning needed.

Stock-change alerts

Per-store snapshots are deduped against the previous snapshot. When a store flips from out-of-stock to in-stock, or quantity jumps by ≥5 units, that's a stock-change event and fires a Discord alert. Catches restocks you'd otherwise miss.

Set your ZIP

All of this is gated on a `default_zip` set in /account. Without it, per-store enrichment skips silently and you get the nationwide alert without a route. Set it once and forget it — the per-store path activates on the next scrape.