Shopify Product Price & Catalog Scraper
Pricing
from $2.50 / 1,000 results
Shopify Product Price & Catalog Scraper
Product and variant data from any Shopify store via the public /products.json endpoint. HTTP only, no browser, no proxy. Returns one row per variant (SKU) with its own price, compare-at price and availability — not one row per product.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
ABDULWAHAB NASER RASHED ALQARAWI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Shopify Catalog & Price Scraper
Product and price data from any Shopify store, straight from the store's own public /products.json endpoint.
No browser. No proxy. No API key. Just clean rows.
What you get
One row per variant (SKU) — because a size-8 shoe and a size-11 shoe have different prices and different stock, and price monitoring that collapses them is useless.
| Field | Example |
|---|---|
store | allbirds.com |
title | Men's Strider Explore |
vendor | Allbirds |
variantTitle | 8 |
sku | A11768M080 |
price | 130.0 |
compareAtPrice | 165.0 |
onSale | true |
discountPct | 21.21 |
available | false |
productUrl | https://allbirds.com/products/... |
Plus productId, handle, productType, tags, publishedAt, updatedAt, imageUrl, optionNames, variantCount, variantId, grams, scrapedAt.
24 fields. Every one always present — missing data comes back as null, never dropped. Pipe it straight into a database without defensive checks.
Use it for
- Competitor price monitoring — schedule it daily, diff the
pricecolumn - Sale and discount tracking — filter
onSale = true, sort bydiscountPct - Stock-out alerts — watch
availableflip tofalse - Catalog research — brands, product types, tags across a whole market
- Feeding an LLM or agent — the output is already flat, typed and clean
Input
{"storeDomains": ["allbirds.com", "kith.com", "deathwishcoffee.com"],"maxProductsPerStore": 250,"rowsPerVariant": true,"respectRobots": true,"requestDelayMs": 400}
| Option | Default | What it does |
|---|---|---|
storeDomains | — | Any Shopify store, with or without https:// |
maxProductsPerStore | 60 | Stop after N products per store |
rowsPerVariant | true | Off = one row per product instead of per SKU |
respectRobots | true | Skips any store whose robots.txt disallows the endpoint |
requestDelayMs | 400 | Politeness delay. Lower it and stores start rate-limiting you |
Speed and cost
A real run, four stores, 60 products each:
1,461 rows · 8 requests · 34 seconds
Because the endpoint returns 250 products in one request and each product carries its variants, one request routinely yields thousands of rows. That is why this Actor is cheap to run and fast to finish.
Honest notes
Currency is not returned. Shopify's public endpoint does not carry a currency code, so currency is always null. Guessing it would be worse than leaving it empty.
Not every store answers. Some sit behind a WAF and return 403, some rate-limit with 429. The Actor records both in its run report instead of failing silently — check blocked and rateLimited, and reachRate for the share of stores that responded.
Every run publishes a report to the key-value store under RUN_REPORT: requests, rows, megabytes, reach rate, and the estimated cost per 1,000 rows.
Public data only. The Actor reads robots.txt before it reads anything else, and skips stores that disallow the endpoint. Reviewing a target store's own terms of use is still your call.
Questions or a store that misbehaves?
Open an issue on the Actor page. Include the store domain — most problems are a single store's WAF, and they are usually quick to diagnose.