Shopify Store Product Scraper avatar

Shopify Store Product Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Shopify Store Product Scraper

Shopify Store Product Scraper

Extract the full product catalog of any Shopify store, titles, variants, prices, images, and tags, exported to JSON, CSV, or Google Sheets.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Andrew

Andrew

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Extract the full product catalog of any Shopify store — titles, variants, prices, images, and tags — no login required.

What you get

One row per product (or per variant), with:

  • Product: store domain, product ID, handle, title, vendor, product type, tags, created / updated / published dates, and product URL
  • Description: clean plain-text version of the product body (HTML stripped)
  • Pricing: minimum and maximum price across variants, and an isOnSale flag (any variant discounted below its compare-at price)
  • Variants (when One row per variant is on): variant ID, title, SKU, price, compare-at price, availability, position, and the size/color/style options
  • Media: featured image, image count, and every image URL

Export everything to JSON, CSV, Excel, or Google Sheets straight from the Apify console.

Use cases

  • Competitor price monitoring — snapshot a rival store's catalog and prices on a schedule
  • Dropshipping & product research — discover what's selling, at what price, and in which variants
  • Catalog migration — pull an entire catalog before moving platforms
  • Market & assortment analysis — compare vendors, product types, and price bands across stores
  • Deal & discount tracking — flag products on sale via the isOnSale field

How to use

  1. Enter one or more Shopify store URLs or domains (e.g. allbirds.com)
  2. Optionally set a Collection handle to scope the scrape to one collection (e.g. mens-shoes)
  3. Choose One row per variant (on) or one row per product (off)
  4. Set Max items (default 1000; set 0 for unlimited)
  5. Run the actor — results appear in the Dataset tab

Fetching more across runs

The actor auto-paginates within a single run up to your Max items. To pull a very large catalog across runs (or to resume after a timeout):

After the run finishes, open the Key-value store tab → copy the NEXT_PAGE_ID value → paste it into Page ID on your next run. If NEXT_PAGE_ID is null, you've fetched every product.

NEXT_PAGE_ID is a JSON map of store domain to the next page number, so you can resume several stores at once.

Output format

A variant row:

{
"storeDomain": "allbirds.com",
"productId": 6616124981328,
"handle": "trino-cozy-crew-heathered-onyx",
"title": "Trino® Cozy Crew - Heathered Onyx",
"vendor": "Allbirds",
"productType": "Socks",
"tags": ["collection:apr26", "shoprunner"],
"productUrl": "https://allbirds.com/products/trino-cozy-crew-heathered-onyx",
"priceMin": 24,
"priceMax": 24,
"isOnSale": false,
"variantCount": 3,
"featuredImage": "https://cdn.shopify.com/...",
"variantId": 39574630924368,
"variantTitle": "S (W5-7)",
"sku": "PCC1HONU301",
"price": 24,
"compareAtPrice": null,
"available": true,
"options": ["S (W5-7)"]
}

Input options

FieldTypeDescription
Shopify store URLs or domainsarrayDomains or full URLs — required
Collection handlestringRestrict to one collection — optional
One row per variantbooleanVariant rows vs. product rows — default true
Max itemsintegerCap across all stores; 0 = unlimited — default 1000
Page IDstringNEXT_PAGE_ID from a previous run to resume

Notes

  • Works on any Shopify store that exposes the public products.json endpoint (the default). Stores that have explicitly disabled it return no products and are skipped with a warning.
  • The product description is provided as clean plain text with HTML markup removed.