公開されているShopifyストアのJSONとサイトマップインターフェースを構造化データに変換し、カタログモニタリング、品揃えリサーチ、商品発見、ストアインテリジェンスのワークフローに活用できます。
構造化出力
CrawloraのShopifyストアデータスクレイピング APIを使えば、Shopify専用のリクエスト処理、URL正規化、パーサー、課金、開発者ドキュメントを自前で維持することなく、対応範囲内の公開ストアJSON、商品、コレクション、ページ、レコメンド、予測検索、サイトマップ記録を収集できます。
ECワークフロー
手動でのストア閲覧ではなく再現可能な構造化レコードが必要なチームにとって、Shopifyストアデータは公開カタログ発見、商品モニタリング、コレクションリサーチ、検索サジェスト分析、ページ発見、サイトマップ監査を支えます。
Shopifyストアインテリジェンスリクエストスキーマ
これらのパラメータは、稼働中の「Get Shopify store metadata」カタログエントリから取得しています。
| パラメータ | 型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| url | string | はい | Shopify storefront URL | - |
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 normalized metadata from credential-free storefront JSON. If the vanity domain blocks `/products.json`, the service may fall back to a public `*.myshopify.com` domain discovered from the storefront page.
レスポンスに関する注記
- 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. - If the classic `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to fetching the storefront's own pages directly and parsing their embedded structured data. When this fallback was used, `transport_mode` is `ssr_embedded`; it is omitted entirely for stores served by the classic catalog JSON. Fallback-mode responses may have fewer populated fields (for example `myshopify_domain` and the `/meta.json`-sourced fields are typically unavailable) since `/meta.json` is also unavailable on these storefronts. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "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 } } ```
MCPツール shopify_store
/shopify/productsReturns normalized products from a public Shopify `/products.json` endpoint. 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 served via the embedded-SSR-JSON fallback transport (`transport_mode: "ssr_embedded"`) and return an invalid-param error if supplied against a classic-transport store, since Shopify's classic public catalog JSON has no server-side sort or filter support.
レスポンスに関する注記
- 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. - If the classic `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to the storefront's own conventional "all products" collection page (`/collections/all`) and parses its embedded search-result payload. When this fallback was used, 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 in fallback mode. `transport_mode`, `total_items`, and `total_pages` are omitted entirely for stores served by the classic catalog JSON. - When the `ssr_embedded` fallback was used, 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 the classic transport. - **Sort and filters are SSR-fallback only.** Shopify's classic public `/products.json` catalog feed has no server-side sort or filter support at all — confirmed live: requesting the same store's classic JSON with a sort applied returns byte-identical product order to the unsorted request. Rather than silently accepting and ignoring `sortBy` or a facet filter against a classic-transport store (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 on the SSR-fallback transport, 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. `sortBy` allowed values: `sortLTH`, `sortHTL`, `newest`. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.allbirds.com", "source_url": "https://www.allbirds.com", "page": 1, "limit": 2, "products": [ { "id": "7188363542608", "handle": "mens-tree-runner-nz-natural-white", "title": "Men's Tree Runner NZ - Natural White (Natural White Sole)", "url": "https://www.allbirds.com/products/mens-tree-runner-nz-natural-white", "price": 100, "available": true } ] } } ```
MCPツール shopify_products
/shopify/products/{handle}Returns normalized product detail from Shopify's credential-free product handle `.js` endpoint.
レスポンスに関する注記
- Product prices from `.js` responses are normalized from cent values to decimal currency units. - Missing product handles return `404` when Shopify returns not found. - Blocked pages, malformed JSON, and missing product fields return upstream errors. - If the classic product `.js` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to fetching the product detail page directly and parsing its embedded structured data — preferring a richer Next.js data block when the storefront exposes one, and falling back further to the page's schema.org JSON-LD `ProductGroup`/`Product` block otherwise. When this fallback was used, 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 stores served by the classic product `.js` endpoint. A product page that carries neither the richer data block nor a matching JSON-LD block returns an upstream error. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.allbirds.com", "source_url": "https://www.allbirds.com", "product": { "id": "7188363542608", "handle": "mens-tree-runner-nz-natural-white", "title": "Men's Tree Runner NZ - Natural White (Natural White Sole)", "price": 100, "images": [{"url": "https://cdn.shopify.com/example.jpg"}] } } } ```
MCPツール shopify_product
/shopify/products/{handle}/recommendationsReturns normalized recommended products from Shopify's credential-free recommendations Ajax endpoint. The route handle is resolved to a Shopify product id before fetching 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. - If the classic recommendations endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to fetching the seed product's own detail page (recommendations are embedded there) and parses its embedded recommendation carousels. When this fallback was used, 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 stores served by the classic endpoint. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_product_recommendations
/shopify/collectionsReturns normalized collections from a public Shopify `/collections.json` endpoint. 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. - If the classic `/collections.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to enumerating collections from the storefront's own `collections` sitemap. When this fallback was used, 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, since no other source for it exists in this mode. `products_count` and other classic-only fields are omitted, never fabricated. `transport_mode` is omitted entirely for stores served by the classic catalog JSON. - 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). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.allbirds.com", "source_url": "https://www.allbirds.com", "page": 1, "limit": 2, "collections": [ { "id": "278435758160", "handle": "mens", "title": "Men", "url": "https://www.allbirds.com/collections/mens", "products_count": 24 } ] } } ```
MCPツール shopify_collections
/shopify/collections/{handle}/productsReturns normalized products from a public Shopify collection `/products.json` endpoint. `sortBy` and dynamic facet-filter query params (e.g. `fit`, `canonicalColour`) only take effect for headless storefronts served via the embedded-SSR-JSON fallback transport (`transport_mode: "ssr_embedded"`) and return an invalid-param error if supplied against a classic-transport store, since Shopify's classic public catalog JSON has no server-side sort or filter support.
レスポンスに関する注記
- 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. - If the classic collection `/products.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to fetching the collection listing page directly (`/collections/{handle}`) and parsing its embedded search-result payload. When this fallback was used, 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 in fallback mode. `transport_mode`, `total_items`, and `total_pages` are omitted entirely for stores served by the classic catalog JSON. - When the `ssr_embedded` fallback was used, 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 the classic transport. - **Sort and filters are SSR-fallback only.** Shopify's classic public collection `/products.json` catalog feed has no server-side sort or filter support at all — confirmed live: requesting the same store's classic JSON with a sort applied returns byte-identical product order to the unsorted request. Rather than silently accepting and ignoring `sortBy` or a facet filter against a classic-transport store (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 on the SSR-fallback transport, 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. `sortBy` allowed values: `sortLTH`, `sortHTL`, `newest`. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport). Example response: ```json { "code": 200, "msg": "OK", "data": { "store_url": "https://www.allbirds.com", "source_url": "https://www.allbirds.com", "collection": "mens", "page": 1, "limit": 2, "products": [ { "handle": "mens-dasher-nz-ochre", "title": "Men's Tree Dasher 2", "price": 135 } ] } } ```
MCPツール shopify_collection_products
/shopify/search/suggestReturns products, collections, and query suggestions from Shopify's credential-free predictive search Ajax endpoint.
レスポンスに関する注記
- Products and collections are normalized to the same shapes used by 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/pagesReturns normalized static pages from a public Shopify `/pages.json` endpoint. Page body HTML is returned as cleaned text only.
レスポンスに関する注記
- 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. - If the classic `/pages.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to enumerating page handles from the storefront's own `pages` sitemap. When this fallback was used, 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; this trade-off avoids an unbounded per-page fetch fan-out for large stores. `transport_mode` is omitted entirely for stores served by the classic catalog JSON. `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 normalized page detail from Shopify's credential-free `/pages/{handle}.json` endpoint. Page body HTML is returned as cleaned text only.
レスポンスに関する注記
- 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. - If the classic `/pages/{handle}.json` endpoint and `*.myshopify.com` domain resolution are both unavailable (some headless Next.js/React storefronts on a Shopify catalog do not expose either), the service falls back to fetching the page's own HTML and parsing an embedded Contentful CMS entry. When this fallback was used, the response includes `transport_mode: "ssr_embedded"`; `content` is plain text rendered from the page's Contentful rich-text blocks (marks/formatting are dropped, non-rich-text blocks such as banners are skipped), and `id` is omitted because the source id is a Contentful entry id, not a Shopify numeric id. `transport_mode` is omitted entirely for stores served by the classic endpoint. `transport_mode` allowed values: `ssr_embedded` (only ever present, never any other value; omitted for the classic transport).
MCPツール shopify_page
/shopify/sitemapsReturns child sitemap URLs from a public Shopify `/sitemap.xml` index with inferred sitemap types.
レスポンスに関する注記
- 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/urlsFetches capped URL entries from Shopify child sitemaps matching the requested type.
レスポンスに関する注記
- 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とサイトマップを読み取ります。リサーチ、モニタリング、品揃え分析を目的としたこれらのデータの収集は、ストアの規約、レート制限、適用法を遵守する限り一般的に許容されます。
Not for general developers. Shopify's own Admin API only returns the data for the store that issued its access token — it can't read another merchant's catalog. Shopify's newer cross-store Catalog API, which normalizes product and pricing feeds across many stores, is invite-only and vetted per partner (Perplexity was its first integration); there is no self-serve signup. Crawlora's endpoints instead read each storefront's own public products.json, collections.json, and search surfaces directly, so any public Shopify store is queryable without a partnership review.
対象企業
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で現在のレスポンススキーマを確認し、料金ページでクレジット利用量を比較できます。