The Scenario
Quarterly pricing review, and your category manager has just dropped a message asking where the competitive pricing sheet stands. You open the workbook and find 200 competitor product URLs in column A — all live, all needing current price and availability data — and columns B and C completely empty.
Whoever set this up last quarter wrote a note in the header: "Run Bright Data Web Unlocker manually for each URL, paste price in B, stock in C." There are 200 rows.
The bad version:
- Open Bright Data's Web Unlocker tool, paste URL 1, run the fetch, look through the raw HTML for the price field, copy it, switch to the sheet, paste it in B2.
- Realize the price format on that retailer is "USD 49.99" and another is "$49.99" and a third is "49,99 €" — now you have a consistency problem that grows with every row you add.
- Hit row 30 and discover one retailer is returning a CAPTCHA page instead of product data, so the Unlocker needs a different zone setting — but you're not sure which one and you've lost your place in the list.
Nobody hired you to scrape 200 URLs by hand. The analysis itself — spotting where your pricing is out of position — is the work. This part is just friction standing between you and it.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that sits inside your Google Sheet and connects to Bright Data Web Unlocker on your behalf. Give it the instruction once and it runs the fetches, extracts the structured fields, normalizes them, and writes them back into your columns.
For each URL in column A of my "Competitors" tab (rows 2 through 201), use Bright Data Web Unlocker to fetch the page and extract the current listed price and in-stock status, writing the price into column B and the availability into column C — normalize all prices to USD decimal format
What You Get
- Column B filled with normalized price values (e.g., 49.99) for each URL
- Column C filled with stock status ("In Stock", "Out of Stock", or "Limited") based on what the page returns
- Rows where the page returns an error or a CAPTCHA block are flagged in column D with a status code so you can investigate or re-run them separately
- Prices in non-USD currencies are converted and noted with the source currency in a parenthetical, so you know what was on the page versus what was normalized
What If the Data Is Not Quite Ready
Some URLs in column A are duplicates
Before running any Bright Data fetches, deduplicate column A, keeping only the first occurrence of each URL, then fetch price and stock status for each unique URL and write results into columns B and C
I also need the product name and seller, not just price and stock
For each URL in column A, use Bright Data Web Unlocker to fetch the page and extract the product name into column B, seller name into column C, listed price into column D, and in-stock status into column E — normalize prices to USD decimal format
Some URLs are for product category pages, not individual product listings
For each URL in column A, check if it resolves to a single product page or a category page — skip category pages and flag them in column D as "category-skip", then fetch price and stock from the individual product URLs and write results to columns B and C
Deduplicate, skip bad URLs, normalize prices, and pull all fields in one pass
Deduplicate column A, skip any rows where the URL is malformed or missing, use Bright Data Web Unlocker to fetch each remaining page, extract the product name into B, price into C normalized to USD, in-stock status into D, and seller name into E — flag any pages that error or return a CAPTCHA in column F
One prompt beats a five-step manual sequence every time.
Try It
Open any Google Sheet with competitor product URLs in column A and get the 7-day free trial of SheetXAI — ask it to scrape prices and stock status from each one using Bright Data Web Unlocker. You can also explore how to run bulk SERP lookups from your keyword list or get the full overview of Bright Data connection methods.
