Shopify Product Scraper - CSV & Excel Export
Pricing
from $1.00 / 1,000 results
Shopify Product Scraper - CSV & Excel Export
Scrape public Shopify stores, collections and product URLs into CSV, Excel, JSON and ZIP. Export variants, SKUs, prices, availability and image URLs, with coverage reports and supplier CSV parts. No Shopify login or Admin API key required.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Anas Nadeem
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Shopify Product Scraper exports public Shopify product catalogs to CSV, Excel, JSON and ZIP. Enter store, collection or product URLs to extract product variants, SKUs, prices, tags, availability flags and gallery image URLs. Prepare supplier data, compare catalogs and review product information without a Shopify login or Admin API key.
The export includes a four-sheet Excel workbook, a CSV row for each returned variant, and a coverage report showing what was captured and which fields need review.
What can this Shopify product scraper extract?
| Data | Included fields |
|---|---|
| Products | Product ID, title, handle, HTML and plain-text description, vendor, product type, tags and product URL |
| Variants and SKUs | Variant ID, SKU, barcode when exposed, selected options and source price strings |
| Pricing and availability | Price, compare-at price, price range and the public availability flag when returned |
| Product images | Gallery URLs, image IDs, order, alt text, dimensions and variant associations when exposed |
| Additional source fields | Shipping flag, tax flag, weight in grams, creation, update and publication timestamps |
| Coverage | Source URLs, observations, duplicate references, missing-field issues, limits and completion status |
IDs and leading-zero SKUs remain text. Prices retain their source values. Missing data remains missing. Availability flags do not represent inventory quantities.
The Apify dataset contains one product record with nested variants and images. Its Products, Variants and Images views let you inspect each part, including product tags.
How to export a Shopify catalog
- Add one or more public Shopify store, collection or product URLs.
- Set product limits and select your export files.
- Start the actor and review its status and coverage report.
- Download the CSV, Excel workbook, JSON or ZIP from the run's Storage tab. The Output tab also links to the coverage manifest.
- Review currencies and missing fields before preparing supplier data for another system.
The restored example exports five Silver Paw Dog products and all four file formats. It is also the input used for Apify's daily Store test after publication. A product-limited example intentionally reports partial coverage while the run can finish successfully.
{"startUrls": [{ "url": "https://silverpawdog.com/" }],"maxProductsPerTarget": 5,"maxProducts": 5,"exportFormats": ["csv", "xlsx", "json", "zip"]}
To request a larger catalog, raise the limits. Set maxProductsPerTarget to 0 to remove that user cap; the global product limit and resource bounds still apply.
Store, collection and product URLs
| URL pattern | Requested scope |
|---|---|
https://store.example/ | The public store catalog |
https://store.example/collections/rainwear | That collection |
https://store.example/products/rain-jacket | That product and its returned variants |
https://store.example/en-ca/collections/rainwear | That collection with the locale prefix retained |
Bare domains are accepted. Tracking parameters are ignored, and a product's variant parameter does not reduce the exported variant list. Unsupported routes and collection filters are rejected so the requested scope stays clear.
Overlapping store, collection and product inputs merge source references for the same product in the same observed store and locale. Bare-domain and www aliases also merge when supported by the store's canonical-domain metadata.
Shopify CSV, Excel and JSON output
| File or output | What you receive |
|---|---|
| Default dataset | Product records with nested variants, tags, gallery details and source references |
catalog.csv | One row per returned variant, with product fields, SKU, prices, tags and gallery URLs |
catalog.xlsx | Products, Variants, Images and Coverage sheets; literal values stored as text |
images.csv | Product-gallery associations and exposed image metadata |
observed-catalog.json | Full normalized product records |
issues.csv | Source, product, variant and export issues |
manifest.json | Capture status, counts, coverage and file links with integrity hashes |
workbench-part-001.csv, etc. | Supplier CSV parts within 500 products, 2,500 variants and 10 MB per file |
workbench-parts.json | Supplier-part counts, sizes, hashes and download keys |
catalog-002.xlsx, etc. | Additional workbook parts when required |
catalog.zip | The preparation files and an embedded manifest |
Supplier parts preserve whole product groups. A single product exceeding a part's bounds remains in the full export and receives an explicit issue.
ZIP includes CSV, XLSX and JSON. XLSX also retains JSON so full text remains available when a value exceeds Excel's cell limit. Image exports contain URLs and metadata; image binaries are not downloaded.
Example product JSON
This shortened example uses illustrative values. Actual records include further metadata and coverage fields.
{"productId": "9007199254740993","title": "Dog Rain Jacket","handle": "dog-rain-jacket","tags": ["Rainwear", "Dogs"],"currency": null,"currencyStatus": "unknown","variantCount": 1,"variants": [{"variantId": "9007199254740994","sku": "00042","price": "29.90","compareAtPrice": "39.90","available": true,"selectedOptions": [{ "name": "Size", "value": "M" }]}],"images": [{"url": "https://cdn.example/rain-jacket.jpg","position": "1","variantIds": []}]}
Prepare supplier catalog data
Use the variant CSV to map product groups, SKUs, options, prices and tags in your supplier preparation workflow. The bounded supplier parts support the Catalog Prep workbench's upload limits.
The workbook keeps product, variant, image and coverage information in separate sheets for review. Confirm the source price currency, resolve missing fields and duplicate SKUs, then review the product groups before creating destination drafts.
The exported supplier CSV is a source-data format. Creating a native Shopify import file requires a destination mapping and review. This actor does not write to Shopify.
Input settings
The small restored example uses five products. API calls that provide URLs but omit limits use the API defaults below.
| Input | API default | Meaning |
|---|---|---|
startUrls | Required | 1–100 store, collection or product URLs; restored example: Silver Paw Dog |
maxProductsPerTarget | 1000 | Per-URL product limit; 0 removes this user cap; restored example: 5 |
maxProducts | 10000 | Global unique-product limit, up to 25,000; restored example: 5 |
exportFormats | All four | csv, xlsx, json, zip; [] retains the dataset, manifest and issues |
currencyOverrides | [] | Explicit currency assertions for an observed store and locale |
saveSourceResponses | false | Retain exact feed text and hashes for auditing; adds storage usage |
maxConcurrency | 3 | Parallel store contexts, from 1–10 |
requestIntervalMs | 1000 | Minimum request interval per store context, from 500–60,000 ms |
Confirming the price currency
A public feed may omit currency. Without an assertion, currency stays null; a page or metadata currency hint remains separate.
If you have confirmed the source currency, provide an override:
{"currencyOverrides": [{"storeUrl": "https://supplier.example","localePrefix": "/en-ca","currency": "CAD"}]}
Overrides label the currency as operator_asserted. They do not convert prices or automatically verify the source currency.
Shopify scraper API and scheduled exports
Run the actor from Apify Console, through the API, or from an Apify task. The API requires your Apify token; no Shopify Admin API credentials are needed.
curl --request POST \"https://api.apify.com/v2/acts/whoareyouanas~shopify-website-product-catalogue/runs" \--header "Authorization: Bearer $APIFY_TOKEN" \--header "Content-Type: application/json" \--data '{"startUrls": [{"url": "https://silverpawdog.com/"}],"maxProductsPerTarget": 5,"maxProducts": 5,"exportFormats": ["csv", "xlsx", "json", "zip"]}'
The response supplies the run and storage IDs. Use the default dataset for product records and the key-value store for prepared files. Private output links require Apify authentication.
To export a catalog daily, save your input as an Apify task and attach a schedule. Each scheduled run creates a new capture. This actor produces catalog snapshots; comparing changes across runs requires your own comparison workflow.
Coverage and troubleshooting
| Status | Meaning |
|---|---|
complete | Requested supported public sources were exhausted without a known coverage issue |
partial | A cap, count discrepancy, source failure, uncertain variant coverage or export issue limits the result |
empty_source | A supported source returned no products |
failed | No requested target returned usable product data |
Read target-level status and stop reasons in the manifest. A successful run can have partial coverage, including the five-product example.
Cloud tests on 26 October 2026 captured 397 Allbirds products with 4,615 variants and 139 Silver Paw products with 469 variants. Silver Paw's root feed returned 139 products while its metadata and “all” collection reported 135; the export retained all root-feed products and disclosed the count discrepancy. Counts can change after a capture.
Limits include 25,000 unique products per run, 100 pages per target, 100,000 returned variants, 10 MB per decompressed response, bounded staging and export sizes, and a 15-minute capture deadline. Generated standard files have a 100 MB aggregate budget; ZIP has a separate 100 MB bound. Reaching a bound preserves completed data and reports the limitation.
Sources returning 250 or more variants for a product, or advertising more variants than they return, receive a coverage warning. Protected, custom or headless storefronts may be unsupported. Proxy routing is currently unavailable.
Pricing and result counting
Check the actor's Pricing tab for current charges. The published tariff charges per product in the default dataset and includes a platform startup fee. Variants and standard export files have no separate product fee.
The result unit is one unique product per observed store and locale context. Its returned variants, gallery URLs and standard export files belong to that product. Duplicate references within a capture do not create additional product records. New runs create new observations.
Frequently asked questions
Can I export Shopify products without an Admin API key?
Yes, when a supported public storefront feed exposes the data. The actor does not require a Shopify login or merchant Admin API access. Protected or incompatible storefronts can return an unsupported or blocked result.
Can I scrape Shopify variants, SKUs and tags?
Yes. Variants are nested under each product in JSON and expanded into rows in the variant CSV and Excel sheet. Product tags appear in JSON, CSV, the product workbook sheet and the Apify Products view. Empty or unexposed fields remain empty.
Does the Excel export preserve leading zeros and long IDs?
Yes. The prepared XLSX writes literal values as text, preserving long product IDs and leading-zero SKUs. Use the typed workbook for spreadsheet inspection. Exact CSV text can be interpreted differently by spreadsheet software.
Does the scraper return inventory quantities?
It preserves public availability flags when returned. Private stock quantities are not collected or inferred.
Is this a ready-to-import Shopify CSV?
The export is designed for catalog extraction and supplier data preparation. Native Shopify imports need destination-specific mapping and review. The actor does not import, publish or modify products in Shopify.
Why does a successful run say partial?
A product cap deliberately stops capture early. Other causes include conflicting source counts, failed targets, suspected source truncation and export limits. The manifest explains the reason and lists the records that were delivered.
Does the scraper download product images?
It exports returned gallery image URLs and metadata. It does not download image binaries or verify that every URL is reachable.
How do I report a problem?
Open an issue on this actor's Apify page with the run ID, requested scope and the manifest's stop reason. Include the source URL and missing field when relevant. Keep API tokens and other credentials private.