Tony Wang6 分で読めます2026年に Sam's Club をスクレイピングする方法(API & Python)
2026年に Sam's Club の商品データをスクレイピング — 価格・在庫状況・画像・評価を構造化 JSON で取得。商品詳細専用で検索エンドポイントはありません。
2026年に Sam's Club をスクレイピングする最も手早い方法は、Sam's Club のページを自分で解析するのではなく、商品の完全な詳細向けに正規化された JSON を返す構造化 API を呼び出すことです。この API は意図的に範囲が狭く、商品詳細専用です。検索エンドポイントが存在しないのは、Sam's Club 自身の robots.txt が検索結果のクロールを禁止しているためです — これは法的な主張ではなく、実際に確認できる技術的なシグナルです。そのためワークフローは、キーワードクエリではなく URL から取得した商品 id から始まります。このガイドでは DIY、ノーコード、構造化 API のそれぞれが何を返すか、DIY がどこで破綻するか、そして法律とアクセスに関する基本を取り上げます。
なぜ Sam's Club をスクレイピングするのか?
Sam's Club の商品データは次のような用途を支えます。
- 価格インテリジェンス — 大容量商品やクラブ限定商品の価格が時間とともにどう動くかを追跡します。
- 品揃えリサーチ — 既知の商品 id のセットの詳細を取得することで、あるカテゴリにどの商品が置かれているかを把握します。
- レビュー・評価トラッキング — 商品ラインの総合評価とレビュー件数のトレンドを追跡します。
- 在庫状況の監視 — 追跡している商品が廃盤や入れ替えになる前に、まだ在庫があるかどうかを確認します。
- カタログの拡充 — 他のソースから取得した既存の商品レコードに、クラブ独自のアイテム番号、画像、カテゴリのパンくずを付加します。
Sam's Club をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
直接呼び出せる公開 JSON エンドポイントが存在しないため、DIY のスクレイパーはレンダリングされた商品ページを取得して解析する必要があります。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.samsclub.com/ip/some-product-name/1234567",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Price, rating, and item number are embedded in page data, not
# consistently exposed as selectable markup
デモは動きますが、その後破綻します。
- 検索ページも意図的にスクレイピングできないようになっている。 Sam's Club の robots.txt は検索結果のクロールを禁止しているため、DIY の検索スクレイパーであっても、単なる技術的な壁ではなく、サイト自身が明示したクロールポリシーと最初から戦うことになります。
- 何をリクエストするにも先に商品 id が必要になる。 id は商品自身の
/ip/{slug}/{id}という URL にしか現れません — キーワードから id を引くルックアップは存在しないため、サイトマップ、カテゴリページ、または既存のカタログから id を取得する必要があります。 - アンチボット対策がサイトの前面に立っている。 ルーティンで未認証のリクエストパターンはすぐにチャレンジやブロックを受け、ブラウザベースのスクレイパーも防御の更新に合わせて継続的なメンテナンスが必要です。
- 公式のサードパーティ API がない。 Sam's Club には外部からの商品データアクセス向けのセルフサービス型デベロッパープログラムがありません。
選択肢2: ノーコードツール
Sam's Club を扱うマーケットプレイス製スクレイパーアクターは存在し、既知の短い商品リストの単発取得には向いていますが、DIY と同じアンチボットへの脆さを引き継いでおり、検索ページの欠如を回避することもできず、パイプラインを構築できる安定したバージョン管理されたスキーマも提供されません。
選択肢3: 構造化された Sam's Club API
繰り返し実行するワークフローには、Crawlora の Sam's Club API が商品詳細向けに正規化された JSON を返し、ページ解析もボット対策のメンテナンスも不要です。このシリーズのほとんどのプラットフォームとは異なり、/samsclub/search エンドポイントはありません。商品ページの URL(サイトマップ、カテゴリ一覧、または自分のカタログ)から商品 id を取得し、そのまま完全な詳細を解決します。
curl "https://api.crawlora.net/api/v1/samsclub/product/1234567" \
-H "x-api-key: $CRAWLORA_API_KEY"
Python では、既知の商品 URL から数値の id を取り出し、同じエンドポイントを呼び出します。
import re
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/samsclub"
product_url = "https://www.samsclub.com/ip/some-product-name/1234567"
product_id = re.search(r"/(\d+)$", product_url).group(1)
detail = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
商品詳細のレスポンスは正規化された JSON です(フィールドの完全な一覧はドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"id": "1234567",
"item_number": "980156423",
"title": "Member's Mark 24-Pack Purified Water, 16.9 fl oz",
"brand": "Member's Mark",
"description": "Purified drinking water in individual bottles, packaged for home and event use.",
"category": ["Grocery", "Beverages", "Water"],
"price": 4.98,
"availability": "IN_STOCK",
"images": [
"https://scene7.samsclub.com/is/image/samsclub/0078742213456_A"
],
"rating": 4.7,
"rating_count": 2143
}
}
取得のたびに id またはクラブ独自の item_number をキーとして商品ごとに1行を保存し、スケジュールを組んで再実行することで price の変化や availability の切り替わりを追跡しましょう。
収集できるもの
すでに持っている商品 id をキーとした、公開されている商品詳細データです。ブランド、説明、カテゴリのパンくず、価格、在庫状況、画像、レビュー件数付きの総合評価、クラブ独自のアイテム番号が含まれます。キーワードから新しい id を発見するための検索、閲覧、カテゴリ一覧エンドポイントは存在せず、id は自分で用意する必要があります。あくまで公開されている商品ページのデータのみであり、会員のアカウント・注文・支払い情報や個々のレビュー本文は含まれません(このエンドポイントが返すのはレビュー単位の詳細ではなく、総合評価と件数です)。
制約とよくある課題
- 検索エンドポイントは意図的にない。 Sam's Club の robots.txt が検索結果のクロールを禁止しているため、この API を通じてキーワードから商品 id のセットにたどり着く方法はありません — id の外部ソース(サイトマップ、カテゴリページ、または自分のカタログ)が必要です。
- フロントエンドのアンチボット対策。 samsclub.com への素朴な、または高頻度の自動リクエストはチャレンジを受けると想定してください。
- スキーマに会員フラグがない。 商品詳細は、他の倉庫型クラブのデータで見られるような会員必須フィールドを公開していません — スクレイピングした
priceは、確定した会員限定価格や非会員価格ではなく、表示価格として扱ってください。 - 全国一括エクスポートはない。 Sam's Club の全カタログの公式フィードは存在しません。カバレッジは、あなたが維持する商品 id のリストの質に左右されます。
- 公開データのみ。 これは商品ページがすでに公開している内容であり、会員ログインを回避したりアカウントレベルのデータに入り込んだりする手段ではありません。
どこで使われるか
- 価格インテリジェンス — 大容量商品やクラブブランド商品の固定ウォッチリストで
priceとavailabilityを時系列で追跡します。 - カタログの拡充 — 他のソースから取得した商品レコードに
item_number、images、categoryを付加します。 - 評価モニタリング — 商品ラインのリリースごとに
rating/rating_countのトレンドを追跡します。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
商品詳細のエンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。同じ会員制倉庫型クラブのパターンで、より完全な検索から詳細までのフローを見るならCostco のスクレイピング方法を、最も近い総合小売の親会社を見るならWalmart のスクレイピング方法を、別のビッグボックス競合を見るならTarget のスクレイピング方法をご覧ください。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
この API で Sam's Club の商品を検索できますか?
いいえ — このプラットフォームは商品詳細のみに限定されています。Sam's Club 自身の robots.txt が検索結果のクロールを禁止しているため、/samsclub/search エンドポイントは提供されていません。
API 用に Sam's Club の商品をどうやって特定しますか?
商品自身の /ip/{slug}/{id} という URL から数値の id を取得し、それを /samsclub/product/{id} に渡してください。
API で Sam's Club の商品のカスタマーレビューを取得できますか?
/samsclub/product/{id} は総合評価とレビュー件数を返しますが、個々のレビュー本文はこのエンドポイントからは取得できません。