Tony Wang6 分で読めますMercariをスクレイピングする方法(2026年版・API & Python)
2026年版のMercariスクレイピングガイド — 検索、アイテム詳細、分類体系をDIY Python、ノーコードツール、構造化APIで取得する方法と、Mercariの利用規約が許すことを解説します。
Mercariはカタログを読み取るための公開Developer APIを提供していないため、2026年時点で最も信頼できる近道は、Mercariのリスティングページを自分で解析するのではなく、検索結果・アイテム詳細・分類体系について正規化されたJSONを返す構造化スクレイピングAPIです。MercariはStockXやPoshmarkと同じリセールというジャンルに属しますが、それらにはない癖が一つあります — Mercari USとMercari Japanは、一つのブランドの下に存在する二つの別々のマーケットプレイスで、アプリも、アイテムカタログも、通貨も別々だという点です。このガイドではUS版を扱います。
Mercariのデータをスクレイピングする理由
- リセール価格のリサーチ — あるアイテム、ブランド、カテゴリが大規模なピアツーピアマーケットプレイスで実際にいくらで売れているかを、小売価格や他のリセールサイトとの比較材料として追跡する。
- クロスマーケットの裁定リサーチ — 同じブランドや商品タイプについて、US側のリスティング価格を別のマーケットプレイスの希望価格と比較する(注意: Mercari Japanは別のカタログであり、同じ在庫ではありません)。
- ブランド・カテゴリのトレンド追跡 — ブランドやカテゴリごとのリスティング件数と価格を取得し、何がどの価格帯で流通しているかを把握する。
- 市場リサーチ — カテゴリ/ブランド/サイズの分類体系を使い、表記ゆれを推測することなく、特定のニッチにアクティブなリスティングがどれだけ存在するかを把握する。
- AIパイプラインとエージェント — HTMLを画面スクレイピングする代わりに、正規化されたリスティングとアイテムのデータを価格設定や仕入れエージェントに供給する。
Mercariをスクレイピングするのは合法ですか?
選択肢1: Pythonで自作する(そしてなぜ壊れるのか)
素朴なスクレイパーは検索結果ページを取得し、レンダリングされたマークアップからリスティングカードを解析しようとします。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.mercari.com/search/?keyword=nike+jacket",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Listing cards render from client-side state (React/Next.js), so a plain
# HTML parse mostly returns an empty shell — you end up reverse-engineering
# the app's internal JSON endpoints instead
一度はデモとして動きますが、その後すぐに壊れます。
- Prohibited Conductポリシーが明確です。 技術的なブロックとは別に、ロボット、スパイダー、クローラー、スクレイパーを違反行為として直接名指ししています。
- アンチボット対策。 Mercariはサイトの前面にボット検知を配置しており、データセンターのIPやヘッドレスリクエストは、特に検索ページで速やかにレート制限またはブロックされます。
- クライアントレンダリングされたマークアップ。 検索結果ページとアイテムページは安定したサーバーHTMLではなくJavaScriptの状態からレンダリングされるため、レイアウトの変更だけでCSSセレクタ頼みのスクレイピングが静かに壊れます。
- 承認された代替手段がありません。 eBayとは異なり、Mercariはそもそも開発者ポータルを一切運用していないため、フォールバック先となる公式だがゲートされたAPIも存在しません。
選択肢2: ノーコード・既製ツール
ブラウザ拡張機能やポイント&クリック式のスクレイパーは、1回分の検索ページやアイテムのスナップショットをエクスポートできますが、あるブランドのリセール価格やカテゴリのリスティング件数を時系列で追跡するには、同じページをスケジュールに沿って再取得する必要があります — これは、都度のエクスポートではなく、履歴を蓄積できる安定したエンドポイント向きの仕事です。
選択肢3: 構造化されたMercari API
繰り返し使えるワークフローのために、Mercariスクレイピング APIは検索・アイテム詳細・ホームフィード・オートコンプリート・分類体系について正規化されたJSONを返します — ページの解析も、存在しないアプリの承認待ちも不要です。キーワードで検索します。
curl "https://api.crawlora.net/api/v1/mercari/search?query=nike+jacket" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "nike jacket",
"total_results": 21523,
"items": [
{
"id": "m31455228584",
"url": "https://www.mercari.com/us/item/m31455228584",
"title": "Nike varsity jacket. New with tags!",
"thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m31455228584_1.jpg?1784911712",
"price_cents": 4873,
"original_price_cents": 5400,
"num_likes": 1931,
"seller_id": "794269920",
"created_at_unix": 1774057908,
"updated_at_unix": 1784911712
}
]
}
}
queryは必須です。アイテムの詳細、オートコンプリートの候補、分類体系を取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/mercari"
hits = requests.get(f"{base}/search", headers=h, params={"query": "nike jacket"}).json()["data"]["items"]
item_id = hits[0]["id"]
item = requests.get(f"{base}/item/{item_id}", headers=h).json()["data"]
suggestions = requests.get(f"{base}/autocomplete", headers=h, params={"query": "nik"}).json()["data"]
taxonomy = requests.get(f"{base}/master", headers=h).json()["data"]
アイテム詳細には写真の全セット、価格、そしてMercari自身が表示するsimilar_itemsリストが含まれます(実際のフィールドです — ドキュメントで確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"id": "m38581776856",
"url": "https://www.mercari.com/us/item/m38581776856",
"title": "Women's NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120",
"description": "Women's NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120",
"photos": [
"https://u-mercari-images.mercdn.net/photos/m38581776856_1.jpg?1777492193",
"https://u-mercari-images.mercdn.net/photos/m38581776856_2.jpg?1777492193"
],
"price_cents": 4578,
"condition_code": 1,
"category_code": 6,
"shipping_from_state": "New Jersey",
"similar_items": [
{
"id": "m34982910331",
"url": "https://www.mercari.com/us/item/m34982910331",
"title": "Lululemon Every Moment Pant *26\" Black Size 6",
"thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m34982910331_1.jpg?1783333561",
"price_cents": 4000,
"num_likes": 1967,
"seller_id": "790985424",
"created_at_unix": 1783333561
}
]
}
}
/mercari/homeは検索結果と同じ正規化された形で、Mercariのキュレーションされたホームフィードを返します。/mercari/autocompleteは部分的なクエリを検索候補ワードに変換し、/mercari/masterは完全なカテゴリツリー、ブランドリスト、サイズリストを1回の呼び出しで返すので、Mercariの内部マッピングを推測する代わりにcategory_codeやcondition_codeの値をエンリッチできます。
収集できるもの
- 検索・ホームフィードの結果: ID、タイトル、サムネイル、セント単位の価格、値下げ時の元の価格、いいね数、セラーID、作成/更新のタイムスタンプ
- アイテム詳細: 完全な説明文、画像配列、価格、コンディション/カテゴリコード、発送元の州、
similar_itemsリスト - オートコンプリート: 部分的なキーワードに対する検索候補ワード(Mercari自身の検索窓の候補と同じもの)
- 分類体系: 親子IDを持つ完全なカテゴリツリー、ブランドリスト、短縮名とコード付きのサイズリスト
制約
- 公式APIが存在しません。 Mercariはそもそも開発者ポータルを一切運用していないため、eBayのような、ゲートされてはいても公認の代替手段がありません。
- Prohibited Conductポリシーが明確です。 技術的なブロックとは無関係に、ロボット、スパイダー、スクレイパーを違反行為として直接名指ししています。
- USと日本は別々のマーケットプレイスです。 これらのエンドポイントはMercari US(
mercari.com)を対象としており、アイテムID、カテゴリ、価格はMercari Japan(jp.mercari.com)の別カタログや円建て価格には対応しません。 - 価格といいね数はスナップショットです。 Mercariのアイテムは絶えず値下げされ、いいねが付き、バンドルされ、売却済みになります — 保存する際はタイムスタンプを付けましょう。
- 公開データのみが対象です。 これは公開されている検索・アイテム・分類体系のデータをカバーするもので、非公開メッセージ、オファー、買い手に代わって注文を行う手段ではありません。
どこで使われるか
- リセール・仕入れリサーチ — あるブランドのMercari上の希望価格を、小売価格や他のリセールマーケットプレイスと比較する。
- ブランド・カテゴリのサイジング — 分類体系と検索を使って、あるブランドやカテゴリのリスティング件数と価格帯を測定する。
- 価格設定・仕入れパイプライン — 正規化されたアイテムデータを、割安なリスティングを検知したりウォッチリストを追跡したりするエージェントに供給する。
出典
さっそく始める
まずは無料で試す: 任意の公開URLを無料Webスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認しましょう — サインアップ不要です。
Playgroundで検索・アイテム・ホーム・オートコンプリート・マスターの各エンドポイントをテストし、APIドキュメントでリクエストとレスポンスのスキーマを確認し、料金ページでクレジットコストも確認しましょう。Mercariは総合的な中古品マーケットプレイスであり、StockXのオーダーブック型の価格設定よりも、Poshmarkのソーシャルセリング型リスティングやVintedのピアツーピアなファッションリセールに近い形をしています — このガイドと合わせてStockXをスクレイピングする方法も参照すると、リセール市場をより幅広く把握できます。あわせてWebスクレイピングは合法かもご覧ください。
よくある質問
Mercariには公開Developer APIがありますか?
ありません。Mercariはサードパーティによるカタログへの読み取りアクセスのための公開Developer APIやポータルを提供していません。ページを自分で解析する代わりに、正規化された検索・アイテム詳細・分類体系のデータを取得するには、構造化スクレイピングAPIが現実的な方法です。
Mercariをスクレイピングするのは合法ですか?
MercariのProhibited Conductポリシーは、ロボット、スパムボット、スパイダー、クローラー、スクレイパー、その他の自動化された手段を使ってサービスにアクセスしたりデータを抽出したりすることを明確に禁じています。公開されているリスティングの事実は著作権の対象ではなく、hiQ Labs v. LinkedInによれば公開データへのアクセスはCFAA違反にはあたりませんが、それでもスクレイピングはMercari自身の利用規約に反します。これは法的助言ではないため、ポリシーの原文を自分で確認してください。
Mercariのrobots.txtは何を禁止していますか?
Mercariのrobots.txtは検索ページやアイテムページを一律で禁止してはいませんが、アカウント・取引・出品関連のパス(/mypage/、/transaction/、/sell/、/us/selling/など)はすべてのクローラーに対して禁止しており、PetalBotとYandexBotについては全面的にブロックしています。
Mercari USとMercari Japanは同じカタログですか?
いいえ。Mercari US(mercari.com)とMercari Japan(jp.mercari.com)は、アプリ、アイテムカタログ、通貨がそれぞれ別の、独立したマーケットプレイスです。US側のアイテムID、セント単位の価格、分類体系は、Mercari Japanのリスティングには対応しません。
MercariのAPIで価格はどのように返されますか?
価格はprice_centsとして、ドルではなくセント単位の整数で返されます — $40.00のリスティングは4000になります。アイテムが値下げされている場合、詳細データには別フィールドとしてoriginal_price_centsが含まれることもあります。
Mercariの分類体系エンドポイントは何を返しますか?
/mercari/masterエンドポイントは、1回の呼び出しで、Mercariの完全なカテゴリツリー(親子ID付き)、ブランドの全リスト、短縮名とコード付きのサイズリストを返します。
スクレイピングAPIから取得できるMercariのリスティングデータはどれくらい新しいですか?
価格、いいね数、リスティングのステータスは、その呼び出し時点でのスナップショットとして扱ってください。Mercariのリスティングは絶えず値下げされ、いいねが付き、バンドルされ、売却済みになるため、取得したデータには必ずタイムスタンプを付け、無期限に最新のものとして扱わないようにしましょう。