Shopify Store Catalog & Price Intelligence MCP Server avatar

Shopify Store Catalog & Price Intelligence MCP Server

Pricing

Pay per usage

Go to Apify Store
Shopify Store Catalog & Price Intelligence MCP Server

Shopify Store Catalog & Price Intelligence MCP Server

Extract normalized products, variants, SKUs, real-time stock availability, discount percentages, collections, and predictive search results from any public Shopify storefront via Batch JSON API or Standby MCP Server.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Mutualistic Labs

Mutualistic Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

MCP Server for AI Agents: Shopify Store Catalog & Search API

An always-on Model Context Protocol (MCP) server and batch Actor that reads any public Shopify store: product catalogs with variant-level price, SKU and availability, collections, single product details and the store's own predictive search. Descriptions are returned as clean Markdown. Built for AI agents (Claude Desktop, Cursor, Windsurf, OpenAI Agents, LangChain), price and assortment monitoring, competitor research, dropshipping research and catalog enrichment.

No proxies, no browser, no logins, no cookies: only the public storefront JSON endpoints (/products.json, /collections/{handle}/products.json, /products/{handle}.json, /collections.json, /search/suggest.json) are called.

Features

  • Products of one or many stores (up to 10), optionally limited to one collection, with filters for availability, price range, vendor, product type, tag and keyword.
  • Variant-level data: variants with SKU, price, compare-at price, availability, options, grams and tax flags; aggregated price_min, price_max, compare_at_price_min, compare_at_price_max and discount_pct_max.
  • Collections with product counts and URLs.
  • Predictive search per store, optionally enriched with the full product record.
  • Works with preset stores, *.myshopify.com subdomains and custom store domains (https only).
  • Deterministic de-duplication (uid), hard max_items and max_total_charge_usd caps.

What you get

record_typeModeWhat it is
productproducts, search, product_detailOne product (metadata, variants, SKUs, price range, discount, availability, images, Markdown description)
collectioncollections, searchOne collection (title, handle, description, product count, URL)

Endpoints

  • GET / and GET /health: readiness probe, returns {"status":"ok","actor":"shopify-store-catalog-mcp",...}.
  • POST /mcp: MCP JSON-RPC 2.0 (initialize, ping, tools/list, tools/call).

Standby URL: https://mutualistic-housing--shopify-store-catalog-mcp.apify.actor/mcp (authenticate with your Apify API token).

Input

FieldTypeDefault
modeproducts, search, collections, product_detailproducts
storesstring[] (preset keys, myshopify subdomains, *.myshopify.com URLs or custom https domains, 1 to 10)["allbirds"]
collection_handlestring, only for mode productsnone
querystring, max 200 chars (required for search; optional keyword filter in products and collections)none
product_urlsstring[] of product URLs or store/handle pairs (mode product_detail, 1 to 50)none
available_onlybooleanfalse
min_price, max_pricenumber or null, major currency unitsnone
vendor, product_type, tagstring, max 100 charsnone
include_descriptionbooleantrue
include_full_detailsboolean (mode search: fetch the full product record for every match)true
max_itemsinteger 1 to 50025
max_total_charge_usdnumber or nullno cap

An empty {} input runs: the 25 first products of allbirds with descriptions. camelCase aliases (collectionHandle, productUrls, availableOnly, minPrice, maxPrice, productType, includeDescription, includeFullDetails, maxItems, maxTotalChargeUsd) are accepted. Invalid input is rejected with INVALID_INPUT_ZERO_CHARGE before any network call or charge.

Batch input examples

Available products under 120 from two stores:

{"mode": "products", "stores": ["allbirds", "tentree"], "available_only": true, "max_price": 120, "max_items": 25}

One collection, filtered by tag:

{"mode": "products", "stores": ["kith"], "collection_handle": "mens-footwear", "tag": "new", "include_description": false}

Search a store and enrich every match with variants and SKUs:

{"mode": "search", "stores": ["allbirds"], "query": "shoe", "include_full_details": true, "max_items": 20}

List collections:

{"mode": "collections", "stores": ["https://www.brooklinen.com"], "max_items": 50}

Product details by URL or store/handle:

{"mode": "product_detail", "product_urls": ["https://www.allbirds.com/products/mens-tree-runners", "tentree/some-handle"]}

MCP tools

{
"mcpServers": {
"shopify": {
"url": "https://mutualistic-housing--shopify-store-catalog-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
}
}
}
  • get_store_products: stores, collection_handle, query, available_only, min_price, max_price, vendor, product_type, tag, include_description (default false in MCP), max_items (default 10).
  • search_store_catalog: stores, query (required), available_only, min_price, max_price, include_description, max_items.
  • get_store_collections: stores, query, max_items.
  • get_product_details: product_urls (URLs or store/handle pairs), include_description (default true).
  • list_preset_stores: no arguments; lists the preset stores (free).

Example calls:

curl -X POST "https://mutualistic-housing--shopify-store-catalog-mcp.apify.actor/mcp" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_store_products","arguments":{"stores":["allbirds"],"available_only":true,"max_price":120,"max_items":5}}}'
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_store_catalog","arguments":{"stores":["tentree"],"query":"shirt","max_items":10}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_store_collections","arguments":{"stores":["kith"],"max_items":20}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"get_product_details","arguments":{"product_urls":["https://www.allbirds.com/products/mens-tree-runners"]}}}
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"list_preset_stores","arguments":{}}}

Output fields

product:

FieldMeaning
record_type, uidproduct; deterministic SHA-256 identifier
store_domain, store_base_urlStore host and base URL
product_id, handle, title, vendor, product_type, tagsProduct identity and classification
published_at, created_at, updated_atTimestamps
product_url, featured_image, imagesPage URL (https only) and image URLs
available, variants_counttrue when any variant is in stock; number of variants
price_min, price_maxVariant price range in major currency units
compare_at_price_min, compare_at_price_max, discount_pct_maxCompare-at range and largest discount percentage
currencyCurrency code when the store payload exposes one, otherwise null
skus, options, variantsDistinct SKUs; option names/values; normalized variants
description_textDescription as Markdown (up to 50000 characters)
collection_handle, sourceCollection listed from; products_json, product_json or search_suggest

Each entry of variants has variant_id, title, sku, price, compare_at_price, available, option1, option2, option3, grams, requires_shipping and taxable.

collection:

FieldMeaning
record_type, uidcollection; deterministic SHA-256 identifier
store_domain, store_base_urlStore host and base URL
collection_id, handle, titleCollection identity
description_text, products_countDescription as Markdown; number of products
published_at, updated_at, featured_image, collection_urlTimestamps, image and page URL

Example product (shortened):

{
"record_type": "product", "store_domain": "www.allbirds.com", "store_base_url": "https://www.allbirds.com",
"product_id": 7654321098, "handle": "mens-tree-runners", "title": "Men's Tree Runners", "vendor": "Allbirds",
"product_type": "Shoes", "tags": ["mens", "runner"], "product_url": "https://www.allbirds.com/products/mens-tree-runners",
"available": true, "variants_count": 2, "price_min": 98.0, "price_max": 98.0, "compare_at_price_min": 120.0,
"compare_at_price_max": 120.0, "discount_pct_max": 18.33, "currency": null, "skus": ["TR3MBL090"],
"variants": [{"variant_id": 1, "title": "9", "sku": "TR3MBL090", "price": 98.0, "compare_at_price": 120.0, "available": true}],
"featured_image": "https://cdn.shopify.com/s/files/1/example.jpg", "source": "products_json", "uid": "<sha256>"
}

Preset stores

Use the key in stores; any *.myshopify.com subdomain or custom store domain works too (https only).

KeyStoreCategory
allbirdsAllbirds (www.allbirds.com)footwear, apparel
tentreetentree (www.tentree.com)sustainable apparel
kithKith (kith.com)streetwear
cotopaxiCotopaxi (www.cotopaxi.com)outdoor gear
brooklinenBrooklinen (www.brooklinen.com)home, bedding
deathwishcoffeeDeath Wish Coffee (www.deathwishcoffee.com)coffee
intelligentsiaIntelligentsia Coffee (www.intelligentsia.com)coffee

Security and limits

  • https only: bare names become https://name.myshopify.com; http://, file: and other schemes are rejected. Reserved names such as localhost, admin or www are never accepted as stores.
  • SSRF protections: credentials in URLs, non-443 ports, .. path traversal, queries and fragments on store URLs are rejected; IP literals, localhost, .local and .internal names are blocked; DNS results (and the connected peer address, checked before any body is read) that are loopback, private, link-local, CGNAT, NAT64, 6to4, Teredo, multicast or unspecified are refused. Redirects (for example from a myshopify subdomain to a custom domain) must be https and are re-checked per host.
  • Bounds: at most 500 items per run, 10 stores per call, 50 product URLs in mode product_detail, a 120 s global batch deadline, a 45 s deadline per MCP tool call, a 15 s per-request timeout (connect, TLS, headers and body) and a 4 MiB response size cap.
  • MCP server: request bodies above 64 KiB return 413, POST /mcp requires Content-Type: application/json (415 otherwise) and at most 8 concurrent tool calls run (503 when busy).
  • Untrusted content: description_text is untrusted third-party Markdown written by store owners. Link destinations are percent-encoded and only https and mailto links are emitted, but plain text is passed through verbatim. Sanitize it before rendering it in a browser or UI.
  • Stores with a password page or disabled JSON endpoints return an error entry for that store; rate limits (429) and 5xx responses are retried with back-off; per-store and per-product failures are reported in errors and never abort other stores.

Pricing

Pay per event: $0.001 per result-item (result-item: one de-duplicated product or collection, as a dataset item or an MCP tool result row); the actor-start event is free and list_preset_stores is free. max_items and max_total_charge_usd are hard caps enforced in code, so a run never charges more than you configure. Invalid input and empty results are never charged.

ActorCoversStoreStandby MCP URL
Multi-ATS Career Jobs Search MCPGreenhouse, Lever, Ashby, SmartRecruiters, Workablehttps://apify.com/mutualistic_housing/multi-ats-career-jobs-mcphttps://mutualistic-housing--multi-ats-career-jobs-mcp.apify.actor/mcp
Google Ads Transparency & Ad Spy MCPSearchCreatives, SearchSuggestions, content.js ad-copy & video metadatahttps://apify.com/mutualistic_housing/google-ads-transparency-mcphttps://mutualistic-housing--google-ads-transparency-mcp.apify.actor/mcp
Multi-Engine Keyword & Autocomplete MCPGoogle, YouTube, Amazon, Bing, DuckDuckGo, Brave + google:suggestrelevance & search intenthttps://apify.com/mutualistic_housing/keyword-autocomplete-mcphttps://mutualistic-housing--keyword-autocomplete-mcp.apify.actor/mcp
Discourse Forum Search & Threads MCPcommunity.openai.com, discuss.huggingface.co, meta.discourse.org + any public Discoursehttps://apify.com/mutualistic_housing/discourse-forum-mcphttps://mutualistic-housing--discourse-forum-mcp.apify.actor/mcp
Google Trends Realtime & Entities MCPi0OFE realtime trends, trending/rss news, Knowledge Graph autocomplete entitieshttps://apify.com/mutualistic_housing/google-trends-realtime-mcphttps://mutualistic-housing--google-trends-realtime-mcp.apify.actor/mcp
Substack Newsletter, Posts & Podcast MCPPublication search, archives & within-newsletter search, full post Markdown, podcast audio URLshttps://apify.com/mutualistic_housing/substack-newsletter-mcphttps://mutualistic-housing--substack-newsletter-mcp.apify.actor/mcp
Shopify Store Catalog & Search MCPProducts, variants/SKU/price/availability, collections, predictive search on any public Shopify storehttps://apify.com/mutualistic_housing/shopify-store-catalog-mcphttps://mutualistic-housing--shopify-store-catalog-mcp.apify.actor/mcp