---
title: "Shopify scraper: products and variants"
url: https://www.datawebot.com/blog/shopify
description: "Extract products, variants and prices from online stores worldwide with your AI agent: search, product details and catalogue. Free trial credits."
updated: 2026-10-24
author: datawebot team
---

Shopify storefront guide

# Shopify storefront data extraction: products and variants

A platform field guide to Shopify merchant storefronts, product and variant records, source paths, currency context and API access boundaries.

## A Shopify merchant uses its own storefront

Illustrative URL patterns

A Shopify merchant can use a custom domain or a `myshopify.com` address. Shopify's own `shopify.com` domain is its platform website, while merchant storefronts use their own domains. A product handle is the readable path segment after `/products/`; a collection handle identifies a merchant-organized group under `/collections/`. Shopify documents custom and myshopify.com domains, plus handle fields in its product and collection models.

| URL pattern | What it represents | Why it matters |
| --- | --- | --- |
| `https://shopify.com/` | Shopify's platform website | Not a merchant product catalog |
| `https://merchant.example/` | Reserved placeholder for a merchant storefront | Merchant host and market provide context |
| `https://merchant.example/products/item-handle` | Illustrative product path with a readable handle | A product path can group multiple variants |
| `https://merchant.example/collections/group-handle` | Illustrative merchant-curated collection path | Collection membership is merchandising context |
| `https://shop-name.myshopify.com/` | Example of a Shopify-assigned merchant domain | Distinct from Shopify's platform website |

The .example URLs are reserved documentation placeholders, not tested endpoints. Merchants may use different themes and storefront experiences, so path and field behavior varies by storefront.

## Map Shopify product, variant and observation fields

Shopify documents products and their variants as related catalog records. The datawebot result schema includes a defined subset of that model; Shopify's wider GraphQL fields should not be read as fields in this result.

| Record layer | Fields in the datawebot result | How to interpret |
| --- | --- | --- |
| Product | Product ID, title, product URL, vendor, product type, HTML description and image URLs. | The source handle is used to form the product URL; it is not returned as a separate field. Vendor, type and description can be null. |
| Variant | Variant ID and title, SKU, named option values, price and currency, compare-at price and availability. | SKU and compare-at price can be null. Availability is true, false or unknown; it is not an inventory count. |
| Observation provenance | Storefront ID, source URL, retrieval timestamp and schema version. | Keep source and time with downstream comparisons; the same product can have different source and market observations. |
| Warnings | Warnings can report a 250-variant limit, missing availability or a shortened description. | A warning marks a coverage or mapping limit; do not fill missing values from another product or merchant. |

[Shopify Product object and documented fields ↗](https://shopify.dev/docs/api/storefront/latest/objects/Product) · [Shopify ProductVariant options and sale availability ↗](https://shopify.dev/docs/api/storefront/latest/objects/productvariant) · [Review datawebot field and missing-value definitions ↗](https://www.datawebot.com/docs/data)

## A Shopify product, variant and collection answer different questions

A product handle identifies a product path, a variant represents an option combination, and a collection is a merchant-organized group. Keep the source URL, selected option and collection context separate when interpreting a storefront result.

| Shopify record or path | Useful source meaning | Comparison boundary |
| --- | --- | --- |
| Product: /products/{handle} | A merchant product page can describe one product and its reported variants. | A readable handle is a path label, not proof of a permanent ID or a one-variant record. |
| Variant option combination | Named options such as size or color describe a specific version of a product. | Keep variant ID, SKU and each option value together; similar titles do not establish identical variants. |
| Collection: /collections/{handle} | A merchant-created grouping can organize products by category, season or promotion. | Membership is merchandising context; it does not establish the merchant's full catalog or private inventory. |
| Selected variant in a URL | A storefront link may include a selected option in its query string. | The datawebot product result includes the product's reported variant set; the selected query parameter does not narrow that result to one option. |

[Shopify Ajax Product API and product handles ↗](https://shopify.dev/docs/api/ajax/reference/product) · [Shopify Collection object and merchant groupings ↗](https://shopify.dev/docs/api/storefront/latest/objects/collection)

## Keep currency and completeness with each Shopify observation

Shopify’s Ajax Product API uses locale-aware URLs and returns monetary fields in the customer’s presentment currency. datawebot's catalogue Jobs read up to 10 pages per run and keep prices in the store's own units; the market and currency context is not verified, so record it with each observation. These limits are separate from Shopify’s API response ceiling.

| Signal or limit | What Shopify or the product result reports | Do not infer |
| --- | --- | --- |
| Price and currency | Variant price and optional compare-at price carry a currency; Shopify documents Ajax money in presentment currency. | That amounts from different currencies, locales, stores or dates are directly comparable. |
| Variant availability | A source-reported boolean can be true, false or unknown in the normalized result. | The number of units in stock, availability in another market or a future restock. |
| Variants per product response | Shopify's Ajax product JSON can contain at most 250 variants; the result can warn when that limit is reached. | That a 250-entry response contains every variant the merchant configured. |
| Run completeness | A Shopify data run allows at most 25 page visits, including currency verification. | That a bounded run reached every collection, product or private inventory record. |

[Read Shopify's locale-aware Ajax API limits ↗](https://shopify.dev/docs/api/ajax) · [Review Shopify product JSON's variant ceiling ↗](https://shopify.dev/docs/api/ajax/reference/product) · [Understand page scope and source completeness ↗](https://www.datawebot.com/docs/inputs)

## Choose a Shopify data path by storefront and owner

Shopify documents different routes for public theme data, buyer-facing storefront experiences and merchant-authorized operations. Platform documentation describes how those routes work; each merchant's own terms and robots directives remain tied to its storefront domain.

| Data path | What Shopify documents | Boundary to preserve |
| --- | --- | --- |
| Theme Ajax API | Unauthenticated JSON for Shopify-hosted themes, including a locale-aware product endpoint. | Shopify says the Ajax API is not for custom storefronts and remains subject to abuse-prevention measures. |
| Storefront API | A buyer-facing API with tokenless access for basic data and token-based access for additional features and scopes. | Documented API availability does not establish that a specific merchant has granted a particular app access. |
| Admin API | An app authenticates on behalf of a merchant and receives the data allowed by granted scopes. | Merchant-owned catalog, customer or inventory operations are not public storefront fields. |
| Merchant site rules | Terms and robots directives belong to the specific storefront domain and its operator. | Shopify's API documentation is not a blanket permission to collect or reuse every merchant's content. |

[Shopify API authentication and token roles ↗](https://shopify.dev/docs/api/usage/authentication) · [Shopify Storefront API access modes ↗](https://shopify.dev/docs/api/storefront/latest) · [Compare official APIs with public web data ↗](https://www.datawebot.com/blog/web-scraping-vs-official-apis-ecommerce)

Content reviewed 2026-10-24.

## Continue with the Shopify product workflow

[Shopify product data API and CSV workflow ↗](https://www.datawebot.com/shopify-product-data-api)
