Tony Wang6 分で読めますMacy's のスクレイピング方法(2026年、API & Python)
2026年に Macy's の商品詳細をスクレイピング——セールを考慮した価格、在庫状況、画像、カラーバリエーションごとの価格を構造化 JSON として取得。DIY、ノーコード、API のいずれでも。
2026年に Macy's をスクレイピングする最も手早い方法は、Macy's の商品ページを自分でパースするのではなく、商品詳細——セールを考慮した価格、在庫状況、画像、集計評価、各カラーバリエーションごとの価格——を正規化された JSON として返す構造化 API を呼び出すことです。Macy's, Inc.(Bloomingdale's も傘下に持つ)の一員である Macy's には、セルフサービス型の公開 API がなく、その商品データはセールに左右されカラーにも依存することが多いため、単一の「price」フィールドだけでは全体像のほとんどを見落としてしまいます。このガイドでは3つのアプローチすべてを取り上げ、それぞれが何を返すか、DIY がどこで破綻するか、そして法律上の基本を解説します。またこのガイドは意図的にスコープを絞っています——これは商品詳細のガイドであり、検索やカテゴリ閲覧のガイドではありません。
なぜ Macy's をスクレイピングするのか?
Macy's の商品データは次のような用途を支えます。
- セールと値下げの追跡 — Macy's の価格設定は頻繁なセールの上に成り立っているため、商品のセールを考慮した価格を時系列で追跡すると、単なる静的な定価ではなく実際の値下げパターンが見えてきます。
- カラーバリエーションの価格リサーチ — 同じスタイルでもカラーごとに価格が異なることがあります。バリエーションごとの価格を見ることで、どのカラーが値下げされていてどれがそうでないかを把握できます。
- アソートメントとブランドのリサーチ — 商品に付与された部門、ディビジョン、カテゴリのパンくずリストのフィールドを使えば、Macy's 自身のマーチャンダイジング構造の中でその商品を位置づけられます。
- レビューと評価の分析 — 商品ごとの集計評価データは、スタイルやブランドの評判追跡に役立ちます。
- 在庫の監視 — 特定の商品が売り切れる前に在庫があるかどうかを確認できます。
Macy's をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
Macy's の商品ページは安定した公開 JSON エンドポイントではなくサーバーサイドのデータからレンダリングされるため、DIY のスクレイパーはレンダリングされたページを取得してパースする必要があります。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.macys.com/shop/product/example-product?ID=1234567",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Sale pricing, per-color-variant price, availability, and rating are
# embedded in page data, not consistently exposed as selectable markup
デモは動きますが、その後破綻します。
- 公式なサードパーティ API がない。 Macy's にはセルフサービス型の開発者プログラムがなく、外部の開発者がプログラムによるアクセスをリクエストできる公認の方法はありません。
- ボット対策がサイトの前面にある。 通常の認証なしリクエストがチャレンジやブロックを受けることがあり、ブラウザベースのスクレイパーは対策の更新に合わせて継続的なメンテナンスが必要になります。
- 価格はセールに左右されカラーにも依存し、単一のフィールドではない。 商品の価格は実施中のセールによって変わり、同じスタイルの異なるカラーバリエーションが日常的に異なる価格を持ちます——単一の
priceの取得ではその両方を見落とします。 - DIY で構築しても、検索やカテゴリのエンドポイントに頼れない。 Macy's のカタログをキーワードやカテゴリで列挙する、文書化された安定した方法はありません——商品ページから商品 ID を取得するところから始める必要があります。
選択肢2: ノーコードツール
Macy's 向けのマーケットプレイスのスクレイパーアクターは存在し、既知の商品 ID の短いリストを一度だけ取得する用途には向いていますが、DIY と同じアンチボットの脆さを引き継いでおり、パイプラインを構築するための安定したバージョン管理されたスキーマ——セールを考慮したバリエーションごとの価格——を提供してくれません。
選択肢3: 構造化された Macy's API
Crawlora のMacy's APIは商品詳細——セールを考慮した価格、在庫状況、画像、集計評価、購入可能な各カラーバリエーションごとの価格——を正規化された JSON として返します。商品詳細のみの対応で、検索やカテゴリ一覧のエンドポイントはありません。そのため、API 呼び出しではなく、Macy's の商品ページ URL の ?ID= クエリパラメータから取得した商品 ID から始めます。
curl "https://api.crawlora.net/api/v1/macys/product/1234567" \
-H "x-api-key: $CRAWLORA_API_KEY"
Python では次のようになります。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/macys"
# productId comes from a Macy's product page URL's ?ID= query parameter —
# Crawlora's Macy's coverage has no search endpoint to resolve it for you
product_id = "1234567"
detail = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
商品詳細のレスポンスは正規化された JSON です(完全なスキーマはドキュメントで確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "1234567",
"name": "Women's Quilted Puffer Coat",
"brand": "Calvin Klein",
"department": "Women",
"division": "Coats",
"breadcrumbs": ["Women", "Clothing", "Coats", "Puffer Coats"],
"price": {
"current": 89.99,
"regular": 150.00,
"on_sale": true
},
"availability": "in_stock",
"rating": {
"average": 4.3,
"count": 212
},
"images": [
"https://slimages.macysassets.com/is/image/MCY/products/1/optimized/example_fpx.jpg"
],
"variants": [
{ "color": "Black", "price": 89.99, "available": true },
{ "color": "Camel", "price": 99.99, "available": true },
{ "color": "Navy", "price": 89.99, "available": false }
]
}
}
product_id ごとに1行ずつ保存し、スケジュールを組んで再実行すれば、price.current、price.on_sale、そして各バリエーションの price と available フラグの変化を時系列で追跡できます。
収集できるもの
既知の商品 ID に対する公開商品ページのデータです。商品名、ブランド、部門、ディビジョン、カテゴリのパンくずリスト、セールを考慮した価格(current、regular、on_sale)、在庫状況、画像、集計評価(average、count)、そして購入可能な各カラーバリエーションごとの価格と在庫状況です。あくまで公開されている商品詳細データのみで、検索やカテゴリ一覧のエンドポイントはなく、アカウント、注文、支払い情報は決して含まれません。
制約とよくある課題
- 検索やカテゴリ一覧のカバレッジがない。 これは商品詳細のみのエンドポイントであり、呼び出す前に商品 ID が必要です。ID は Crawlora の検索呼び出しからではなく、Macy's の商品ページ URL(数値の
?ID=クエリパラメータ)から取得してください。 - セルフサービス型の公開 API がない。 Macy's には外部アクセス向けの公式な開発者プログラムがなく、リクエストできる公認の窓口はありません。
- エッジでのボット対策。 macys.com への素朴な、または高頻度な自動リクエストはチャレンジを受けると想定してください。
- 価格はセールに左右されカラーにも依存する。 商品の価格は実施中のセールによって変わり、異なるカラーバリエーションが異なる価格を持つことがあります——単一の商品レベルの価格ではなく、バリエーションごとの
price.currentを実際の数値として扱ってください。 - 全国規模の一括エクスポートがない。 Macy's の全カタログの公式フィードはなく、検索エンドポイントがないため、カバレッジは既に持っている商品 ID に限られます。
- 公開データのみ。 これは商品ページがすでに公開している内容であり、ログインを回避したりアカウントレベルのデータに入り込んだりする手段では決してありません。
どこで使われるか
- 値下げの追跡 — Macy's の頻繁なセールサイクルを通じて、特定のスタイルの
price.currentとprice.on_saleを監視します。 - カラーバリエーションの価格リサーチ — 一つのスタイル内でカラーごとの価格と在庫状況を比較し、どのカラーが値下げされているかを把握します。
- アソートメントのマッピング —
department、division、パンくずリストのフィールドを使って、追跡している商品を Macy's のマーチャンダイジング構造の中に位置づけます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
商品エンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。同じ大手量販店・検索プラス詳細のパターンを持つ別のチェーンについては、Target をスクレイピングする方法をご覧ください。最も近い総合小売の競合については、Walmart をスクレイピングする方法をご覧ください。また、別のデパートスタイルのカタログについては、Kohl's をスクレイピングする方法をご覧ください。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
API で Macy's の商品を検索できますか?
直接はできません——Crawlora の Macy's 対応は商品詳細のみ(/macys/product/{productId})で、検索やカテゴリ一覧のエンドポイントはまだありません。productId は Crawlora の検索呼び出しからではなく、Macy's の商品ページ URL(数値の ?ID= クエリパラメータ)から取得してください。
Macy's の商品エンドポイントはセール価格を検出しますか?
はい——/macys/product/{productId} は、在庫状況、画像、集計評価、そして購入可能な各カラーバリエーションごとの独自の価格とともに、セールを考慮した価格を返します。