公開されているShopifyストアのJSONとサイトマップインターフェースを構造化データに変換し、カタログモニタリング、品揃えリサーチ、商品発見、ストアインテリジェンスのワークフローに活用できます。
構造化出力
CrawloraのShopifyストアデータスクレイピング APIを使えば、Shopify専用のリクエスト処理、URL正規化、パーサー、課金、開発者ドキュメントを自前で維持することなく、対応範囲内の公開ストアJSON、商品、コレクション、ページ、レコメンド、予測検索、サイトマップ記録を収集できます。
ECワークフロー
手動でのストア閲覧ではなく再現可能な構造化レコードが必要なチームにとって、Shopifyストアデータは公開カタログ発見、商品モニタリング、コレクションリサーチ、検索サジェスト分析、ページ発見、サイトマップ監査を支えます。
Shopifyストアインテリジェンスリクエストスキーマ
これらのパラメータは、稼働中の「Get Shopify store metadata」カタログエントリから取得しています。
| パラメータ | 型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| url | string | はい | Shopify storefront URL | https://www.allbirds.com |
JSON例
この例は稼働中のエンドポイントカタログからレンダリングされるため、ページは常にDocsおよびPlaygroundと同期しています。
{
"code": 200,
"msg": "OK",
"data": {
"requested_url": "https://www.allbirds.com",
"source_url": "https://www.allbirds.com",
"domain": "www.allbirds.com",
"source_domain": "www.allbirds.com",
"name": "Allbirds",
"currency": "USD",
"country": "US",
"published_products_count": 638
}
}エンドポイントカタログ
/shopify/storeResolves a public Shopify storefront and returns its metadata.
レスポンスに関する注記
- Returns the requested storefront URL plus the resolved source URL used for JSON requests. - Includes `myshopify_domain`, store name, currency, country, and published product/collection counts when `/meta.json` exposes them. - Blocked pages, malformed JSON, missing Shopify roots, and unavailable fallback domains return upstream errors. - For some storefronts, `transport_mode` is `ssr_embedded`; it is omitted entirely for other stores. Responses for these stores may have fewer populated fields (for example `myshopify_domain` and the store-metadata fields are typically unavailable). `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_store
/shopify/productsReturns products from a public Shopify storefront. Valid empty result pages return `200` with an empty products array. `sortBy` and dynamic facet-filter query params (e.g. `fit`, `canonicalColour`) only take effect for headless storefronts (`transport_mode: "ssr_embedded"`) and return an invalid-param error if supplied against a classic store, since classic Shopify storefronts have no server-side sort or filter support. `sort_by`, `min_price`, `max_price`, `product_type`, `in_stock_only`, and `option_`-prefixed params (e.g. `option_size=Small,Medium`) drive a separate, independent mechanism -- Shopify's own native Storefront Filtering collection-page feature (`transport_mode: "storefront_filtered"`) -- which works for both classic and headless stores; supplying any of these takes precedence over sortBy/dynamic facet filters.
レスポンスに関する注記
- Valid empty result pages return `200` with an empty `products` array. - Product prices are normalized to decimal currency units. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, `total_items`, and `total_pages` (the storefront's own result-count/page-count metadata), and each product may include additive fields only available from this source: `colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, and per-variant `inventory_quantity`. `limit` is still honored as an upper bound on returned items, but the underlying page size is fixed by the storefront (commonly 60) and cannot be requested larger than that. `transport_mode`, `total_items`, and `total_pages` are omitted entirely for other stores. - When `transport_mode` is `ssr_embedded`, the response may also include `facets` and `facets_stats`, mirroring the storefront's own filter sidebar for that listing: `facets` maps a facet field name exactly as the storefront names it (for example `fit`, `activities`, `canonicalColour`, `sizeInStock`) to its value-to-count buckets, and `facets_stats` gives `min`/`max`/`avg` for numeric-range fields such as `price` and `discountPercentage`. Both are omitted when the storefront's payload did not include facet data, and always omitted for other stores. - **`sortBy` and facet filters apply to `ssr_embedded` stores only.** Rather than silently accepting and ignoring `sortBy` or a facet filter against other stores (which would look like it worked but wouldn't), this endpoint rejects the request with a `400` invalid-param error whenever `sortBy` or any facet-filter query param is supplied and the resolved store is not `transport_mode: "ssr_embedded"`. - When a sort and/or filters were applied to an `ssr_embedded` store, the response echoes back what was actually honored: `sort` (one of the enum values below) and `filters` (a map of facet field name to the array of values that were requested for it, after comma-splitting). Both are omitted when no sort/filter was supplied. - `hitsPerPage` (the storefront's own listing page size, commonly 60) is unaffected by sort/filters; `limit` continues to apply as an upper bound on the returned page. - **Storefront Filtering** (`sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*`) is Shopify's own native collection-page filtering/sorting feature, distinct from the `sortBy`/dynamic-facet-filter pair above. It works for all stores. When any of these params is supplied, the response has `transport_mode: "storefront_filtered"` and echoes back the effective `sort_by`, `min_price`, `max_price`, `product_type`, `in_stock_only`, and `variant_options` that were applied. `facets`/`facets_stats` are populated from the storefront's own filter sidebar when present: `facets` maps a lowercased variant option name (e.g. `size`, `color`) or `product_type` to its value-to-count buckets, and `facets_stats.price` gives the Price slider's own `min`/`max` bounds. `total_pages` is populated only when the collection page itself renders numbered pagination links; a single-page result leaves it unset. Not every Shopify store has this feature enabled — a store without it returns the unfiltered/unsorted collection page, which this endpoint cannot distinguish from "the filter matched everything" without upstream signal. `sortBy` allowed values: `sortLTH`, `sortHTL`, `newest`. `sort_by` allowed values: `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (omitted entirely for the classic transport).
MCPツール shopify_products
/shopify/products/{handle}Returns one product from any Shopify storefront, given the store URL and the product handle: title, description, product type, tags, price and compare-at price, availability, options, images, and each variant with its own price, availability and barcode. Prices are in decimal currency units; an unknown handle returns `404`.
レスポンスに関する注記
- Product prices are returned in decimal currency units rather than cent values. - Missing product handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing product fields return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, and the product may include additive fields only available from this source: `colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, and per-variant `inventory_quantity`. `transport_mode` is omitted entirely for other stores. A product for which no detail data is available returns an upstream error. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_product
/shopify/products/{handle}/recommendationsReturns recommended products from Shopify's product recommendations.
レスポンスに関する注記
- Missing product handles return `404` when Shopify returns not found while resolving the seed product. - Valid empty recommendation arrays return `200` with an empty `products` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, and each product may include the same additive fields documented for `/shopify/products`: `colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, and per-variant `inventory_quantity`. `transport_mode` is omitted entirely for other stores. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_product_recommendations
/shopify/collectionsReturns collections from a public Shopify storefront. Valid empty result pages return `200` with an empty collections array.
レスポンスに関する注記
- Valid empty result pages return `200` with an empty `collections` array. - Blocked pages, malformed JSON, and missing `collections` roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, and `title` is a best-effort derivation from the handle (hyphens become spaces, each word title-cased) — **not** the storefront's real display name. `products_count` and other fields not available for these storefronts are omitted, never fabricated. `transport_mode` is omitted entirely for other stores. - In this fallback mode, `handle` is derived from the last path segment of the collection URL and is not guaranteed unique: some storefronts nest gender/audience-scoped sub-collections under the same final segment (for example `/collections/all-products/womens` and `/collections/legacy/womens` both derive `handle: "womens"`). Use the item's own `url` to identify a specific nested collection rather than assuming `handle` alone round-trips through `GET /shopify/collections/{handle}/products`. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_collections
/shopify/collections/{handle}/productsReturns products from a Shopify collection. `sortBy` and dynamic facet-filter query params (e.g. `fit`, `canonicalColour`) only take effect for headless storefronts (`transport_mode: "ssr_embedded"`) and return an invalid-param error if supplied against a classic store, since classic Shopify storefronts have no server-side sort or filter support. `sort_by`, `min_price`, `max_price`, `product_type`, `in_stock_only`, and `option_`-prefixed params (e.g. `option_size=Small,Medium`) drive a separate, independent mechanism -- Shopify's own native Storefront Filtering collection-page feature (`transport_mode: "storefront_filtered"`) -- which works for both classic and headless stores; supplying any of these takes precedence over sortBy/dynamic facet filters.
レスポンスに関する注記
- Valid empty result pages return `200` with an empty `products` array. - Missing collections return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing `products` roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, `total_items`, and `total_pages` (the storefront's own result-count/page-count metadata), and each product may include additive fields only available from this source: `colour`, `canonical_colour`, `discount_percentage`, `rating`, `rating_count`, `collection_tags`, `labels`, and per-variant `inventory_quantity`. `limit` is still honored as an upper bound on returned items, but the underlying page size is fixed by the storefront (commonly 60) and cannot be requested larger than that. `transport_mode`, `total_items`, and `total_pages` are omitted entirely for other stores. - When `transport_mode` is `ssr_embedded`, the response may also include `facets` and `facets_stats`, mirroring the collection page's own filter sidebar: `facets` maps a facet field name exactly as the storefront names it (for example `fit`, `activities`, `canonicalColour`, `sizeInStock`) to its value-to-count buckets, and `facets_stats` gives `min`/`max`/`avg` for numeric-range fields such as `price` and `discountPercentage`. Both are omitted when the storefront's payload did not include facet data, and always omitted for other stores. - **`sortBy` and facet filters apply to `ssr_embedded` stores only.** Rather than silently accepting and ignoring `sortBy` or a facet filter against other stores (which would look like it worked but wouldn't), this endpoint rejects the request with a `400` invalid-param error whenever `sortBy` or any facet-filter query param is supplied and the resolved store is not `transport_mode: "ssr_embedded"`. - When a sort and/or filters were applied to an `ssr_embedded` store, the response echoes back what was actually honored: `sort` (one of the enum values below) and `filters` (a map of facet field name to the array of values that were requested for it, after comma-splitting). Both are omitted when no sort/filter was supplied. - `hitsPerPage` (the storefront's own listing page size, commonly 60) is unaffected by sort/filters; `limit` continues to apply as an upper bound on the returned page. - **Storefront Filtering** (`sort_by`/`min_price`/`max_price`/`product_type`/`in_stock_only`/`option_*`) is Shopify's own native collection-page filtering/sorting feature, distinct from the `sortBy`/dynamic-facet-filter pair above. It works for all stores. When any of these params is supplied, the response has `transport_mode: "storefront_filtered"` and echoes back the effective `sort_by`, `min_price`, `max_price`, `product_type`, `in_stock_only`, and `variant_options` that were applied. `facets`/`facets_stats` are populated from the collection page's own filter sidebar when present: `facets` maps a lowercased variant option name (e.g. `size`, `color`) or `product_type` to its value-to-count buckets, and `facets_stats.price` gives the Price slider's own `min`/`max` bounds. `total_pages` is populated only when the collection page itself renders numbered pagination links; a single-page result leaves it unset. Not every Shopify store has this feature enabled — a store without it returns the unfiltered/unsorted collection page, which this endpoint cannot distinguish from "the filter matched everything" without upstream signal. `sortBy` allowed values: `sortLTH`, `sortHTL`, `newest`. `sort_by` allowed values: `manual`, `best-selling`, `title-ascending`, `title-descending`, `price-ascending`, `price-descending`, `created-ascending`, `created-descending`. `transport_mode` allowed values: `ssr_embedded`, `storefront_filtered` (omitted entirely for the classic transport).
MCPツール shopify_collection_products
/shopify/search/suggestReturns predictive search suggestions from any Shopify storefront for a query: matching products, collections and suggested queries. Choose which with `types` (default all three) and cap results per type with `limit` (default 10, max 20). Products carry price, availability, images and options; collections carry title, handle, description and product count.
レスポンスに関する注記
- Products and collections use the same shapes as the Shopify product and collection endpoints. - Query suggestions include text and a storefront search URL when Shopify provides one. - Valid empty suggestion arrays return `200` with empty arrays. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors.
MCPツール shopify_search_suggest
/shopify/pagesLists static pages from a Shopify storefront given by the required `url`, paged with `page` (from 1) and `limit` (default 50, max 250). Each has `handle`, `title`, `url`, plain-text `content` and dates. If `transport_mode` is `ssr_embedded`, items hold only `handle`, `url` and `updated_at`.
レスポンスに関する注記
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Valid empty page arrays return `200` with an empty `pages` array. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`, and each item only carries `handle`, `url`, and `updated_at` — no `title`, `id`, or `content`. Call `GET /shopify/pages/{handle}` per handle to get full content. `transport_mode` is omitted entirely for other stores. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_pages
/shopify/pages/{handle}Returns one static page from any public Shopify storefront, by path `handle` and the required `url` of the store. The response has the page's title, URL, times and its `content` as plain text. Unknown handles return 404. Localhost, private-network and credentialed URLs are rejected.
レスポンスに関する注記
- Page content is cleaned text from Shopify `body_html`; raw HTML is not returned. - Missing page handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing Shopify roots return upstream errors. - For some storefronts, the response includes `transport_mode: "ssr_embedded"`; `content` is plain text rendered from the page's rich-text blocks (marks/formatting are dropped, non-rich-text blocks such as banners are skipped), and `id` is omitted because it is not a Shopify numeric id. `transport_mode` is omitted entirely for other stores. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_page
/shopify/sitemapsLists the child sitemaps in a Shopify storefront's sitemap index, for the required `url`. Each has a `loc` and a `type` (`products`, `collections`, `pages`, `blogs`, `agentic_discovery` or `other`) inferred from its URL. Localhost, private-network and credentialed URLs are rejected.
レスポンスに関する注記
- Sitemap `type` is inferred from the child sitemap URL. - Inferred sitemap types are `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, and `other`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors.
MCPツール shopify_sitemaps
/shopify/sitemap/urlsLists URL entries from a Shopify storefront's sitemaps, for the required `url`. `type` filters (`all` by default, `products`, `collections`, `pages`, `blogs`, `agentic_discovery`, `other`) and `limit` caps entries (default 50, max 250). Each has `loc`, `type`, `handle`, `lastmod`, `changefreq` and optional `images`.
レスポンスに関する注記
- The service fetches matching child sitemaps from `/sitemap.xml` until `limit` URL entries is reached. - URL entries include `loc`, inferred `type`, `handle`, `lastmod`, `changefreq`, and optional `images`. - Blocked pages, malformed XML, and missing sitemap entries return upstream errors.
MCPツール shopify_sitemap_urls
マネージド実行
Crawloraは、対応する公開ShopifyストアのJSONとサイトマップの処理を、APIキー保護エンドポイントとしてカプセル化し、正規化されたレスポンス、ドキュメント化されたエラー、Playgroundのサンプル、クレジットベースの利用課金を提供します。
ストア、商品、コレクション、ページ、レコメンド、検索サジェスト、サイトマップの各処理に対応するエンドポイント別リクエスト処理
localhost、プライベートネットワーク、link-local、認証情報付きURLを拒否するURL検証
取得可能な範囲での商品、コレクション、ページ、レコメンド、サイトマップフィールドの正規化
発見されたmyshopify.comドメインで公開データを公開しているストアに対するソースURL解決
ブロック、フォーマット不正、未検出、ルートパス欠落などの上流障害に対するドキュメント化された挙動
DocsとPlaygroundのページは稼働中のエンドポイントカタログから生成
自社構築との比較
スクレイピングインフラを社内で維持するか、マネージドエンドポイントを呼び出すかの判断にご活用ください。
| 要件 | 自社構築 | Crawlora |
|---|---|---|
| エンドポイントカバレッジ | ストアメタデータ、商品、コレクション、ページ、レコメンド、検索サジェストごとに個別のクローラーを保守します。 | 1つのCrawlora APIインターフェースからドキュメント化されたShopifyストアエンドポイント群を利用できます。 |
| URLとソースの処理 | 信頼できないストアURLを自分で検証し、公開ソースドメインへのフォールバックロジックを自前で実装します。 | Crawloraの検証とエンドポイント別のソースURL処理を利用できます。 |
| スキーマの正規化 | 商品、コレクション、ページ、レコメンドのモデルを自分で設計します。 | DocsとPlaygroundで正規化されたJSONサンプルとスキーマを受け取れます。 |
| 利用量課金 | 計測とプロセスごとの料金モデルを自前で構築します。 | クレジットベースのエンドポイント重み付けとAPIキー利用トラッキングを利用できます。 |
CrawloraはShopify公式のAdmin API、Storefront API、Checkout API、Partner APIではありません。Crawloraは、対応する公開Shopifyストアページ、JSON、サイトマップの処理を対象とした構造化Web公開データ抽出エンドポイントを提供します。アカウントに紐づく商取引データ、注文、チェックアウト、顧客記録、在庫管理、店舗管理、公式アプリ統合が必要なユースケースには、Shopify公式APIをご利用ください。お客様は、適用法、第三者の権利、プラットフォーム規約、店舗規約、Crawloraの規約に自らの利用が準拠していることを確認する責任を負います。
関連API
このエンドポイントを、関連するCrawloraの検索、モニタリング、ドキュメント、料金の各ページと組み合わせて活用できます。
公開されているShop.appの商品、ストア、レビュー、カテゴリ、サジェスト、バリエーションデータのワークフローをリサーチできます。
開くAmazonの商品と検索結果モニタリングをECマーケットプレイスワークフローに統合できます。
開くリセールとマーケットプレイスリサーチのために、eBayの商品、検索、セラーのデータを収集できます。
開く公開されているShopifyのカタログ、ページ、検索サジェスト、サイトマップのワークフローを設計できます。
開くShopifyストアデータを、より広範なEC商品インテリジェンスワークフローと組み合わせられます。
開くShopifyをはじめとするマーケットプレイスエンドポイントのクレジット利用量を確認できます。
開くShopifyのスクレイピング方法
CrawloraのShopifyエンドポイントは、任意の公開ストアのurlを受け付けるGETリクエストで、Shopifyの認証不要な公開インターフェースを読み取ります。/shopify/storeはストアを解決してメタデータを返し、/shopify/productsと/shopify/collectionsは公開のproducts.jsonとcollections.jsonインターフェース(pageとlimitに対応)を読み取ります。/shopify/collections/{handle}/productsは特定のコレクションを巡回し、/shopify/products/{handle}はhandleの.jsエンドポイント経由で商品詳細を返します。/shopify/products/{handle}/recommendationsはレコメンドAjaxインターフェース(intentはrelatedまたはcomplementary)を読み取り、/shopify/search/suggestは予測検索を読み取ります。/shopify/pagesと/shopify/pages/{handle}は静的ページをクリーンなテキストとして読み取り、/shopify/sitemapsと/shopify/sitemap/urlsはサイトマップインデックスを巡回します。従来型のインターフェースを持たないヘッドレスストアの場合は、ストア自体に埋め込まれた検索データを読み取るフォールバックが働き、facets、sortBy、ファセットフィルターパラメータも追加で提供されます。
GET /shopify/store?url=<ストアURL>は、認証不要のストアJSONから正規化されたストアメタデータを返します。カスタムドメインがproducts.jsonをブロックしている場合、サービスはストアの公開myshopify.comドメインにフォールバックすることがあります。
GET /shopify/products?url=<ストア>&page=1&limit=<n>は公開商品フィードを、/shopify/collectionsはコレクション一覧を、/shopify/collections/{handle}/productsは特定のコレクションの商品を取得します。空のページはステータスコード200と空配列を返すため、これが末尾に達したかどうかの判断方法になります。
GET /shopify/products/{handle}?url=<ストア>は商品の完全な詳細を、GET /shopify/products/{handle}/recommendations(intent=relatedまたはcomplementary)はそのストアの関連レコメンドを取得します。handleは自動的にShopifyの商品idに解決されます。
GET /shopify/sitemaps?url=<ストア>はサブサイトマップとその推測されたタイプを一覧し、/shopify/sitemap/urls?type=productsはその項目を巡回します。/shopify/search/suggest?q=<term>は予測検索を読み取り、/shopify/pagesおよび/shopify/pages/{handle}は静的ページをクリーンなテキストとして返します。
FAQ
対応する公開検索結果ページ向けにCrawloraを評価している開発者向けの回答です。
はい。Crawloraは、対応する公開ストアメタデータ、商品、商品詳細、レコメンド、コレクション、コレクション商品、ページ、予測検索サジェスト、サイトマップ、サイトマップURL向けのShopifyエンドポイントを提供します。
いいえ。CrawloraはShopify公式のAdmin API、Storefront API、Checkout API、Partner APIではなく、店舗のアプリ統合でもありません。対応する公開Shopifyストアページ向けの公開Webデータ抽出を提供します。
現在のカタログには、ストアメタデータ、公開商品、商品詳細、レコメンド、コレクション、コレクション商品、公開ページ、予測検索サジェスト、サブサイトマップ、対応範囲内で件数上限付きのサイトマップURL項目が含まれます。
できません。CrawloraのShopifyエンドポイントは、対応範囲内の公開ストアデータのみを対象としています。アカウントに紐づく商取引、注文、チェックアウト、顧客、在庫管理のワークフローには、Shopify公式APIをご利用ください。
できます。公開ストアデータが取得可能な範囲で、Shopifyの商品、商品詳細、コレクション、コレクション商品の各エンドポイントは責任あるカタログモニタリングを支えられます。
できます。取得可能な範囲で、Shopifyのサイトマップエンドポイントはサブサイトマップの項目に加え、商品・コレクション・ページ・ブログ・エージェント発見可能性など推測されたサイトマップタイプ別の件数上限付きURL行を一覧できます。
ストアのurlをCrawloraの/shopify/storeエンドポイントに渡して解決し、次にGET /shopify/products、/shopify/collections、/shopify/collections/{handle}/productsを呼び出してカタログを巡回し、/shopify/products/{handle}で詳細を取得します。Shopifyの認証情報は不要です。これらのエンドポイントはShopifyの公開ストアJSONを読み取ります。
多くの場合対応しています。カスタムドメインがこのインターフェースをブロックしている場合、サービスは公開myshopify.comドメインにフォールバックすることがあります。このインターフェースを完全に持たないヘッドレスストアの場合は、ストア自体に埋め込まれた検索データを解決し、これによりfacets、sortBy、ファセットフィルターパラメータも公開されます。
埋め込み検索フォールバックで提供されるヘッドレスストアの場合のみ可能で、その場合sortByとファセットフィルターのクエリパラメータがストア自体の検索インデックスに転送されます。従来型のストアが公開するproducts.jsonにはサーバー側のソートやフィルター機能はなく、その場合/shopify/collections/{handle}/productsエンドポイントは、これらのパラメータを黙って無視する代わりに型付きの400エラーを返します。
/shopify/products/{handle}/recommendationsエンドポイントに、ストアのurlとintent=relatedまたはintent=complementaryを渡します。handleを商品idに解決した後、Shopifyの認証不要なレコメンドAjaxインターフェースを読み取ります。
これらのエンドポイントは、Shopifyが認証不要で公開アクセス可能にしているストアJSONとサイトマップを読み取ります。リサーチ、モニタリング、品揃え分析を目的としたこれらのデータの収集は、ストアの規約、レート制限、適用法を遵守する限り一般的に許容されます。
一般の開発者向けにはありません。ShopifyのAdmin APIは、そのアクセストークンを発行したストア自身のデータしか返さず、他の加盟店のカタログを読み取ることはできません。複数ストアの商品・価格フィードを正規化する新しいクロスストアCatalog APIは招待制でパートナーごとに審査されます(Perplexityがその最初の統合先です)。セルフサービスでの申し込みはできません。Crawloraのエンドポイントは代わりに各ストアが公開しているproducts.json、collections.json、検索インターフェースを直接読み取るため、パートナー審査なしに任意の公開Shopifyストアを照会できます。
対象企業
Shopify Inc. · SHOP
Shopifyを運営するのはShopify Inc.(SHOP)です。CrawloraのSECエンドポイントは同じ企業のCIKを受け取るため、提出書類・財務・インサイダー取引・13F保有を上記のShopifyエンドポイントと同じAPIキーで取得できます。
カタログ内の他のShopify Inc.プラットフォーム
Guides
Read Crawlora guides and comparisons that use the Shopify API.
PlaygroundでShopifyストアメタデータをテストし、Docsで現在のレスポンススキーマを確認し、料金ページでクレジット利用量を比較できます。