Shopify Catalog & Variant Export - CSV + JSON avatar

Shopify Catalog & Variant Export - CSV + JSON

Pricing

$1.00 / 1,000 verified live variant rows

Go to Apify Store
Shopify Catalog & Variant Export - CSV + JSON

Shopify Catalog & Variant Export - CSV + JSON

Export permitted Shopify product feeds as one row per variant, with SKUs, options, decimal-string prices, supplied currency and a coverage report. CSV + JSON; safe canonical redirects; no login or proxy.

Pricing

$1.00 / 1,000 verified live variant rows

Rating

0.0

(0)

Developer

Aman sood

Aman sood

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Export a merchant-authorized Shopify store or collection into variant-level rows for spreadsheets and data pipelines. Works across merchandise categories, not just apparel. This Actor reads anonymous public product feeds; it does not use the Shopify Admin API.

Each row includes product and variant IDs, product URL, title, vendor, product type, SKU, variant title, option names and values, price, compare-at price, observed availability and observation time. IDs and prices are strings in JSON. Currency is supplied by you for each store; it is not detected or converted. Size and color appear only when the feed options support those labels.

Outputs: a default dataset for JSON/API access, RESULTS.csv for spreadsheet import, and REPORT for scope, pagination, limits and delivery status. The CSV escapes formula-like cell values. Treat IDs as text when importing into spreadsheets to avoid number rounding.

Provide 1-5 authorized store or collection URLs. Body-free HEAD requests discover supported HTTPS canonical redirects before crawling, with public-DNS/TLS checks at each socket, a five-hop limit and a hard 15-second deadline per scope. Collection scope and currency are preserved; final-origin robots.txt is checked before any feed request. Loops, unsafe destinations and changed collection paths fail closed. Sites refusing HEAD and mid-crawl feed/robots redirects are unsupported; no GET fallback.

Use it for your own catalog checks, permitted supplier-feed exports and SKU-level spreadsheet work. Set small product, variant, page, time and byte caps for a first run. Reaching a cap before the terminal page marks coverage partial rather than proving the catalog ended.

Limits: public feeds can be restricted, truncated or shifting. Even a finished pagination sweep does not prove exhaustive product or variant coverage. Availability is an observed offer flag, not stock quantity. This version does not verify removals, extract hidden inventory, export images, scrape buyer/contact data or bypass access controls. Cloud runs are export-only; local snapshot comparisons are not supported on Apify.

Use only catalogs you are permitted to access and export. The input permission checkbox records your statement; it is not independent verification. Public access alone does not grant rights to scrape, reuse or resell the data. This is an unofficial tool and is not affiliated with or endorsed by Shopify.

Public demo and live mode

The default input is {"demoMode": true, "stores": []}. It makes one read-only request to Shopify's official Mock.Shop API and exports a fictional sample of at most two products and three variants each. Rows and REPORT show isDemo: true and dataOrigin: official-mock-shop-api. Prices use the API's explicit currency code (currently CAD), not INR and not a guessed dollar sign. This sample does not test a merchant's public feed, prove a complete catalog, or show real stock. No merchant attestation or snapshots are used. Demo rows emit no paid event. If the official demo API fails, the run fails; no offline fallback rows are invented.

For your own or permitted supplier catalog, disable demo mode and supply stores, for example:

{
"demoMode": false,
"stores": [{ "url": "https://your-store.example", "currency": "INR", "merchantAuthorizationConfirmed": true }]
}

Replace the placeholder with a catalog you have permission to export and its confirmed currency. Live rows show isDemo: false, dataOrigin: live-storefront, and currencySource: caller. The default example is a fictional API demonstration, not a public merchant scraping target.

Pricing

$1.00 per 1,000 verified retained live-store variant rows ($0.001 each). No start fee. Official fictional demo mode has no Actor event charges. No monthly subscription. Platform usage is included for standard runs. A product with multiple variants produces multiple billable rows.

The exporter preflights the staged row charges before publishing rows. If your budget cannot cover them, it fails before result billing. No start fee applies. Live rows are charged only after exact dataset readback. Verified rows charged before a later failure or abort can still be billed. Charge failure or a short charge refuses complete-output acknowledgement; inspect rows, BILLING_RECEIPT and charge status before retrying. The per-run receipt is saved before dataset writes and before the charge request. Graceful abort drains in-flight publication and tries one exact readback recovery. An uncertain charge is checked against authoritative run counts and is never automatically retried. Hard termination or persistent storage/API failures can still leave retained but unbilled rows, or an unresolved charge; this is not an atomic exactly-once transaction. A resumed run reconciles its receipt and stops without recrawling or repushing rows. No automatic refund promise.

Input

FieldBoundsMeaning
demoModePublic example true; runtime false when omittedFictional official demo, not a merchant feed
storesRequired in live mode; 1-5 entriesEach entry has url, currency and merchantAuthorizationConfirmed:true. Use HTTPS root or /collections/
maxProductsPerStoreDefault 100; 1-25,000Maximum distinct products per scope. Start at 100.
maxVariantsPerStoreDefault 500; 1-100,000Maximum variant rows per scope. Start at 500.
maxPagesPerStoreDefault 3; 1-500Maximum feed pages per scope, up to 250 products per page. A terminal empty page needs room inside the cap.
maxBytesPerResponseDefault 8,000,000; 1,024-16,000,000Per-response bytes. Oversized or compressed responses fail closed.
maxTotalBytesDefault 64,000,000; 1,024-128,000,000Per-scope received bytes and separate staged-output limits. Not a run-wide network byte total across all stores.
maxDurationSecsDefault 60; 10-3,600Crawl time limit. Canonical discovery occurs before the main crawl timer; set an Apify run timeout too.
requestDelayMillisDefault 1,000; 1,000-60,000Minimum request delay. Robots crawl-delay can increase it. No request retries.
snapshotStoreNameDefault nullLeave null/omitted for cloud use. A non-null value is rejected on Apify; local comparisons require serialized writers.

Read the outputs

REPORT describes pagination, coverage and delivery status. paginationComplete=true means an empty terminal page was reached, not exhaustive Shopify access. outputCompletion=acknowledged means dataset rows were read back and artifact writes accepted. Cloud baselineCommit=disabled. STATE may appear on failure or abort; inspect logs and REPORT/STATE before using incomplete output.