Tony Wang6 分で読めますH&Mを2026年にスクレイピングする方法(API & Python)
2026年にH&Mの商品検索、カテゴリ一覧、カラー別の価格・在庫をスクレイピング——DIY Python、ノーコードツール、または構造化APIで。
2026年に H&M をスクレイピングする最も速い方法は、H&M のストアフロントページを自分でパースするのではなく、キーワード検索、カテゴリ一覧、そして商品詳細の全体を正規化された JSON として返す構造化 API を呼び出すことです。H&M のアプリバックエンドのデータは豊富です(カラーごとの価格、サイズ別のリアルタイム在庫、実際の顧客レビュー)が、それをリクエストできる一般公開の開発者プログラムはなく、閲覧可能な範囲を発見するためのカテゴリツリーのエンドポイントもなく、サイトの前には実際のアンチボットインフラが稼働しています。このガイドでは、DIY のアプローチとそれが破綻する理由、ノーコードの選択肢、そして構造化された H&M API、さらに実際に収集して法的に問題のない範囲について解説します。
なぜ H&M をスクレイピングするのか?
- 価格インテリジェンス — 値下げも含め、1着の商品の価格がカラーをまたいで、また時間とともにどう動くかを追跡します。
- アソートメントとカテゴリのリサーチ — 特定のカテゴリが実際に何を扱っていて、シーズンごとに商品数がどう変化するかを確認します。
- サイズ単位の在庫モニタリング — サイズ×カラー単位の在庫状況は、単に「在庫あり」かどうかではなく、どのサイズが最初に売り切れるかを教えてくれます。
- レビューとセンチメント分析 — 特定の商品や商品ラインの評価の推移とレビューテキストを取得します。
- ファッション小売の競合ベンチマーキング — H&M のカタログの幅広さと価格を、Zara、Zalando、その他のファストファッション小売業者と比較します。
H&M をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
H&M の商品ページは安定した公開 JSON エンドポイントを公開していないため、DIY スクレイパーはレンダリングされたページを取得してパースする必要があります。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www2.hm.com/en_us/productpage.1227171001.html",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Per-color price, per-size stock, and reviews are hydrated from
# app-backend calls, not consistently exposed as selectable markup
一度は動きますが、そこから破綻します。
- 利用規約がボットとクローラーを明示的に禁止している。 H&M の利用規約は「スパイダー、ボット、クローラー、アバター、インテリジェントエージェント」を直接名指ししています——これは曖昧に解釈の余地がある条項ではなく、違反すれば即座にアクセスを遮断されるリスクがあります。
- 実際のアンチボットインフラがサイトの前面に立っている。 素朴で認証のない
requests呼び出しはすぐにチャレンジやブロックを受け、ブラウザベースのスクレイパーも防御側の更新のたびに継続的なメンテナンスが必要になります。 - 閲覧可能な範囲を発見するためのカテゴリツリーのエンドポイントがない。 H&M はナビゲーションツリーやカテゴリのルックアップ呼び出しを公開していません——
ladies_jeansやmen_newarrivals_allのようなストアフロントの URL からカテゴリスラッグをすでに知っているか、そうでなければ入口がないかのどちらかです。 - カラー別・サイズ別のデータが1つのフラットなフィールドに入っていない。 商品ページの本当の詳細——各購入可能なカラーがそれぞれ独自の価格とサイズ別在庫を持つ——はクライアントサイドでハイドレートされる構造化データであり、1つのセレクタで取得できる値ではありません。
- 公式な開発者プログラムがない。 H&M にはストアフロントのカタログ向けのセルフサービス公開 API がないため、外部の開発者がプログラムによるアクセスをリクエストできる正式なチャネルがありません。
選択肢2: ノーコードツール
ブラウザ拡張機能やポイント&クリック型のスクレイパーは、一度きりの取得であれば H&M の検索結果ページをエクスポートできますが、カテゴリスラッグを解決してくれず、カラー別・サイズ別の構造を正規化してくれず、DIY と同じアンチボットの脆さを引き継ぎます——スケジュール実行したいものではありません。
選択肢3: 構造化された H&M API
繰り返し実行できるパイプラインには、Crawlora の H&M APIが H&M 自身のアプリバックエンドのストアフロントデータを構造化された JSON——キーワード検索、カテゴリ一覧、そして商品詳細の全体——に変換してくれます。ページのパースやボット対策のメンテナンスは不要です。キーワードで検索します。
curl "https://api.crawlora.net/api/v1/hm/search?query=denim%20jacket" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "denim jacket",
"count": 24,
"total_count": 187,
"products": [
{
"id": "1227171001",
"name": "Relaxed Fit Denim Jacket",
"price": 44.99,
"currency": "USD",
"url": "https://www2.hm.com/en_us/productpage.1227171001.html",
"image": "https://lp2.hm.com/hmgoepprod?set=source[/33/44/example.jpg]",
"colors": [
{ "color": "Denim blue", "product_id": "1227171001", "in_stock": true },
{ "color": "Black", "product_id": "1227171002", "in_stock": true }
]
}
]
}
}
カテゴリ閲覧とは異なり、検索は行き止まりについて正直です——曖昧なキーワードや無意味なキーワードを渡すと、おすすめ商品へのフォールバックではなく、本当に空の結果が返ります。
スラッグでカテゴリを閲覧します(これには発見用エンドポイントがなく、category_id の値はルックアップ呼び出しではなく既知のストアフロントのパスから得られます)。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/hm"
listing = requests.get(f"{base}/listing", headers=h, params={"category_id": "ladies_jeans"}).json()["data"]
product_id = listing["products"][0]["id"]
detail = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
商品詳細のレスポンスこそが本当の構造の宝庫です——購入可能な各カラーが、それぞれ実際のサイズ別価格とリアルタイムの在庫状況とともにグループ化され、レビューがあればそれも含まれます(正確なフィールドはドキュメントで確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "1227171001",
"name": "Relaxed Fit Denim Jacket",
"colors": [
{
"color": "Denim blue",
"product_id": "1227171001",
"price": 44.99,
"currency": "USD",
"sizes": [
{ "size": "XS", "in_stock": true, "stock_quantity": 12 },
{ "size": "S", "in_stock": true, "stock_quantity": 4 },
{ "size": "M", "in_stock": false, "stock_quantity": 0 }
]
},
{
"color": "Black",
"product_id": "1227171002",
"price": 44.99,
"currency": "USD",
"sizes": [
{ "size": "XS", "in_stock": true, "stock_quantity": 7 }
]
}
],
"rating": 4.2,
"review_count": 38,
"reviews": [
{
"author": "J.",
"rating": 5,
"text": "True to size, good quality denim for the price.",
"date": "2026-06-02"
}
]
}
}
検索と一覧が持つのは、代表的な価格1つとカラーごとの在庫数だけです——正確なサイズ別価格と在庫が必要なときはいつでも、id(または productpage.<id>.html の URL に含まれる数字)に対して商品詳細を呼び出してください。取得ごとにカラー1つにつき1行を product_id をキーにして保存し、スケジュール実行して価格変動やサイズの売り切れを追跡します。
何を収集できるか
公開ストアフロントデータ: 検索結果(id、名前、価格、通貨、画像、カラーごとの在庫数)は、不適切なクエリに対して本当に空の結果を返します。既知の category_id スラッグによるカテゴリ一覧。そして商品詳細の全体——各カラーの実際のサイズ別価格とリアルタイムの在庫状況、レビューがあれば集計評価と顧客レビューも含みます。あくまで公開されている商品ページのデータのみで、アカウント、カート、チェックアウトの情報は対象外です。
制約とよくある課題
- カテゴリツリーの発見用エンドポイントがない。 H&M はカテゴリを列挙する手段を公開していません——
ladies_jeansやmen_newarrivals_allのようなcategory_idスラッグは既知のストアフロントのパスから得る必要があり、自分でスラッグのリストを構築・維持することになります。 - フロントエンドに実際のアンチボットインフラがある。 H&M のサイトに直接、素朴または高頻度の自動リクエストを送るとチャレンジを受けると考えてください。
- 検索と一覧は全体像ではない。 これらが持つのは、カラーごとの代表的な価格1つと在庫数だけです——発見用のレイヤーとして扱い、正確なサイズ別価格と在庫状況が必要なら商品詳細を取得してください。
- レビューは保証されていない。 多くの商品にはレビューがありません。レビューデータの存在を前提にする前に
review_countを確認してください。 - 利用規約がボットとクローラーを明示的に名指ししている。 これを定型文ではなく、実際の制約として扱ってください——公開されている商品ページの事実にとどめ、レート制限を尊重してください。
どこで使われるか
- 価格インテリジェンス — シーズンを通して商品ラインのカラーごとの
priceと値下げを追跡します。 - サイズ単位の在庫モニタリング —
sizes[].in_stockとstock_quantityを監視して、どのサイズが最初に売り切れるかを確認します。 - ファストファッションの競合ベンチマーキング — Zara や Zalando とカテゴリのアソートメントや価格を比較します。
出典
収集を始める
まずは無料で試す: Free Web Scraperで任意の公開 URL を実行するか、Anti-Bot Checkerでサイトがボットをブロックしているかを確認できます——サインアップ不要です。
H&M のデータは、プラットフォーム横断のリサーチのために他のファッション小売 API とも相性が良いです——25市場をカバーするファッションマーケットプレイスについてはZalando のスクレイピング方法を、最も近いファストファッションの比較対象についてはZara のスクレイピング方法を参照してください。Playgroundで検索、一覧、商品の各エンドポイントをテストし、API ドキュメントでスキーマを確認し、料金ページを確認してください。またウェブスクレイピング API の選び方とウェブスクレイピングは合法かも参照してください。
よくある質問
APIでH&Mのカテゴリを閲覧するにはどうすればいいですか?
既知のカテゴリスラッグをCrawloraの/hm/listingエンドポイントに渡します——H&Mはカテゴリ・ナビゲーションツリーの発見用エンドポイントを公開していないため、category_idの値(例: ladies_jeans、men_newarrivals_all)はルックアップ呼び出しではなく、既知のストアフロントのパスから得られます。
曖昧なキーワードに対してH&Mの検索は空の結果を返しますか?
はい——カテゴリ閲覧とは異なり、/hm/searchは曖昧または無意味なキーワードに対して、おすすめ商品セットへのフォールバックではなく、本当に空の結果(商品ゼロ件)を返します。
H&Mの商品について、サイズ別の在庫と顧客レビューを取得できますか?
はい——/hm/product/{product_id}は、購入可能な各カラーを、それぞれ実際のサイズ別価格とリアルタイムの在庫状況とともにグループ化して返し、その商品にレビューがあれば集計評価と顧客レビューも含みます。/hm/listingと/hm/searchが持つのは、代表的な価格1つとカラーごとの在庫数だけです。