Shopify Product Scraper - CSV & Excel Export avatar

Shopify Product Scraper - CSV & Excel Export

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Shopify Product Scraper - CSV & Excel Export

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

Anas Nadeem

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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?

DataIncluded fields
ProductsProduct ID, title, handle, HTML and plain-text description, vendor, product type, tags and product URL
Variants and SKUsVariant ID, SKU, barcode when exposed, selected options and source price strings
Pricing and availabilityPrice, compare-at price, price range and the public availability flag when returned
Product imagesGallery URLs, image IDs, order, alt text, dimensions and variant associations when exposed
Additional source fieldsShipping flag, tax flag, weight in grams, creation, update and publication timestamps
CoverageSource 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

  1. Add one or more public Shopify store, collection or product URLs.
  2. Set product limits and select your export files.
  3. Start the actor and review its status and coverage report.
  4. Download the CSV, Excel workbook, JSON or ZIP from the run's Storage tab. The Output tab also links to the coverage manifest.
  5. 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 patternRequested scope
https://store.example/The public store catalog
https://store.example/collections/rainwearThat collection
https://store.example/products/rain-jacketThat product and its returned variants
https://store.example/en-ca/collections/rainwearThat 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 outputWhat you receive
Default datasetProduct records with nested variants, tags, gallery details and source references
catalog.csvOne row per returned variant, with product fields, SKU, prices, tags and gallery URLs
catalog.xlsxProducts, Variants, Images and Coverage sheets; literal values stored as text
images.csvProduct-gallery associations and exposed image metadata
observed-catalog.jsonFull normalized product records
issues.csvSource, product, variant and export issues
manifest.jsonCapture 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.jsonSupplier-part counts, sizes, hashes and download keys
catalog-002.xlsx, etc.Additional workbook parts when required
catalog.zipThe 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.

InputAPI defaultMeaning
startUrlsRequired1–100 store, collection or product URLs; restored example: Silver Paw Dog
maxProductsPerTarget1000Per-URL product limit; 0 removes this user cap; restored example: 5
maxProducts10000Global unique-product limit, up to 25,000; restored example: 5
exportFormatsAll fourcsv, xlsx, json, zip; [] retains the dataset, manifest and issues
currencyOverrides[]Explicit currency assertions for an observed store and locale
saveSourceResponsesfalseRetain exact feed text and hashes for auditing; adds storage usage
maxConcurrency3Parallel store contexts, from 1–10
requestIntervalMs1000Minimum 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

StatusMeaning
completeRequested supported public sources were exhausted without a known coverage issue
partialA cap, count discrepancy, source failure, uncertain variant coverage or export issue limits the result
empty_sourceA supported source returned no products
failedNo 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.