Shopify Product Scraper — Prices, Inventory & Variants avatar

Shopify Product Scraper — Prices, Inventory & Variants

Pricing

from $0.70 / 1,000 products

Go to Apify Store
Shopify Product Scraper — Prices, Inventory & Variants

Shopify Product Scraper — Prices, Inventory & Variants

Export public Shopify products, prices, variants, SKUs and availability. Optional published inventory, product panels and recommendations, charged when returned. JSON/CSV/Excel, market context and coverage reports. From $0.70/1,000 products. No Shopify API key.

Pricing

from $0.70 / 1,000 products

Rating

0.0

(0)

Developer

Myworkingmemory LLC

Myworkingmemory LLC

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

Turn public Shopify storefronts into structured product data for price monitoring, assortment research, supplier catalog analysis and AI shopping workflows. Extract an entire accessible catalog, a collection, or individual product URLs. Export JSON, CSV, Excel or XML, or call the Actor through the Apify API.

From $0.70 per 1,000 saved products with paid-plan discounts; $1 per 1,000 on the Free tier. Published variants are included in the product price. No subscription, Shopify API key, proxy purchase or AI model fee is required. Optional extras are off by default and charged only when returned. Standard run platform usage is included in event pricing.

Start in under a minute

  1. Enter one or more public Shopify store, collection or product URLs.
  2. Choose a maximum product count. Start with 10–100 products.
  3. Run the Actor and inspect the Products dataset. Download your preferred format.
  4. Check SUMMARY in the key-value store for coverage, limits, warnings and inaccessible stores.
{
"startUrls": [{ "url": "https://www.allbirds.com" }],
"maxProducts": 100
}

Run daily price and availability checks

Turn a successful test into repeat catalog snapshots for competitor price checks, assortment research or availability tracking. Start with a tested example, then use the store or collection you actually need.

  1. Save your tested input as an Apify task. Choose your product limit, keep unnecessary extras off, and set a maximum charge per run; for a base-only 100-product test, $0.11 covers the listed event charges on every tier.
  2. Schedule that task. In Apify Console, open Schedules → Create new, choose daily and your timezone, then add your saved task. Schedule setup guide.
  3. Keep each snapshot or send it to your spreadsheet. Preserve recordKey, scrapedAt and currency so successive observations can be compared; use the recipes below to move the data automatically.

At the Free-tier rate, 100 returned products once daily for 30 days cost $3.0015 in Actor events, including startup, with extras off; fewer returned products cost less. Post-run storage/data access and any external integration charges are additional. See Pricing for paid-plan discounts and extras.

Send each scheduled snapshot to Google Sheets

n8n: connect your Apify account, add On new Apify Event, select your saved task and the successful-run event, then add Get Dataset Items using that run's defaultDatasetId; send the returned items to a Google Sheets append-row action. Official n8n setup.

Zapier: connect Apify, select Finished task run for the saved task, filter for SUCCEEDED, then Fetch dataset items using the completed run's defaultDatasetId; loop through the returned items and create a Google Sheets row for each. This receives completed scheduled runs without Zapier's short synchronous-run timeout. Official Zapier setup.

For either recipe, map recordKey, scrapedAt, title, currency, priceMin, priceMax and available to sheet columns. Check SUMMARY for partial or limited coverage; an absent row in a capped or incomplete snapshot does not prove a product was removed. Compare the same market/currency and matching product keys across dates. Price-change comparisons and alerts are steps you add in your spreadsheet or automation; the Actor supplies the snapshots.

For other destinations, use run-finished webhooks or Make to connect your saved task to a database or another application.

Already using code or AI? Use the API example for your application or scheduler, or connect an AI client using the Actor's MCP configuration.

What you receive

Each product includes its ID, title, URL, handle, vendor, product type, description HTML, tags, options, images, timestamps and all variants exposed by the catalog endpoint. Variants include IDs, SKUs, prices, compare-at prices, availability, options, weight and barcodes when published. Missing fields remain null rather than invented.

Catalog prices are decimal strings in major currency units: "19.95" means 19.95 units. Direct-feed currency comes from storefront cart metadata and is labeled market.currencyVerified=false; context-aware GraphQL money includes its currency and is marked verified. Missing currency remains null. No user cart is modified. Recommendation prices retain their original Shopify Ajax values and priceUnit; priceDecimal converts Shopify hundredths to decimal major units, including JPY/KRW. Existing price fields retain their types. Locale paths such as /en-us/ are supported. Currency query overrides are not supported. Set countryCode for explicit market prices; this uses the tokenless Storefront endpoint. Markets can change both prices and assortment. Purchasability may include backorders and does not imply physical inventory.

Pricing

EventPriceWhen charged
Product — Free$0.001One unique saved product
Product — Bronze / Silver$0.0009 / $0.0008One unique saved product
Product — Gold, Platinum, Diamond$0.0007One unique saved product
Published inventory$0.001One saved product with at least one explicit numeric count, including zero or signed merchant counts
Information panels$0.001One saved product with nonempty supported information panels
Recommended product$0.001Each related product returned inside a parent record
Run start$0.00005Once per run within the supported memory range

A base-only 1,000-product export costs $1.00005 on Free or $0.70005 on Gold. On Free, 100 products plus 20 returned inventory enrichments costs $0.12005. Three recommendations on each of 100 products add $0.30. The Pricing tab is authoritative for effective prices and any scheduled change. Missing optional information, duplicate base products and error summaries have no corresponding result event charge. Apify's standard post-run storage and data-access charges may apply separately.

Set Apify's maximum charge per run to bound your spend. Set maxProducts to cap base products across all URLs. Optional events count toward the same monetary budget. Budget is reserved before optional requests. Unaffordable extras are omitted and labeled; cheaper base products can continue. The Actor stops when another base product is unaffordable; saved results remain accessible. A recommendation is billed per parent record, even if another product recommends the same item.

Input reference

FieldDefaultMeaning
startUrlsRequired1–50 HTTPS storefront, collection or product URLs; strings or { "url": "…" } objects
maxProducts100Global new-product cap, 0–100,000; 0 removes this output cap only
queryEmptyCase-insensitive substring of title, vendor, type or tags; only matching products are saved
includeInventoryfalseRead explicit numeric counts from public product JSON
includeInfoPanelsfalseRead labeled product-page details/accordions and supported accessible panels
maxRecommendations0Related recommendations per product, 0–10
maxPagesPerStore400Maximum pages per input URL, 1–1,000; up to 250 product IDs per page; GraphQL details are fetched in batches of 10
maxProductsPerStore0Optional product cap per input URL; 0 disables
maxUnproductivePages10Stop after consecutive catalog pages without keyword matches
maxEnrichmentRequests1,000Additional detail/inventory/panel/recommendation request cap
maxRequests / maxRunSeconds2,000 / 900Global request and extraction-time caps; SUMMARY explains limits
includeStorefrontDetailsfalseAdd public selling plans, detail availability and context-aware variant data where exposed; no extra event fee
includeCollectionsfalseInclude the collection identity for collection inputs
countryCodeUnsetExplicit market country, for example DK or DE
datasetIdUnsetAlso append results to an existing selected dataset, without a second product charge
parentRunIdUnsetResume a finished compatible run; provide its read-only parentDatasetId and parentStoreId too
proxyRecoverynonePaid recovery is disabled in this release; the acceptance test did not establish profitable additional coverage

Filtering scans the listed catalog; it is not a search for new stores. Tokenless recovery cannot read tags, so filtered recovery reports partial query coverage. High page limits with narrow filters can take longer. Use collection URLs to narrow large catalogs efficiently.

Useful workflows

Compare brands: supply multiple storefronts. Duplicate product IDs within the same storefront and locale are saved once. Failed stores are reported separately, and successful stores retain their results. Different domains/locales remain distinct because prices and assortments may differ.

Enrich a product: enable only the extras you need:

{
"startUrls": [{ "url": "https://www.allbirds.com" }],
"maxProducts": 10,
"includeInventory": true,
"includeInfoPanels": true,
"maxRecommendations": 3
}

API example

Use your own Apify token in the Authorization header. No Shopify merchant token is needed.

curl --request POST \
'https://api.apify.com/v2/acts/myworkingmemory~shopify-store-extractor/run-sync-get-dataset-items?format=json&timeout=120' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{"startUrls":[{"url":"https://www.allbirds.com"}],"maxProducts":10}'

For large catalogs, start asynchronously with POST /v2/acts/myworkingmemory~shopify-store-extractor/runs, poll the returned run ID, then download /v2/datasets/{defaultDatasetId}/items. Set maxTotalChargeUsd on the run request for your spending limit. Read /v2/key-value-stores/{defaultKeyValueStoreId}/records/SUMMARY for coverage.

Coverage and reliability

The Actor starts with direct HTTP and bounded retries. If a public JSON endpoint is unavailable, it tries tokenless Storefront GraphQL before optional paid recovery. It validates public HTTPS redirects, continues beyond short and overlapping pages, and detects repeated pages. No browser is required. Paid proxy recovery remains disabled: neither tested route recovered additional products from the blocked acceptance store. The implementation retains a catalog-only $0.04 recovery ceiling and byte limits for future validated routes.

Not every Shopify store publishes /products.json. Password-protected stores, bot protection, headless storefronts, disabled public endpoints and restricted products may be inaccessible. Public access is required; private or password-protected products are not retrieved. If every store fails, the run fails with a diagnostic summary; mixed results are explicitly marked partial in SUMMARY. A successful run may intentionally stop at an output or operating limit; SUMMARY.status=limited and the per-store details explain this. A successfully read empty catalog or zero keyword matches can legitimately produce zero rows.

Shopify has a 25,000-object pagination ceiling and Ajax product details can stop at 250 variants. The Actor attempts bounded GraphQL variant pagination and creation-date partitions for whole-store traversal. Unsplittable partitions, limits and unavailable fields remain explicit. source_exhausted means the selected public source was traversed, not that private products or all markets were captured. High-variant recovery is not advertised as universally supported.

Inventory is only the count explicitly published by the merchant; stock availability alone never becomes a quantity. No cart-add probes or checkout activity occur. Information-panel support depends on theme markup; unsupported JavaScript-only content is not billed. Recommendations depend on Shopify's related-product endpoint and may be empty. Product data reflects the storefront response at the extraction time, not a guarantee of checkout price, complete warehouse inventory or future availability.

Output and recovery

The Products view shows price ranges, purchasability and thumbnails; Variants expands SKUs and options. For a flat CSV through the dataset API, request format=csv&unwind=variants&fields=recordKey,url,currency,variants,id,title,sku,priceDecimal,available&omit=variants. Unwinding promotes variant fields to the row: id and title then identify the variant, while recordKey and url identify its product. Views help inspection; export parameters control downloadable columns.

Every row includes recordKey, source endpoint, market context and observation time. A compact example from an actual Allbirds test is shown below; values change over time:

{
"id": "7340901859408",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"currency": "USD",
"priceMin": "25.0",
"priceMax": "25.0",
"available": true,
"variantCount": 7,
"variantCoverage": "source_exhausted"
}

Same-run restarts reconcile the output and charge journal before continuing. If a write or charge cannot be resolved safely, the run fails with a retained journal rather than risk duplicate billing. Inspect FAILURE and SUMMARY. For a finished run, copy SUMMARY.resume into the next input along with the same targets, query, extras and market. Select the parent dataset and checkpoint store to grant read-only access. Increase output limits if needed. The child emits new rows, skips previously saved keys, and never retries parent charges. It does not automatically combine the two default datasets; use datasetId when a shared append destination is wanted. Append failures preserve the default dataset and a recoverable journal.

Support

Open an issue on this Actor with the public storefront URL, your run ID and the expected field. Do not include credentials or private customer data. Maintained by Myworkingmemory LLC. This is an independent tool, not an official Shopify product.

Connect through MCP

Add this server URL to a compatible MCP client such as Claude or Cursor, then authorize your Apify account. It preloads this Actor as a tool:

Apify MCP — Shopify Product Scraper

https://mcp.apify.com/?tools=myworkingmemory/shopify-store-extractor

Connecting does not start a run. Ask your agent to review the input and pricing before running; the same prices, input requirements and limits apply. See the Apify MCP setup guide.

More tools from Myworkingmemory

Each Actor has its own inputs and pricing; follow its README before running. Browse all our Actors.