Unadhi Guides

Black Friday real-discount check sheet: weekly price snapshots from 28 October, lowest price seen, "was" price and real cut per product

Updated 23 Oct 2026 · Disclosure: the product scraper linked below is an Unadhi product on the Apify Store. This guide is free, and the sheet works with a CSV from any tool or with prices typed 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, on Black Friday (27 November 2026), whether each "sale" price is really lower than what the shop charged before. One row per product page: the price at each weekly snapshot from late October, the lowest price you saw, the Black Friday price, the shop's own "was" price, the real cut against your lowest snapshot, the claimed cut against the "was" price, and a Verdict column (real cut / real cut smaller than claimed / not lower than before / not read). Formulas are below. The example rows are made up.

The finished sheet

watch tab (example rows are made up)

Product page28 Oct4 Nov11 Nov18 Nov25 NovLowest seen27 Nov"Was" shownReal cutClaimed cutVerdict
example-shop.com/products/desk-lamp2,4992,4992,9992,9992,9992,4992,3992,9994%20%real cut smaller than claimed
sample-store.in/product/kettle1,8001,8001,8001,8001,8001,8001,4401,80020%20%real cut
demo-goods.com/products/backpack3,2003,6003,6003,6003,6003,2003,2403,600-1%10%not lower than before

Who this is for

A "was" price on a sale label is whatever the shop chose to show. The only way to know what it charged before is to have written the price down before. This sheet does that once a week, so the check on 27 November takes a minute.

Start by 28 October

Black Friday 2026 falls on Friday 27 November. Thirty days before that is Wednesday 28 October, so take your first snapshot on or before that day, then one a week: 28 Oct, 4 Nov, 11 Nov, 18 Nov, 25 Nov, and a last one on 27 Nov. Weekly snapshots can miss a short low price between two runs, so "Lowest seen" is the lowest price you recorded, not a full price history. Take snapshots more often if that matters to you.

Step 1: list the product pages (tab watch)

Put one product page URL per row in column A, exactly as the scraper writes it in its url field (open one result once to see the form, usually https://shop-domain/products/handle for Shopify). In row 1, from column B to F, type the names of the snapshot tabs you will create: s1028, s1104, s1111, s1118, s1125. In H1 type s1127.

Step 2: take a snapshot

With the product scraper

Open the E-commerce Product Data scraper on the Apify Store. It reads independent Shopify, WooCommerce and schema.org shops (not marketplaces), checks each shop's robots.txt and terms, and skips shops that forbid scraping. Give it the shops, not single products, with this input (JSON tab):

{
  "startUrls": [
    { "url": "https://example-shop.com" },
    { "url": "https://sample-store.in" }
  ],
  "maxProductsPerShop": 500,
  "maxListingPages": 20,
  "includeDescription": false
}

When the run finishes, export the dataset as CSV, then in your sheet use File → Import → Upload, "Insert new sheet", and name the tab after the date, such as s1028. Keep the headers. The columns you need are url, price, compareAtPrice, onSale and inStock; the formulas find them by header name, so column order does not matter.

Free, without the scraper

Make the snapshot tab by hand with the headers url, price and compareAtPrice, open each product page on the day, and type what you see. Slower, but the same formulas work.

Step 3: the price formulas

In B2 (copy across to F2, then into H2), read the price of the product in A2 from the tab named in row 1:

=IFERROR(INDEX(INDIRECT("'"&B$1&"'!A:ZZ"),
  MATCH($A2, INDEX(INDIRECT("'"&B$1&"'!A:ZZ"), 0, MATCH("url", INDIRECT("'"&B$1&"'!1:1"), 0)), 0),
  MATCH("price", INDIRECT("'"&B$1&"'!1:1"), 0)), "")

A blank cell means the product was not in that snapshot (sold out and hidden, renamed, or the tab is not imported yet). Lowest seen in G2:

=IF(COUNT(B2:F2)=0, "", MIN(B2:F2))

"Was" shown in I2 is the same formula as H2 with "compareAtPrice" in place of "price": it is the crossed-out price the shop displays on Black Friday.

Step 4: real cut, claimed cut and Verdict

J2 real cut:     =IF(AND(ISNUMBER(G2), ISNUMBER(H2)), 1-H2/G2, "")
K2 claimed cut:  =IF(AND(ISNUMBER(I2), ISNUMBER(H2)), 1-H2/I2, "")

Format J and K as percent. Verdict in L2:

=IF(A2="", "",
 IF(NOT(ISNUMBER(H2)), "not read",
 IF(NOT(ISNUMBER(G2)), "no earlier price",
 IF(H2>=G2, "not lower than before",
 IF(AND(ISNUMBER(K2), K2-J2>0.05), "real cut smaller than claimed", "real cut")))))

The 0.05 means a claimed cut more than five percentage points bigger than the real one is flagged; change it to suit. Filter column L to real cut for the offers worth sharing or buying.

What the rule says in the EU

Since 28 May 2022, Article 6a of the EU Price Indication Directive (98/6/EC, added by Directive (EU) 2019/2161) says that any announcement of a price reduction must show the prior price, and that the prior price is the lowest price the trader applied in a period of at least 30 days before the reduction. EU countries may set different rules for goods that spoil quickly, for goods on the market for less than 30 days, and for reductions that grow step by step. Each country enforces its own version, so a shop owner should check the national rules where it sells. This sheet is a record of what you saw, not a legal finding.

Check before you publish or buy

Partner programme opening soon

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.

Sources

Related

← All guides

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