Shopify Store Scraper: Products, Variants & Prices
Pricing
$1.00 / 1,000 product extracteds
Shopify Store Scraper: Products, Variants & Prices
Paste any Shopify store URL and get every product with variants, SKUs, prices, compare-at prices, discounts, stock status, tags and images. Uses the store's public products.json with an HTML fallback. No login, no API key. By Physea Labs · Liminal. Launch Sale: 90% OFF for the first week!
Pricing
$1.00 / 1,000 product extracteds
Rating
0.0
(0)
Developer
jay casey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Launch Sale: 90% OFF for the first week! Every event below is billed at 10% of list price during launch week.
Paste a Shopify store URL and get its full public catalog: every product, every variant, SKU, price, compare-at price, discount, stock flag, tags and images. Built for competitor research, catalog monitoring and product feeds.
Quick start
Press Start. The sample pulls 20 products from Death Wish Coffee's public store in a few seconds. Swap in any Shopify store (or a /collections/... URL) and raise the limit.
What you get
- One row per product: title, vendor, type, tags, handle and product URL
- Price range (
price_min/price_max),compare_at_price_max,on_saleanddiscount_pct - Every variant with its own SKU, price, compare-at price, options and
availableflag - Store currency (from the store's public
meta.json), images and a clean text description - A status row per store, so a blocked or non-Shopify store is never silent
Good for
- Track a competitor's assortment, new launches and markdowns
- Build product feeds for ads or comparison sites from a supplier's store
- Find every SKU that is on sale right now across a list of stores
- Research niches: product types, price points and vendors across stores
Pricing
- $0.001 per product delivered (about $1 per 1,000 products, variants included)
- Stores that return nothing are free
- Launch Sale: 90% OFF for the first week!
You pay only for results that come back. Set a max cost per run in the run options and the run stops cleanly when it hits it. Normal Apify platform usage applies. No API keys or logins needed.
Input
| Field | What it does |
|---|---|
storeUrls | One store per line: https://www.deathwishcoffee.com. Add /collections/ |
maxProductsPerStore | Stop after this many products per store. 250 per page, up to 10,000. |
includeVariants | Every size/colour with its own SKU, price and stock flag. |
htmlFallback | If products.json is disabled, crawl product pages and read their structured data instead. |
proxyConfiguration | Optional. Leave off for small runs. Turn on Apify Proxy if a site rate-limits or blocks you. |
Output
Rows go to the default dataset (see the Products view). A RUN_SUMMARY.json record in the key-value
store has totals, what was charged and any proxy notes.
Limits
- Public storefront data only: no orders, inventory counts, or anything behind a login.
- Some stores disable
products.json; the HTML fallback then reads each product page's structured data (fewer fields, no variants). - Shopify rate-limits busy IPs (HTTP 429). Turn on Apify Proxy for big catalogs.
Run it from code
Same input as the Console sample:
{"storeUrls": ["https://www.deathwishcoffee.com"],"maxProductsPerStore": 20}
curl -X POST "https://api.apify.com/v2/acts/physealabs~shopify-product-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d @input.json
from apify_client import ApifyClientitems = ApifyClient("YOUR_APIFY_TOKEN").actor("physealabs/shopify-product-scraper").call(run_input={"storeUrls": ["https://www.deathwishcoffee.com"], "maxProductsPerStore": 20})
It also works from Zapier, Make, n8n and Apify schedules.
Built by Physea Labs · Liminal, the team behind Liminal's grounded research and decision tools. Same no-nonsense extraction we use in-house, now on the Apify Store. Questions or a field you need? Open an issue on the actor page.