StockXとGOATの再販データを市場調査のためにスクレイピングする方法

公式のStockX APIは販売者向けに設計されており、1日に25,000回のコールに制限されています。市場調査のためには公開ページにアクセスする必要があります。ここでは、価格履歴、サイズの分布、人気のシグナルをきれいに抽出する方法を紹介します。

スニーカーの再販は実際の市場であり、実際の価格発見が行われています。StockXとGOATはその2つの最大のオーダーブックです。その市場を研究したい場合—価格履歴を追跡し、サイズの分布を測定し、どのリリースが盛り上がっているかを見つける—直感的に公式のStockX APIを使いたくなりますが、それは通常、間違ったツールです。StockXの開発者APIは販売者向けに設計されており、OAuth 2.0で認証され、承認ゲートの背後にあり、リストや注文の管理を行うために存在し、1秒あたり1回のリクエストで24時間あたり25,000リクエストに制限されており、それを超えるとすぐに429エラーが発生します。それは販売者に自分の在庫を提供しますが、研究者に市場全体を提供するものではありません。市場調査のためのデータは公開された商品ページにあります。このガイドでは、それをきれいに収集する方法を示します。

なぜ公式のStockX APIは研究には不向きなのか

開発者ポータルはその目的を明確にしています:カタログ検索、リスト管理、注文管理です。プラットフォーム上の販売者でさえ、最初にAPIアクセスの承認を得るのに長い待ち時間や拒否を報告しています。そして、レートの上限—1日25,000コール、バッチ操作は5分ごとに500アイテムまで、1日最大50,000アイテム—は自分のショップを運営するには寛大ですが、複数のサイズと両方のマーケットプレイスで数千のスタイルを調査するには小さいです。重要なのは、研究者が求める歴史的な市場フィードを提供しないことです—年間の高値と安値、ボラティリティ、小売価格に対する価格プレミアム、サイズごとの販売速度は、公開ページに表示されるものであり、バルク研究エンドポイントとして公開されていません。

したがって、実際の分割はシンプルです。自分の要求を自動化する販売者であれば公式APIを使用し、価格インテリジェンスやトレンド研究を行う場合は、公開ページを責任を持って収集します。同じ論理が再販と小売全体に適用されます—私たちは大規模な価格モニタリングで一般的なバージョンを歩きます。

APIが解決できないカバレッジの問題もあります。再販価格は地理的に敏感です:同じペアが米国市場では異なるプレミアムを持ち、ヨーロッパや日本市場では異なるプレミアムを持ちます。供給、税金、需要が地域ごとに異なるためです。グローバル市場を測定する研究者は、販売者APIが設計されていない各国から各商品を読む必要がありますが、国ターゲティングを持つ回転住宅プールはデフォルトで対応します。その地理的な次元は、しばしば興味深いアービトラージが隠れている場所です。

StockXまたはGOATの商品ページに含まれるデータ

各商品ページには、埋め込まれたJSONを解析すると驚くほど豊富なペイロードが含まれています。スタイルごとに安定したSKUとUPCを読み取ることができ、サイズごとにオーダーブックのスライス全体を読み取ることができます:

公式のStockX APIとスニーカーマーケットリサーチのための公開商品ページのスクレイピングの比較、レートキャップと利用可能なシグナルの比較
公式APIは1日25,000コールに制限された販売ツールであり、公開ページは市場調査が実際に必要とする価格履歴、サイズレベルのスプレッド、速度を持っています。

ブロックされずにページを取得する方法

StockXとGOATは厳しいボット管理の背後にあり、データセンターIPが商品JSONを繰り返しヒットすると、数回のリクエストで挑戦されます。コレクションを維持するための2つの方法は、通常の買い物客のように見える住宅用出口IPと、各リクエストごとに回転させることです。住宅プロキシを使用することで—200以上の国にわたる90M以上のIP—各リクエストが異なる家庭のアドレスから送信されます:

import requests, json

proxies = {
    "http":  "http://USER:PASS@gate.quantumproxies.io:PORT",
    "https": "http://USER:PASS@gate.quantumproxies.io:PORT",
}
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)"}

url = "https://stockx.com/air-jordan-1-retro-high-og-example"
html = requests.get(url, proxies=proxies, headers=headers, timeout=(5, 30)).text

# Product data hydrates from an embedded JSON blob, not the visible HTML.
start = html.find('{"props":')
blob = json.loads(html[start:html.rindex("}", 0, html.find("</script>", start)) + 1])
# Walk blob -> product -> market to reach asks, bids and statistics.

ページが埋め込まれたJSONの代わりにほぼ空のシェルを返す場合、それはクライアントサイドでレンダリングされたバージョンまたはチャレンジバージョンが提供されたことを示しています—これは空のページ、データの欠落で説明しています。それは生のプロキシから管理されたフェッチにエスカレートするポイントです。Scraper APIはJavaScriptをオンデマンドでレンダリングし、クリーンなJSONまたはmarkdownを返すので、ヘッドレスブラウザやパーサーを自分で維持する必要がなくなります:

curl -G "https://api.quantumproxies.io/scrape" \
  --data-urlencode "url=https://stockx.com/air-jordan-1-retro-high-og-example" \
  --data-urlencode "render=true" \
  --data-urlencode "country=us" \
  -H "Authorization: Bearer YOUR_API_KEY"

生の要求を研究シグナルに変える

バリアントが解析された後の分析は、小さな算術であり、数字の壁を意思決定に変えます。サイズの分布—最も安いサイズと最も高いサイズのギャップ—はどのサイズが希少であるかを明らかにし、小売価格に対するプレミアムは本物の人気とマーケティングノイズを区別します:

def size_spread(variants):
    asks = [v["lowest_ask"] for v in variants if v.get("lowest_ask")]
    return {
        "cheapest_size": min(asks),
        "priciest_size": max(asks),
        "spread_pct": round((max(asks) - min(asks)) / min(asks) * 100, 1),
    }

def hype_score(stats, retail):
    premium = (stats["annual_average_price"] - retail) / retail
    return round(premium * 100, 1)  # % over retail; negative = a dud

ウォッチリスト全体を毎日スケジュールで実行すると、再販インデックスが得られます:速度の上昇とプレミアムの拡大は早期の熱シグナルを示し、販売の減少とプレミアムの縮小はフェードを示します。同じSKUに対してStockXとGOATをクロスリファレンスすることでアービトラージを明らかにし、特定のカテゴリでどのプラットフォームが価格発見をリードしているかを確認します。ウォッチリストが数千のスタイルに及ぶ場合、プロキシの帯域幅コストを削減する戦術で請求を制御します—画像はほとんど必要なく、JSONだけが必要です。

行動に関する一つの注意点:これは公開されている非個人の価格データに関する市場調査であり、スクレイピングのリスクが低いものですが、それでも各プラットフォームの利用規約を尊重し、礼儀正しくレート制限を設けるべきです。これはガイダンスであり、法的アドバイスではありません。

スニーカー再販データフィールドの統計パネル:1日25,000のAPIキャップ、25%の平均価格プレミアム、15〜60日の販売ウィンドウと1年の価格履歴
重要なシグナルは速度とプレミアムです:人気のあるペアは小売価格を大きく上回り、速い販売を示し、不人気なものはそれ以下で停滞します。

よくある質問

StockXには公式APIがありますか?

はい、しかしそれは販売者向けのツールであり、市場データサービスではありません。StockXの開発者APIはOAuth 2.0で認証され、承認プロセスの背後にあり、カタログ検索、リスト管理、注文管理をカバーしています。1秒あたり1回のリクエストで24時間あたり25,000リクエストに制限されており、広範な市場の歴史的なフィードではなく、自分の販売活動を返します。

GOATにはスニーカー価格のためのAPIがありますか?

GOATは研究者向けの公開価格APIを提供していません。サードパーティのアグリゲーターやオープンソースプロジェクトは、StockXと同じアプローチでGOATの公開ページをスクレイピングしてデータを取得します。両方のプラットフォームは強力なボット管理を使用しているため、信頼性のある収集はデータセンターエンドポイントではなく、住宅用IPとリクエストごとの回転に依存します。

公式APIなしでどのようなスニーカーデータを取得できますか?

公開された商品ページは、サイズごとの最低要求価格と最高入札価格、総要求数、15、30、60日間の販売数、年間の高値/安値/平均価格、ボラティリティ数値、週間注文速度、安定したSKU/UPC識別子を公開しています。それは価格履歴、サイズ分布分析、人気指数を構築するのに十分であり、販売者APIに触れることなく行えます。

StockXをスクレイピングする際にブロックされない方法は?

住宅プロキシを使用してリクエストが通常の買い物客のように見えるようにし、各リクエストで出口IPを回転させ、現実的なUser-Agentを設定し、ペースを調整します。ページが埋め込まれたJSONの代わりに空のシェルを返す場合、ページのJavaScriptを実行し、構造化データを返すレンダリングスクレイパーAPIに切り替え、チャレンジと戦うのではなく、構造化データを取得します。

再販市場はそれを最もよく測定する者に報いる。公式APIはその測定を提供しません—それはそのために設計されていませんでした。公開ページをクリーンな住宅IPで収集し、速度とプレミアムに還元することで、混沌としたオーダーブックを研究の意思決定に変えるシグナルに変えます。

Scraper APIでクリーンなスニーカーデータを取得する