Shopify Store Products Scraper avatar

Shopify Store Products Scraper

Pricing

$1.20 / 1,000 products

Go to Apify Store
Shopify Store Products Scraper

Shopify Store Products Scraper

Pull every product from any Shopify store into clean rows: title, prices, variants, availability, images, tags and links.

Pricing

$1.20 / 1,000 products

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Paste one or more Shopify store domains and get back every product in each catalog as clean rows: title, prices, variants, availability, images, tags and links. Built for anyone who needs a competitor's or supplier's assortment as data: price-tracking teams, category managers, dropshippers mapping catalogs, and analysts watching launches and discounts.

What you can do with it

  • Export a whole catalog — paste allbirds.com and get every product with its variants, prices and images in one run.
  • Track prices and discounts — every variant carries its price plus the compare-at price, so discount depth falls out directly.
  • Map assortments — vendor, product type, tags and options show how a store structures its range.
  • Feed a product database — every row carries a stable product ID plus a direct product link, ready to join with your other data.
  • Monitor stores on a schedule — re-run the same domains daily or weekly and diff each fresh dataset against the last.

What you get

One row per product. Abridged sample of a single record:

{
"storeDomain": "allbirds.com",
"productId": "7292464955472",
"handle": "mens-cruiser-shadow-blue-natural-white-sole",
"url": "https://allbirds.com/products/mens-cruiser-shadow-blue-natural-white-sole",
"title": "Men's Cruiser - Shadow Blue",
"vendor": "Allbirds",
"productType": "Shoes",
"tags": ["EC STOCK"],
"currency": "USD",
"price": { "amount": 105, "currency": "USD" },
"compareAtPrice": null,
"minPrice": { "amount": 105, "currency": "USD" },
"maxPrice": { "amount": 110, "currency": "USD" },
"variantsCount": 12,
"availableCount": 10,
"options": [{ "name": "Size", "values": ["8", "8.5", "9"] }],
"imageUrl": "https://cdn.shopify.com/s/files/1/0034/example.webp?v=1784902793",
"publishedAt": "2026-07-08T11:32:23-07:00"
}

Input reference

SettingTypeDefaultWhat it does
Store domainslist of textShopify store domains, e.g. allbirds.com. One batch of product rows is collected per store. Required.
Max productswhole number500Maximum products to collect per store. The actor reads the catalog in order until this number is reached or the catalog runs out. Maximum 25,000.
CurrencytextemptyThree-letter currency code for prices, e.g. USD. Leave empty to use each store's own currency.

Output fields

FieldTypeDescription
storeDomaintextStore the product was read from.
productIdtextStable product ID.
handletextURL slug of the product page.
urltextDirect link to the product page.
titletextProduct name.
vendortextBrand or supplier when shown.
productTypetextStore's own product grouping when shown.
tagslist of textMerchandising tags when shown.
statustextPublication status when shown.
publishedAttextWhen the product went live on the storefront.
createdAttextWhen the product record was created.
updatedAttextLast edit timestamp.
currencytextCurrency code all price pairs in the row use.
priceprice pairLowest variant price as { amount, currency }.
compareAtPriceprice pairStrike-through price when on sale, otherwise empty.
minPriceprice pairLowest variant price.
maxPriceprice pairHighest variant price.
variantsCountnumberHow many variants the product has.
availableCountnumberHow many variants are currently in stock.
optionslistVariant axes such as Size and Color with their values.
descriptiontextPlain-text product description when shown.
imageUrltextMain product image.
imageUrlslist of textEvery product image.
variantslistPer-variant rows: ID, title, SKU, price pair, stock flag, options, weight and image.

Pricing

You pay per product row, with no monthly minimum.

What you are charged forPrice
Product row — one row added to your dataset$1.2 per 1,000

Limits & what this actor cannot do

  • Each store walk covers up to 25,000 products; stores larger than that are covered collection by collection with the collection-products actor, which reads each collection separately.
  • Records are a snapshot at the moment of collection; prices, discounts and stock flags keep changing afterwards.
  • Fields a store does not show come back empty rather than guessed — a product with no listed vendor has no vendor in its row.
  • Stock is reported as a simple in/out flag per variant; exact quantities are not published by stores.
  • Non-store domains and password-protected stores are skipped, not charged.
  • Speed depends on the size of the job and on each store's own response times; no fixed throughput is promised.
  • The source site's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

FAQ

Do I need a store account? No. The actor reads only what stores show publicly in their catalogs.

Does it need my login or password? No. There is nothing to connect and nothing to configure — paste store domains and press start.

Which prices do I get? Prices in each store's own currency by default. Pass a currency code to ask for prices in another currency the store supports; stores that do not support it return their own currency.

How many products can I collect per run? Up to 25,000 per store in one run.

Can I schedule it? Yes. Schedule it hourly, daily or weekly from the Apify console, and each run writes a fresh dataset you can compare against the last.

Is the data complete? It is complete for everything the store shows openly in its catalog. Where a store omits a field, the actor leaves it empty rather than guessing.