Shopify Store Catalog & Pricing Extractor
Extract a Shopify store's product catalog with titles, prices, compare-at prices, variants, SKUs, images and stock availability from any custom or myshopify.com domain.
Open in Apify Store$0.99 / 1K on Free
Short answer
Shopify Store Catalog & Pricing Extractor is an Apify Store Actor for Shopify stores data that returns 42 published output fields, including title, price, compareAtPrice, available. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 19 input settings; one is required (mode). It covers 8 of the 8 core Shopify stores fields this site tracks. Last updated Oct 27, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
42 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
recordTypetitlepricecurrencycompareAtPriceavailablevendorproductTypestoreUrlurlproductTitleskubarcodeinventoryQuantityproductUrlhandleproductsCountscrapedAtproductIdidtagsdescriptioncreatedAtupdatedAtpublishedAtpublishedScopepriceMinpriceMaxcompareAtPriceMaxdiscountPercent
Show the other 12 fields
onSalevariantCountavailableVariantCountvariantsimagesimageDetailsfeaturedImageoptionscollectionHandlestoresourcesourceUrl
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | catalog | What to scrape. `catalog` walks the public product feed, `collection` walks specific collections, `product` fetches exact product handles, `search` uses the storefront search suggestions, `collections` lists collection metadata, and `auto` detects the type of each URL in `startUrls`. |
| storeUrls | array | No | – | Store domains or URLs, e.g. `deathwishcoffee.com` or `https://www.allbirds.com`. Accepts custom domains and `*.myshopify.com`. A product or collection URL is reduced to its store for catalog/collections/search modes. |
| startUrls | array | No | [] | Store, collection or product URLs. In `auto` mode each URL selects its own job: `/products/<handle>` fetches one product, `/collections/<handle>` fetches a collection, any other store URL fetches the catalog. In the other modes these URLs add stores and, for collection/product modes, their handles. |
| collectionHandles | array | No | [] | Collection handles or collection URLs, e.g. `new-arrivals`, `sale`, or `https://store.com/collections/sale`. Handles are applied to every store in `storeUrls`; a full collection URL is applied to its own store. |
| productHandles | array | No | [] | Product handles or product URLs, e.g. `dark-roast-coffee` or `https://store.com/products/dark-roast-coffee`. Handles are applied to every store in `storeUrls`; a full product URL is applied to its own store. |
| searchQuery | string | No | – | In-store search term. Shopify's public suggest endpoint returns at most 10 products per store and has no pagination. |
| currency | string | No | store | ISO 4217 code to pin prices to, e.g. `USD`, `EUR`, `GBP`. Use `store` to use the store's base currency from `/meta.json`. Pinning is important because Shopify localizes prices by IP. |
| country | string | No | – | Two-letter ISO country code passed as `?country=` to the storefront, e.g. `US`, `GB`, `DE`. |
| vendor | string | No | – | Keep products whose vendor contains this text (case-insensitive). |
| productType | string | No | – | Keep products whose product type contains this text (case-insensitive). |
Show the other 9 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| tag | string | No | – | Keep products with at least one tag containing this text (case-insensitive). |
| minPrice | number | No | – | Drop products whose lowest variant price is below this value. |
| maxPrice | number | No | – | Drop products whose lowest variant price is above this value. |
| available | string | No | any | Keep all products, only products with at least one purchasable variant, or only sold-out products. |
| maxItems | integer | No | 1000 | Hard cap on dataset rows across all stores. When `flattenVariants` is on, each variant row counts as one. |
| maxPages | integer | No | 100 | Page cap per product/collection feed. Each page holds up to 250 items and Shopify refuses offsets above 25,000, so the effective maximum is 100. |
| includeDetails | boolean | No | false | Fetch `/products/{handle}.json` for each emitted product to add barcode, weight/grams and inventory fields. Costs one extra request per product and is off by default. Product mode always uses the detail endpoint. |
| flattenVariants | boolean | No | false | Emit one `recordType: variant` row per variant instead of one product row with nested variants. Variant and product IDs are de-duplicated. |
| proxyConfiguration | object | No | – | Leave empty to fetch directly. After a 403 or 429 block the actor retries through Apify's datacenter proxy (AUTO) automatically. If you set this, your configuration is used for that retry instead of AUTO; direct requests are still tried first. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "catalog",
"storeUrls": [
"https://deathwishcoffee.com"
],
"startUrls": [],
"collectionHandles": [],
"productHandles": [],
"currency": "USD",
"available": "any",
"maxItems": 3,
"maxPages": 100,
"includeDetails": false,
"flattenVariants": false
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "catalog",
"storeUrls": [
"https://deathwishcoffee.com"
],
"startUrls": [],
"collectionHandles": [],
"productHandles": [],
"currency": "USD",
"available": "any",
"maxItems": 3,
"maxPages": 100,
"includeDetails": False,
"flattenVariants": False
}
run = client.actor("nimbryxo-studio/shopify-store-catalog-and-pricing-extractor").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "catalog",
"storeUrls": [
"https://deathwishcoffee.com"
],
"startUrls": [],
"collectionHandles": [],
"productHandles": [],
"currency": "USD",
"available": "any",
"maxItems": 3,
"maxPages": 100,
"includeDetails": false,
"flattenVariants": false
};
const run = await client.actor("nimbryxo-studio/shopify-store-catalog-and-pricing-extractor").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~shopify-store-catalog-and-pricing-extractor/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"catalog","storeUrls":["https://deathwishcoffee.com"],"startUrls":[],"collectionHandles":[],"productHandles":[],"currency":"USD","available":"any","maxItems":3,"maxPages":100,"includeDetails":false,"flattenVariants":false}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=nimbryxo-studio/shopify-store-catalog-and-pricing-extractor",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among Shopify stores routes
It ranks 1 of 1 catalogue Actors for Shopify stores on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 Shopify Store Catalog & Pricing Extractor 42 output fields, pay per event 8 of 8 core fields
$0.99 / 1K - + 8 other Store tools, combined Reference only 7 of 8 core fields
from $0.05 / 1K - API Shopify Storefront API Limited access fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: Shopify Storefront API
Limited access. Each Shopify store exposes a GraphQL Storefront API built for that store's own storefronts; tokenless access reads products, collections, search and pages for a single store. The Shopify API terms prohibit using the API for systematic or automated data collection.
No usage price is published.
Other Store tools for Shopify stores
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Shopify Products Scraper | 43 | $1.00 |
| Shopify Store Scraper | 120 | $5.00 |
| Shopify Scraper | 23 | $1.00 |
| Shopify & DTC Products Prices · Discounts · Reviews | 11 | $1.00 |
| Shopify Review Scraper (Judge.me, Loox, Yotpo, Stamped + more) | 9 | $1.00 |
What people use it for
- extract product catalogs
- inspect product variants
- review store pricing
Similar Actors
IKEA Multi-Country Product Catalog Extractor
Search, browse, or fetch IKEA products across 50+ country storefronts, with price, stock status, measurements, ratings, images, and color/size…
AliExpress Multi-Region Search, Store & Review Scraper
Search AliExpress or fetch product, store, and review records by ID or URL across 18 regional storefronts and 42 currencies, with price, rating,…
Amazon Brand Store Page & Merchandising Crawler
Crawl an Amazon Brand Store's navigation, creative modules (images, video, CTAs), and every product link found on its pages. Resolves a brand's…
Nike Product Catalog, Colorway & Price Scraper
Search Nike.com by keyword or style code, browse 40 shoe/clothing categories across 18 marketplaces, or fetch full product-page detail including…
Amazon Third-Party Seller Profile & Storefront Catalog
Look up an Amazon third-party seller's public business details, feedback history and ratings histogram, plus every product listed in their…
Lowe's Price, Stock & Specification Scraper
Search Lowe's products by keyword, browse a category, or fetch details by item ID or URL. Get price, original price, discount percent, stock…
Questions people ask
How much does Shopify Store Catalog & Pricing Extractor cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Shopify Store Catalog & Pricing Extractor return?
Its published output schema lists 42 fields: recordType, title, price, currency, compareAtPrice, available, vendor, productType, storeUrl, url, productTitle, sku, and 30 more. A listed field is not guaranteed to be filled in every row.
What input does Shopify Store Catalog & Pricing Extractor need?
Required: mode. Optional settings include storeUrls, startUrls, collectionHandles, productHandles, searchQuery, currency.
How do I run Shopify Store Catalog & Pricing Extractor from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/shopify-store-catalog-and-pricing-extractor").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/shopify-store-catalog-and-pricing-extractor").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~shopify-store-catalog-and-pricing-extractor/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Shopify Store Catalog & Pricing Extractor on Apify Store
- Published build with input and output schema (JSON)
- Shopify Storefront API documentation
Cite this page
Scraper Finder. "Shopify Store Catalog & Pricing Extractor." https://scraperfinder.com/catalogue/shopify-store-catalog-and-pricing-extractor/ (data checked 2026-11-12).
Run Shopify Store Catalog & Pricing Extractor
$0.99 per 1,000 results. Paste the example input above, set your Shopify stores query, then export the dataset. Still choosing? Compare every Shopify stores route.