Shopify Store Product Scraper
Pricing
from $5.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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
isOnSaleflag (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
isOnSalefield
How to use
- Enter one or more Shopify store URLs or domains (e.g.
allbirds.com) - Optionally set a Collection handle to scope the scrape to one collection (e.g.
mens-shoes) - Choose One row per variant (on) or one row per product (off)
- Set Max items (default 1000; set
0for unlimited) - 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_IDvalue → paste it into Page ID on your next run. IfNEXT_PAGE_IDisnull, 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
| Field | Type | Description |
|---|---|---|
| Shopify store URLs or domains | array | Domains or full URLs — required |
| Collection handle | string | Restrict to one collection — optional |
| One row per variant | boolean | Variant rows vs. product rows — default true |
| Max items | integer | Cap across all stores; 0 = unlimited — default 1000 |
| Page ID | string | NEXT_PAGE_ID from a previous run to resume |
Notes
- Works on any Shopify store that exposes the public
products.jsonendpoint (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.