Back to Blog
ShopifyEcommerceApify

Export a Public Shopify Catalog to CSV Without Losing Variants

Keep products, variants, SKUs, image references, and coverage separate when preparing a public Shopify catalog for review.

Anas Nadeem
4 min read

A supplier has 200 products. You export the catalog, open the spreadsheet, and discover that sizes, colors, and SKUs were flattened into a single row per product. The file looks tidy until you try to use it.

For catalog work, the unit of analysis matters. A product groups the offer; its variants describe the options you may actually need to map.

My Shopify Product Scraper exports public store, collection, and product data with nested variants and dedicated preparation files. Here is how to review the result before using it elsewhere.

For an interactive browser workflow, Catalog Prep is now available in Chrome. Choose it when you are already on a storefront and want a local file. This guide covers the separate Apify actor; compare the two workflows before choosing limits or billing.

Choose the scope you actually need

Use a store URL for a broader catalog, a collection URL for a category, or a product URL for one product's returned variants. Begin with a collection if your task is limited to a particular range.

This example requests five products from a public store and the available export formats:

{
  "startUrls": [{ "url": "https://silverpawdog.com/" }],
  "maxProductsPerTarget": 5,
  "maxProducts": 5,
  "exportFormats": ["csv", "xlsx", "json", "zip"]
}

Treat this as an input example, not a promise about today's store contents. A deliberately capped run can finish successfully while reporting partial catalog coverage.

Understand products versus variants

The normalized dataset stores products with nested variants and images. The catalog CSV uses one row per returned variant. The Excel workbook separates Products, Variants, Images, and Coverage.

In an illustrative clothing catalog, one jacket with three sizes can produce one product record and three variant rows. Count each level separately when checking your output.

LevelUseful identityWhat it helps you review
ProductSource product ID and URLTitle, description, vendor, tags
VariantVariant ID and available SKUOptions, displayed price, availability
Image associationProduct/image referencesGallery order and variant links where exposed
CaptureSource URL and coverage recordLimits, missing fields, completion

Retain source identifiers as text. Leading-zero SKUs and long numeric IDs are easy to damage when spreadsheet software guesses their types.

Check currency before comparing prices

A public source can return a price without a confirmed currency. Preserve the original value and inspect the currency status. A decimal number alone is insufficient to compare two stores.

If you have independently confirmed the currency, the actor supports an operator assertion for the store and locale. That labels the currency; it does not convert the amount or verify your assertion.

For analysis, keep source price, currency, locale, and observation time together. Convert prices only in a separate calculation with an explicit exchange-rate source and date.

Read availability conservatively

An available flag is an observation about a public purchasing option. It does not reveal inventory quantity, sales, revenue, or sell-through.

If a variant changes from available to unavailable between two captures, record the change. Investigate before interpreting it as a sale: catalog edits, source behavior, and merchandising decisions can also change availability.

The same discipline applies to an absent SKU. Missing source data is a field to review, not a value to invent.

Inspect the coverage files

Review the manifest, issues file, and Coverage sheet alongside the catalog. Check whether limits were reached, which sources were processed, and which fields need attention.

An export with five requested products is a useful test. It is not evidence that a store has only five products. Overlapping store and collection requests can also point to the same underlying product.

Preserve the full JSON when you need relationships or descriptions that a flat working sheet cannot express cleanly. Image exports contain links and metadata, not downloaded image binaries.

Prepare a destination mapping

Before moving supplier data into another system, map product groups, variant options, source SKUs, prices, currencies, and image associations explicitly. Resolve duplicate or absent SKUs with the supplier.

The exported supplier CSV is a source-data format. A native Shopify import requires a destination mapping and review; this actor does not create or update products in your store.

For permitted catalog preparation, preserve source provenance and confirm your right to reuse descriptions or images. A public URL supplies access to an observation, not ownership of the asset.

Start with five products in the Shopify Product Scraper. Reconcile the product count, variant count, and coverage report before expanding to a larger catalog.

For a local collection export, start free with Catalog Prep. For a supplied-URL or API workflow, use the actor above. Check the catalog acceptance worksheet before moving either output into another system.