
Shopify Product Scraper — Any Store's Catalog
Scrape the full product catalog of any Shopify store via its public /products.json — title, price range, variants, availability, images, tags. One row per product or per variant. No API key.
Shopify Product Scraper — Any Store's Catalog returns 29 documented output fields, including store, id, title, handle and url. Every field carries a declared type, a written description and an example value. 37 runs are recorded on Apify.
- 29
- Output fields
- 5
- Inputs
- 37
- Runs
- 2026-10-15
- Last run
01 — output
What it returns
Every field the extractor writes to its dataset, with its type, a written description and an example value.
| Field | Type | What it holds | Example |
|---|---|---|---|
| store | stringnull | Store this record came from. | <store> |
| id | integernull | Stable identifier from the source. Use it to link records across runs. | 7524427347697896726 |
| title | stringnull | Title as the source writes it. | Wireless Bluetooth Headphones |
| handle | stringnull | Public handle for this account. | <handle> |
| url | stringnull | The URL this row describes. | https://example.com/pricing |
| vendor | stringnull | Vendor this record relates to. | <vendor> |
| productType | stringnull | Product type as the merchant categorises it. | <productType> |
| tags | stringnull | Tags applied to this record. | ["wireless","bluetooth","over-ear"] |
| priceMin | numbernull | Lowest price observed in the range. | 0 |
| priceMax | numbernull | Highest price observed in the range. | 0 |
| currency | stringnull | Three-letter ISO 4217 currency code. | USD |
| variantCount | integernull | How many variants the product has. | 6 |
| available | booleannull | Whether the item is currently available. | true |
| inStockVariants | integernull | How many variants are currently in stock. | 0 |
| image | stringnull | Primary image URL for this record. | <image> |
| imageCount | integernull | Number of images found. | 7 |
| createdAt | stringnull | ISO 8601 timestamp of when this record was created upstream. | 2026-10-15T09:00:00.000Z |
| updatedAt | stringnull | ISO 8601 timestamp of the most recent upstream update. | 2026-10-15T09:00:00.000Z |
| publishedAt | stringnull | ISO 8601 timestamp of publication. | 2026-10-15T09:00:00.000Z |
| productId | integernull | Identifier of the product. | 0 |
| productTitle | stringnull | Title of the product as the merchant writes it. | <productTitle> |
| variantId | integernull | Identifier of this variant. | 0 |
| variantTitle | stringnull | Title of this variant, for example a size or colour. | <variantTitle> |
| sku | stringnull | Stock keeping unit, as the merchant defines it. | <sku> |
| price | numbernull | Price as reported by the source. Currency is given by the currency field. | 9.99 |
| compareAtPrice | numbernull | Original list price, where the merchant shows a comparison. | 0 |
| onSale | booleannull | Whether the item is currently discounted. | true |
| discountPercent | integernull | Discount off the comparison price, as a percentage. | 15 |
| grams | numbernull | Grams as recorded for this row. | 0 |
02 — sample
One record
Assembled from the example values declared on the schema above, not invented at render time.
{
"store": "<store>",
"id": 7524427347697896000,
"title": "Wireless Bluetooth Headphones",
"handle": "<handle>",
"url": "https://example.com/pricing",
"vendor": "<vendor>",
"productType": "<productType>",
"tags": "[\"wireless\",\"bluetooth\",\"over-ear\"]"
}03 — input
What you give it
| Input | Type | Description |
|---|---|---|
| storeUrls | arrayrequired | Shopify store URLs or domains (e.g. hemper.co). Some stores block automated access; use only stores you are authorized to collect from. |
| perVariant | booleanoptional | Off: one row per product (price range). On: one row per variant/SKU. |
| maxPagesPerStore | integeroptional | 250 products per page. |
| useProxy | booleanoptional | For stores that block datacenter IPs. |
| maxItems | integeroptional | Hard cap. Strictly enforced. |
04 — run
Run Shopify Product Scraper on your own input
It runs in the cloud on Apify. Nothing to install, and you are billed per result returned rather than per attempt.
05 — questions
Asked before running it
29 of 29 fields described
- What does Shopify Product Scraper — Any Store's Catalog return?
- It returns 29 documented output fields: store, id, title, handle, url, vendor, productType, tags, priceMin, priceMax, currency and variantCount. Each field declares its type, a description of what it holds, and an example value. The remaining 17 are listed in the output schema below.
- What input does Shopify Product Scraper — Any Store's Catalog require?
- storeUrls is required. A further 4 inputs are optional. The full input schema, with types and defaults, is below.
- Does Shopify Product Scraper — Any Store's Catalog need an API key or login?
- No. None of its inputs is a credential, and it reads only public data. Nothing to sign up for before the first run.
- How do I run Shopify Product Scraper — Any Store's Catalog?
- It runs on Apify. Start it from its listing with the inputs above, or call the Apify API with the Actor's ID. Results land in a dataset you can export as JSON, CSV or Excel, or read through the Apify API into your own pipeline.