If you sell online, some of your competitors, suppliers and wholesale partners almost certainly run on Shopify. Their product pages hold the numbers you care about: what they sell, what they charge, what is on sale and what is sold out. Shopify does not give you an export of someone else's store, so most people copy rows by hand or give up.
This guide shows two ways to get a Shopify store's catalog into Google Sheets: a quick technical check that works on many stores, and a no-code recipe with Lection, an AI web scraper for Chrome, that works on what the storefront shows and can rerun on a schedule. It ends with formulas to spot new products and price changes between runs.
The short answer
- Open the store's "all products" page (often
/collections/all) or the collection you care about. - In the Lection side panel, ask for name, price, sale price, availability and product link for each product, and collect every page.
- Download once to check the columns, then save the scrape and schedule it daily with Google Sheets as the destination.
What you can collect from a Shopify storefront
A store's public pages show more than you might expect. On a typical collection page and product page you can read:
| Field | Where it appears | Notes |
|---|---|---|
| Product name | Collection grid and product page | Always present |
| Price | Collection grid and product page | The current selling price |
| Compare-at (original) price | Shown crossed out when an item is on sale | Only present for discounted items |
| Sold out / available | Badge on the grid, button state on the product page | Shows available or not, not the stock count |
| Product link | Every grid item | Use it as the unique key for each row |
| Variants (size, color) | Product page | Needs detail pages, see below |
| Vendor, product type, tags | Sometimes on the product page | Depends on the theme |
What you will not get: stock quantities, sales numbers, costs or anything behind a customer login. A storefront shows prices and whether an item can be bought, not how many are left or how many sold.
Quick check: does the store expose products.json?
Many Shopify stores answer a public JSON address that lists their products. Add /products.json to the store's domain, for example https://example-store.com/products.json. If the store allows it, your browser shows a block of text with each product's title, vendor, product type, tags and variants, and each variant carries a price, a compare-at price, a SKU and an "available" true/false flag. You can add ?limit=250&page=2 to step through larger catalogs, or paste the store into the free Shopify Store Products Exporter, which pages through the feed for you and gives you a CSV or Excel file with one row per variant.
This is the fastest route if you are comfortable turning JSON into rows. Two honest caveats:
- Not every store allows it. When we checked two large Shopify brands on November 8, 2026, one returned its catalog and the other returned "403 Forbidden". Stores can block the address, and some put the storefront behind a different front end.
- It is raw data. One product with ten sizes becomes ten variant entries nested inside one product, prices come as text, and you still need something to flatten it into a sheet and rerun it.
If it works for your target store and you only need it once, that may be all you need. If it returns an error, or you want a clean table on a schedule without writing a script, use the recipe below.
The no-code recipe with Lection
Before you start
- Desktop Chrome with the free Lection extension.
- The store's collection page you want, with filters already applied. "All products" is usually
/collections/all; a narrower collection (for example "Women's running shoes") is cheaper to collect and easier to compare. - A Google account if you want the results in Sheets.
Step 1: Get the first page right
- Open the collection page in Chrome.
- Open the Lection side panel.
- Describe the fields in plain English, for example: "For each product: name, current price, original price if it is on sale, whether it is sold out, and the product link." You can also click the elements you want on the page.
- Check the preview against the page. Look at three kinds of rows on purpose: a full-price item, a sale item and a sold-out item. Those are where a column is most likely to come out wrong.
If something is off, correct it in plain words ("leave original price empty when there is no sale", "use 'sold out' or 'available' in the stock column") and preview again. Keep the product link as a column. You need it to remove duplicates and to compare runs.
Step 2: Collect every page of the collection
Shopify themes split collections in different ways: numbered pages, a "Load more" button or infinite scroll. Ask Lection to collect every page and it picks the method from what the page shows. If you are not sure which kind you are dealing with, the guide to scraping multiple pages without code walks through each one.
Scroll the last page of results yourself before trusting the total. If the collection says 140 products and your table has 48, the page limit or the "Load more" step stopped early.
Step 3: Add detail pages only if you need variants
The collection grid usually shows one price per product, often the lowest variant price ("From $48"). If you need each size or color with its own price and availability, ask Lection to open each product link and add the variant fields from the product page.
Detail pages are worth it for a focused collection of a few dozen products. For a store with thousands of products, start with the grid only, then add detail pages for the subset you actually track. Every product page counts as a page, so it multiplies the work.
Step 4: Download once and check
Download the result as CSV or Excel and read it before you automate anything. Sort by price to catch a column that picked up the wrong number, filter the stock column for blanks, and spot-check five product links against the store.
Keep it fresh: a daily sheet
A one-time export answers "what do they sell today". The useful questions, like "what did they add this week" and "what did they put on sale", need the same scrape on a timer.
- Save the scrape in Lection.
- Open Scheduled Scrapes, create a schedule for it and pick Daily (or Weekly for slow-moving catalogs).
- Under Delivery, choose Sheets, connect your Google account and pick a spreadsheet.
- Choose "new tab on each run" if you want to compare runs, or "append to one tab" if you want one long history.
Scheduled runs happen in the cloud, so your computer can be off. The full setup, including how the Sheets options behave, is on the Google Sheets integration page and in the guide to scraping a website to Google Sheets on a schedule.
Find new products and price changes
With a new tab per run, two formulas cover most of what store watchers want. Say yesterday's run is on a tab called Run1 and today's on Run2, with the product name in column A, price in column B and the product link in column E.
New products (links in today's run that were not in yesterday's):
=FILTER(Run2!A2:E, ISNA(MATCH(Run2!E2:E, Run1!E2:E, 0)))
Swap the tabs to list products that disappeared, which often means discontinued or fully sold out and hidden.
Price changes (add this in column F of Run2, then filter for non-empty cells):
=IFERROR(IF(XLOOKUP(E2, Run1!E:E, Run1!B:B) <> B2, XLOOKUP(E2, Run1!E:E, Run1!B:B), ""), "")
It shows yesterday's price next to any product whose price moved. Match the tab names to the ones Lection created in your sheet, because the formulas need them exactly. Google's help page for FILTER covers the syntax if you want to adapt it.
For a fuller price-tracking setup across several stores, see how to track competitor prices in Google Sheets automatically.
Who uses this
- Brands watching competitors. New launches, discount timing and which items sell out first, without checking a dozen stores by hand.
- Retailers and resellers checking suppliers. A wholesale partner's public catalog in a sheet you can filter, with a daily note of what changed. The supplier catalog guide covers catalogs that are not on Shopify.
- Agencies and analysts. A weekly snapshot of a client's competitive set for a report, built from the stores' own pages.
Limits to know
- Plan. Sheets delivery is on Standard, Professional and the 30-day Standard trial. The free plan emails results.
- Pages per run. A single run covers up to 10 pages on the free plan, 50 on Standard and 200 on Professional. Large catalogs with detail pages can hit this, so split them by collection.
- Credits. Cloud runs bill by page, not by row: 1 credit covers 20 cloud pages.
- Logins. Scheduled runs work best on pages that do not need you to be logged in. Wholesale prices behind a customer account are a manual-run job.
- Stores change. A theme update can move the price or rename a badge. If a run comes back empty or wrong, reopen the scrape, adjust it and save again.
- Be reasonable. Read the store's terms and robots rules, collect only public product data, and keep the schedule to daily or weekly. Prices rarely change hourly.
Try it
Install the free extension, scrape one collection you actually care about and download it once to check the columns. When you want it refreshed into a sheet every day, start the 30-day Standard trial. It is free for 30 days, then $29 per month, a card is required, and it is for first-time subscribers only.
FAQ
Can I scrape any Shopify store? You can collect what the store's public pages show in your browser. Some stores block automated access or hide prices behind a login. Check the terms of the store first.
Is there a free way to export a Shopify store's products? Many stores answer /products.json with their catalog as JSON. It is free but raw, and not every store allows it; the free Shopify Store Products Exporter turns it into a spreadsheet. Lection's free plan also lets you scrape and download a collection.
Can I get stock quantities? No. Storefronts show whether an item is available or sold out, not how many are left.
How do I get each size and color? Add detail pages so Lection opens each product page and reads the variants. Expect more pages per run.
Does my computer need to be on for daily runs? No. Scheduled runs happen in the cloud. You only need Chrome to build and save the scrape the first time.