Unadhi Guides

Are the prices in your buying guides still right? A Google Sheet that checks every recommended product's price and stock before Black Friday

Updated 22 Oct 2026 · Disclosure: the product data scraper linked below is an Unadhi product on the Apify Store. This guide is free, and the sheet works without it if you type current prices in by hand. Current Apify pricing is only on the Store page. This page has no affiliate links and nobody paid to be mentioned.

What you get: one Google Sheet that tells you, before Black Friday, which product picks in your buying guides and gift guides are out of date. The links tab has one row per product you recommend: the article it sits in, the product page, the price you wrote, the price on the shop today, how far it moved, whether it is in stock, and a Fix column that says exactly what to do: ok, update price, sold out: swap pick, not found: check link or on sale now: mention it. The articles tab counts the fixes per article, so you edit the posts with the most problems first. Formulas are below. The example rows are made up.

The finished sheet

links tab (example rows are made up)

ArticleProduct pagePrice in articlePrice todayWas (compare-at)ChangeIn stockFix
Best oak chopping boardshttps://shop-a.example/products/oak-board-large45.0045.000%TRUEok
Best oak chopping boardshttps://shop-b.example/product/end-grain-board/60.0072.0020%TRUEupdate price
Gifts for home cookshttps://shop-c.example/products/linen-apron28.0021.0028.00-25%TRUEon sale now: mention it
Gifts for home cookshttps://shop-a.example/products/knife-roll55.0055.000%FALSEsold out: swap pick
Gifts for home cookshttps://shop-d.example/products/salt-cellar18.00not found: check link

articles tab

ArticlePicksFixesEdit first?
Gifts for home cooks33yes
Best oak chopping boards21

Who this is for

Bloggers, newsletter writers and small review sites that recommend products from independent shops: "best of" lists, gift guides and comparison posts. Prices and stock change all year, and most of all in November. A reader who clicks a pick at the price you quoted and finds a higher price or a sold-out page stops trusting the rest of the guide. Checking every link by hand takes hours; this sheet does it in one run.

Step 1: list your picks in a tab named links

Put one row per recommended product, with these headers in row 1: Article (A), Product page (B), Price in article (C). Use the plain product page address, without tracking parameters, so it matches what the scraper returns. If you write the same product into two articles, give it two rows.

Step 2: get today's price and stock into a tab named scrape

With the product data scraper

Open the E-commerce Product Data Scraper (Shopify, WooCommerce, any shop) on the Apify Store and paste the product pages from column B as start URLs. Single product pages are fine, and so are mixed shops:

{
  "startUrls": [
    { "url": "https://shop-a.example/products/oak-board-large" },
    { "url": "https://shop-b.example/product/end-grain-board/" }
  ],
  "maxProductsPerShop": 100,
  "includeDescription": false
}

Export the dataset as CSV, then in your sheet use File → Import → Upload, "Insert new sheet", and name the tab scrape. Keep the headers; the formulas find url, price, compareAtPrice and inStock by name, so column order does not matter.

Free, without the scraper

Make a scrape tab with the headers url, price, compareAtPrice and inStock (TRUE or FALSE), open each product page and type what you see. Slower, but the same formulas work.

Step 3: the formulas in the links tab

Put these in row 2 and fill down.

ColumnFormula (row 2)
D Price today=IFERROR(INDEX(FILTER(scrape!A:Z, scrape!1:1="price"), MATCH(B2, INDEX(FILTER(scrape!A:Z, scrape!1:1="url")), 0)), "")
E Was (compare-at)=IFERROR(INDEX(FILTER(scrape!A:Z, scrape!1:1="compareAtPrice"), MATCH(B2, INDEX(FILTER(scrape!A:Z, scrape!1:1="url")), 0)), "")
F Change=IF(OR(D2="", C2=""), "", D2/C2-1) (format as %)
G In stock=IFERROR(INDEX(FILTER(scrape!A:Z, scrape!1:1="inStock"), MATCH(B2, INDEX(FILTER(scrape!A:Z, scrape!1:1="url")), 0)), "")
H Fix=IF(B2="", "", IF(D2="", "not found: check link", IF(G2=FALSE, "sold out: swap pick", IF(AND(E2<>"", E2>D2), "on sale now: mention it", IF(ABS(F2)>=0.05, "update price", "ok")))))

The 5% in the Fix formula is a starting point: change it to whatever gap you think readers would notice. "not found" means the scraper returned no product for that address. Open the link: the product may be gone, the shop may have changed its address, or the shop was skipped (see SHOPS_SUMMARY). A price in a different currency from the one you wrote also shows up as a big change, so compare like with like.

Step 4: the articles tab

Sort by Fixes, largest first, and work down the list.

What to do with each fix

Run it again a week before Black Friday and once more on the day. Each run replaces the scrape tab, and the links tab updates by itself.

Partner programme

Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received. Join the partner waitlist.

← All guides

Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.