Shopify Product Price & Catalog Scraper avatar

Shopify Product Price & Catalog Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Shopify Product Price & Catalog Scraper

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

ABDULWAHAB NASER RASHED ALQARAWI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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.

FieldExample
storeallbirds.com
titleMen's Strider Explore
vendorAllbirds
variantTitle8
skuA11768M080
price130.0
compareAtPrice165.0
onSaletrue
discountPct21.21
availablefalse
productUrlhttps://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 price column
  • Sale and discount tracking — filter onSale = true, sort by discountPct
  • Stock-out alerts — watch available flip to false
  • 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
}
OptionDefaultWhat it does
storeDomainsAny Shopify store, with or without https://
maxProductsPerStore60Stop after N products per store
rowsPerVarianttrueOff = one row per product instead of per SKU
respectRobotstrueSkips any store whose robots.txt disallows the endpoint
requestDelayMs400Politeness 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.