# Shopify Inventory Scraper - SKUs, Variants & In-Stock Status (`tenfoldfleet/shopify-products-scraper`) Actor

Scrape all products and inventory from a Shopify store or collection: title, prices, compare-at price, discount %, variants with SKU and stock, options, images, tags, vendor, description and currency. Works on headless stores too. $1.00 per 1,000 products; failed or non-Shopify stores are free.

- **URL**: https://apify.com/tenfoldfleet/shopify-products-scraper.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** E-commerce, Agents, MCP servers
- **Features:** Limited permissions
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Shopify Inventory Scraper do?

**Shopify Inventory Scraper** extracts **every product from any [Shopify](https://www.shopify.com/) store** through the store's public product feed (`/products.json`) and returns clean, structured data: **title, prices, compare-at price, discount %, variants with SKU and stock, options, images, tags, vendor, product type, description, dates and store currency**.

Shopify is a trademark of Shopify Inc. Not affiliated with, endorsed by or sponsored by Shopify.

Paste a **store URL** to get the whole catalogue, a **collection URL** to get one category, a **product URL** to get a single product, or a **store search URL** (`/search?q=runner`) to get the matching products. It also works on many **headless Shopify stores** (Hydrogen / Next.js frontends such as Gymshark or Fashion Nova): when the storefront hides the feed, the actor finds the store's `*.myshopify.com` address and reads the products from there.

It works like a **Shopify product API** without an API key: plain HTTP requests, no browser, so it is fast (250 products per request) and cheap: **$1.00 per 1,000 products**.

### Why use a Shopify scraper?

- 💸 **Competitor price monitoring**: track prices, discounts and stock of competing Shopify stores every day.
- 🛍️ **Dropshipping and product research**: find what a store sells, its best price points, vendors and new launches (`createdAt`, `publishedAt`).
- 📦 **Catalogue migration and backup**: export a full product catalogue with variants, SKUs, options and image URLs to CSV or Excel.
- 🏷️ **Sale and discount tracking**: `compareAtPrice` and `discountPercent` show what is on sale and by how much.
- 📈 **Market and brand intelligence**: compare assortments, product types and tags across many brands at once.
- 🤖 **AI agents and data pipelines**: call it from the Apify API, MCP server, Make, Zapier or n8n and get clean JSON.

### What data can it extract?

| Field | Example |
|---|---|
| `store`, `storeName` | `allbirds.com`, `Allbirds` |
| `productId`, `handle`, `url` | `7340901859408`, `womens-tree-runner`, product page link |
| `title`, `vendor`, `productType` | `Women's Tree Runner`, `Allbirds`, `Shoes` |
| `tags` | `["womens", "sale"]` |
| `currency` | `USD` (store currency) |
| `priceMin`, `priceMax` | `25`, `120` |
| `compareAtPrice`, `discountPercent` | `50`, `50` |
| `available` | `true` if any variant is in stock |
| `variantCount`, `variants` | id, SKU, title, price, compare-at price, availability, option1-3 per variant |
| `options` | `[{ "name": "Size", "values": ["5", "6", "7"] }]` |
| `imageUrl`, `images` | image URLs on the Shopify CDN |
| `descriptionText` | description with HTML stripped |
| `createdAt`, `updatedAt`, `publishedAt` | ISO 8601 timestamps |

### How to scrape products from a Shopify store

1. Click **Try for free**.
2. Add one or more **store, collection or product URLs**, e.g. `allbirds.com` or `https://www.allbirds.com/collections/mens`.
3. Optionally set a **keyword filter**, a **max products per store**, or switch on **one row per variant**.
4. Click **Start** and download the products as **JSON, CSV, Excel or HTML**, or fetch them through the API.

### How much does it cost to scrape Shopify?

You pay **$0.001 per product**, which is **$1.00 per 1,000 products**, plus a tiny **$0.00005 start fee per run**. With **One row per variant** on, each variant row counts as one result. Stores that fail (not Shopify, password-protected, blocked, empty collection, no keyword matches) and unsupported URLs (blog posts, about pages, filtered collections) are reported in the dataset with an `error` field and are **never charged**, so a typo never turns into a whole-store scrape. The same store pasted twice (`allbirds.com` and `www.allbirds.com`) is scraped and charged once. Set a maximum cost per run in the run options and the actor stops cleanly when it is reached. Apify's free monthly credit covers thousands of products.

### Input

```json
{
    "urls": [
        "https://www.allbirds.com/collections/mens",
        "kyliecosmetics.com",
        "gymshark.com",
        "https://www.allbirds.com/products/womens-tree-runners"
    ],
    "keyword": "runner, hoodie",
    "maxProductsPerStore": 0,
    "oneRowPerVariant": false,
    "includeDescription": true
}
```

### Output

```json
{
    "store": "allbirds.com",
    "storeName": "Allbirds",
    "productId": 7340901859408,
    "title": "Women's Allbirds Flip Flop - Dusty Pink",
    "handle": "womens-allbirds-flip-flop-dusty-pink",
    "url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
    "vendor": "Allbirds",
    "productType": "Shoes",
    "tags": ["allbirds::gender => womens", "shoprunner"],
    "currency": "USD",
    "priceMin": 25,
    "priceMax": 25,
    "compareAtPrice": 50,
    "discountPercent": 50,
    "available": true,
    "variantCount": 7,
    "variants": [
        { "id": 42146889039952, "sku": "A12513W050", "title": "5", "price": 25, "compareAtPrice": 50, "available": false, "option1": "5", "option2": null, "option3": null }
    ],
    "options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],
    "imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_PDP_LEFT.png",
    "images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_PDP_LEFT.png"],
    "descriptionText": "Sun on your feet. Comfort underneath...",
    "createdAt": "2026-03-27T21:03:50.000Z",
    "updatedAt": "2026-10-01T02:35:59.000Z",
    "publishedAt": "2026-09-25T23:58:13.000Z",
    "collection": null,
    "input": "allbirds.com",
    "scrapedAt": "2026-10-01T09:00:00.000Z"
}
```

With **One row per variant**, each row also has `variantId`, `variantTitle`, `sku`, `price`, `option1`-`option3`, and `compareAtPrice`, `discountPercent` and `available` refer to that variant. The full `images` list and `descriptionText` are on the first variant row of each product (every row keeps `imageUrl`); the **Variants** view in the Output tab shows SKU, variant and price columns. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. Failed inputs appear as `{ "input": "...", "error": "..." }` rows.

### Tips

- **Collection URLs are cheaper than whole stores** when you only need one category.
- Product-level `compareAtPrice` and `discountPercent` come from the **cheapest in-stock variant**; switch on one row per variant to see every variant's discount.
- Shopify serves at most **25,000 products per listing**. When a listing hits that limit you get a notice row; add collection URLs to get the rest.
- **Max products per store** counts products. With one row per variant on, 100 products can mean thousands of rows, so set a **maximum cost per run** as well.
- Schedule the actor daily on the same stores to build a **price history** or catch new products.
- Prices are in the store's base currency (`currency`), as published in its product feed.

### Use it with AI agents (MCP)

Give Claude, ChatGPT, Cursor or any MCP client this Actor as a tool through Apify's MCP server: add `https://mcp.apify.com?tools=tenfoldfleet/shopify-products-scraper` as a remote MCP server and sign in with your Apify account. The agent fills in the input, runs the Actor and reads the results itself; you pay the same per-event price as a normal run.

### FAQ

#### Does it work on any Shopify store?

On any store that has a public storefront. Password-protected stores and stores that block automated traffic return a free error row. Headless stores work when their `*.myshopify.com` domain is discoverable; you can also paste that domain directly.

#### How do I know if a website is a Shopify store?

Just add it. Non-Shopify sites return a free `Not a Shopify store` error row, so testing a list of domains costs only the $0.00005 run start fee.

#### Do I need a Shopify API key or login?

No. The actor only reads public product data that the store publishes to every visitor.

#### Is inventory quantity included?

Shopify's public feed shows whether each variant is **available** (in stock), not exact stock counts. If a store hides stock entirely, `available` is `null` (unknown) rather than a wrong `false`.

#### Which URLs can I paste?

The store home page, `/collections/<handle>`, `/products/<handle>` and `/search?q=<term>` URLs, with or without a language prefix like `/en-gb/`. Anything else returns a free error row that tells you which URL to use instead.

#### What happens if the run stops or restarts?

The actor saves its progress, so if Apify restarts the run on another server it continues where it left off instead of charging again. If your maximum cost per run is reached, inputs that were not started get a free `Not processed` row.

#### Can I use it from code or AI agents?

Yes, through the Apify API, the JavaScript or Python client, or the Apify MCP server.

#### Support

Found a Shopify store that does not parse? Open an issue in the **Issues** tab.

This actor only reads publicly available product information from Shopify storefronts. It does not log in, bypass password pages or access controls, or collect personal data.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [ALDI Australia Scraper - AU Products, Unit Prices & Catalogue](https://apify.com/tenfoldfleet/aldi-australia-scraper) | product |
| [Alibaba Image Search - Reverse Lookup of Suppliers by Photo](https://apify.com/tenfoldfleet/alibaba-image-search) | matched product |
| [Wholesale Suppliers - MOQ & Price Breaks (Alibaba Alternative)](https://apify.com/tenfoldfleet/alibaba-products-scraper) | product |
| [AliExpress Reviews Scraper: Product Feedback & Photos Monitor](https://apify.com/tenfoldfleet/aliexpress-reviews-scraper) | review |
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Bestsellers Tracker: New Releases & Rank Changes](https://apify.com/tenfoldfleet/amazon-bestsellers-tracker) | ranked product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [Applicant Tracking Jobs Scraper - Greenhouse, Lever & 6 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Audio Transcription: MP3 & Video Files to Text, SRT, VTT](https://apify.com/tenfoldfleet/audio-transcription) | audio minute transcribed |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [BBB Scraper: Business Leads, Ratings & New Reviews](https://apify.com/tenfoldfleet/bbb-scraper-leads-reviews) | business |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Coles Product Scraper - Australian Supermarket Prices & Deals](https://apify.com/tenfoldfleet/coles-product-scraper) | product |
| [Company Contact Lookup - One Lead Record per Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Contact Form Finder: Form Fields, Embed Type & Captcha Flag](https://apify.com/tenfoldfleet/contact-form-finder) | website with contact page or form |
| [CutShort Jobs Scraper - Startup Roles with INR Salary Ranges](https://apify.com/tenfoldfleet/cutshort-jobs-scraper) | job listing |
| [Facebook Ads Library Scraper for Marketers](https://apify.com/tenfoldfleet/facebook-ads-library-scraper) | ad |
| [Facebook Ads Transcript - Spoken Hook, CTA, Offer & Angle](https://apify.com/tenfoldfleet/facebook-ads-transcript) | video ad transcript |
| [Facebook Page Contact Finder - Business Leads from Page Links](https://apify.com/tenfoldfleet/facebook-page-contact-finder) | page with contact details |
| [Facebook Reels Scraper: Views & Captions Monitor for Any Page](https://apify.com/tenfoldfleet/facebook-reels-scraper) | reel |
| [Facebook Reels Transcript - Facebook Video to Text, No Login](https://apify.com/tenfoldfleet/facebook-reels-transcript) | reel transcript |
| [Foundit Jobs Monitor: India, Singapore & Malaysia Jobs Scraper](https://apify.com/tenfoldfleet/foundit-jobs-monitor) | job listing |
| [Funding Rounds Scraper - Recently Funded Companies & Investors](https://apify.com/tenfoldfleet/funding-rounds-scraper) | funding round |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Flights API - Route & Date Fares (Google Flights Alternative)](https://apify.com/tenfoldfleet/google-flights-scraper) | route search |
| [Google Hotels Scraper - Nightly Prices, Stars & Booking Sites](https://apify.com/tenfoldfleet/google-hotels-scraper) | hotel |
| [Google for Jobs Scraper - Openings by City, Pay & Job Board](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google Maps Extractor - Business Leads, Phones & Websites](https://apify.com/tenfoldfleet/google-maps-extractor) | place |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Travel Hotel Rate Tracker - OTA Prices for Every Night](https://apify.com/tenfoldfleet/google-travel-hotel-rate-tracker) | offer |
| [Search Trends by Region & Time - Google Trends Data Scraper](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Hirist Jobs Scraper: India Tech Jobs with New-Job Monitor](https://apify.com/tenfoldfleet/hirist-jobs-scraper) | job listing |
| [IIMJobs Jobs Scraper: Search & Monitor Management Roles](https://apify.com/tenfoldfleet/iimjobs-jobs-scraper) | job listing |
| [India Jobs Feed: Hirist, IIMJobs, Foundit, Instahyre & Cutshort](https://apify.com/tenfoldfleet/india-jobs-feed) | job listing |
| [Instagram Reels Analytics - Profile Reel Plays, Likes, Comments](https://apify.com/tenfoldfleet/instagram-reels-analytics) | reel |
| [Instagram Reels Search - Keyword to Top Reels, Plays & Creators](https://apify.com/tenfoldfleet/instagram-reels-search) | reel |
| [Instagram Reels Transcript - Speech to Text for Public Reels](https://apify.com/tenfoldfleet/instagram-reels-transcript) | reel transcript |
| [Instahyre Jobs Monitor: New Tech Jobs in India by Skill](https://apify.com/tenfoldfleet/instahyre-jobs-monitor) | job listing |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Likee Scraper - Creators by Country, Video Views & Likes](https://apify.com/tenfoldfleet/likee-scraper) | video |
| [LinkedIn Ads Library Scraper - Competitor Ad Copy & Targeting](https://apify.com/tenfoldfleet/linkedin-ad-library-scraper) | ad |
| [LinkedIn Company Posts Monitor: New Posts, No Login](https://apify.com/tenfoldfleet/linkedin-company-posts-monitor) | post |
| [LinkedIn Company Scraper: Firmographics & Recent Posts](https://apify.com/tenfoldfleet/linkedin-company-scraper) | company |
| [Naver Shopping Scraper - Keyword Rank, Prices, Ads & Malls](https://apify.com/tenfoldfleet/naver-shopping-scraper) | product |
| [Pinterest Search Scraper: Pins, Promoted Ads & Shop Trends](https://apify.com/tenfoldfleet/pinterest-search-scraper) | pin |
| [Podcast Transcription: Episodes to Text, SRT & Monitor](https://apify.com/tenfoldfleet/podcast-transcription) | audio minute transcribed |
| [Reddit Brand Monitoring - Keyword Alerts for Posts & Comments](https://apify.com/tenfoldfleet/reddit-brand-monitoring) | mention |
| [Reddit Post Comments Export: Threads to JSON & CSV](https://apify.com/tenfoldfleet/reddit-post-comments-export) | comment |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [Reverse Image Search - Find Every Site Using a Photo](https://apify.com/tenfoldfleet/reverse-image-search) | image searched |
| [SEEK Jobs Scraper - Salaries & Hiring Across 8 APAC Job Boards](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [Semrush API Domain Traffic: Visits, Authority Score, AI Traffic](https://apify.com/tenfoldfleet/semrush-api-domain-traffic) | domain |
| [SEO Agent - AI Keyword Research & Competitor Reports](https://apify.com/tenfoldfleet/seo-agent) | research report |
| [SEO Crawler - Technical SEO Audit Tool & On-Page Checker](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Stock Photos & Videos Scraper for Pexels](https://apify.com/tenfoldfleet/stock-photos-scraper) | media item |
| [Website Built With Checker - Find Any Site's CMS & Tech Stack](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [Telegram Keyword Search Monitor - New Mentions in Channels](https://apify.com/tenfoldfleet/telegram-keyword-search-monitor) | matching message |
| [Threads Search - Keyword & Profile Posts Scraper (No Login)](https://apify.com/tenfoldfleet/threads-search) | post |
| [TikTok Ads Library Scraper: Competitor Ads in Europe](https://apify.com/tenfoldfleet/tiktok-ads-library-scraper) | ad |
| [TikTok Transcripts - Captions or Speech to Text for Any Video](https://apify.com/tenfoldfleet/tiktok-transcripts) | video transcript |
| [Twitter Video Transcript - X Video to Text & SRT](https://apify.com/tenfoldfleet/twitter-video-transcript) | video transcript |
| [HTML to Text & URL to Markdown - LLM Ready Web Content](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Video Transcriber - Any Link to Text, SRT & VTT (7 Platforms)](https://apify.com/tenfoldfleet/video-transcriber-any-url) | video transcribed |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [WeChat Official Account Articles - Keyword Search to Markdown](https://apify.com/tenfoldfleet/wechat-official-account-articles) | article found |
| [Weibo Scraper - Comment Threads, Hot Search Ranks & User Stats](https://apify.com/tenfoldfleet/weibo-scraper) | comment |
| [Woolworths Product Scraper - AU Shelf Prices, Specials & GTINs](https://apify.com/tenfoldfleet/woolworths-product-scraper) | product |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [Yahoo Finance Scraper - Quotes, History, Fundamentals & News](https://apify.com/tenfoldfleet/yahoo-finance-scraper) | ticker row |
| [YouTube Channel Email Scraper - Creator Contact Extractor](https://apify.com/tenfoldfleet/youtube-channel-email-scraper) | channel with email |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Search Scraper: Keyword Video & Shorts Monitor](https://apify.com/tenfoldfleet/youtube-search-scraper) | search result |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |
| [YouTube Video Details Lookup: Views, Likes & Tags by URL](https://apify.com/tenfoldfleet/youtube-video-details-lookup) | video details |

# Actor input Schema

## `urls` (type: `array`):

One per line. A store (allbirds.com or https://shop.example.com) scrapes the whole catalogue; a collection URL (https://www.allbirds.com/collections/mens) scrapes only that collection; a product URL scrapes one product; a store search URL (https://www.allbirds.com/search?q=runner) keeps products matching the search term. \*.myshopify.com addresses work too. Other pages (blogs, about, filtered collections) are rejected with a free error row instead of scraping the whole store.

## `keyword` (type: `string`):

Only keep products whose title, vendor, product type, tags or handle contain this text (case-insensitive). Separate several keywords with commas to match any of them, e.g. hoodie, t-shirt. You are only charged for products that match. A /search?q= URL uses its own search term instead.

## `maxProductsPerStore` (type: `integer`):

Stop after this many products per store or collection (after the keyword filter). 0 = all products. With 'One row per variant' on, each product can produce many rows (one per size/colour), and each row is one result. Shopify serves at most 25,000 products per listing; add collection URLs to go beyond that.

## `oneRowPerVariant` (type: `boolean`):

Output one row per variant (size/colour) with its own SKU, price, compare-at price and stock instead of one row per product with a nested variants list. Better for spreadsheets and price tracking. Each variant row is one result. The full image list and description are on the first variant row of each product.

## `includeDescription` (type: `boolean`):

Add the product description as plain text (HTML stripped). Turn off for smaller results.

## Actor input object example

```json
{
  "urls": [
    "https://www.allbirds.com/collections/mens",
    "kyliecosmetics.com"
  ],
  "maxProductsPerStore": 100,
  "oneRowPerVariant": false,
  "includeDescription": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `variants` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.allbirds.com/collections/mens",
        "kyliecosmetics.com"
    ],
    "maxProductsPerStore": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/shopify-products-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": [
        "https://www.allbirds.com/collections/mens",
        "kyliecosmetics.com",
    ],
    "maxProductsPerStore": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/shopify-products-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.allbirds.com/collections/mens",
    "kyliecosmetics.com"
  ],
  "maxProductsPerStore": 100
}' |
apify call tenfoldfleet/shopify-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/shopify-products-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0RNntXezqE0n7K9Kf/builds/JhSKke0Y1xMI0KUiz/openapi.json
