メインコンテンツまでスキップ

高度な検索(search_condition JSON)

メルカリ公式アプリ/web が使う search_condition をそのまま貼って検索できます。
dry_run の request_json.search_condition をコピーして再利用する用途にも向いています。

貼る JSON の例

{
"brand_id": [],
"category_id": [3833],
"exclude_keyword": "",
"item_condition_id": [2, 3, 4],
"keyword": "",
"order": 0,
"price_max": 0,
"price_min": 0,
"sort": 1,
"status": []
}

フィールド

キー意味備考
keyword検索語空文字可
exclude_keyword除外語
category_idカテゴリ ID 配列例: スマホ 3833、スマホ本体 859 など
brand_idブランド ID 配列空なら指定なし
item_condition_id商品の状態1=新品 … 6=全体的に悪い
sortソート数値 enum(1=新しい順 など)またはラベル "新しい順"
order昇順/降順0=DESC, 1=ASC
price_min / price_max価格帯0 は未指定扱い
status出品状態[] = すべて(売切含む)。省略時は販売中のみ
attributes商品の特徴[{"id":"<uuid>","values":["..."]}](任意)

フルリクエスト包みも可:

{
"page_size": 50,
"search_condition": { "...": "上記と同じ" }
}

Python

import mercari

CONDITION = {
"brand_id": [],
"category_id": [3833],
"exclude_keyword": "",
"item_condition_id": [2, 3, 4],
"keyword": "",
"order": 0,
"price_max": 0,
"price_min": 0,
"sort": 1,
"status": [],
}

c = mercari.MercariClient(dry_run=True) # まず形を確認
r = c.search_from_condition(CONDITION)
print(r["mode"], r["request_json"]["search_condition"])

# ライブ
c = mercari.MercariClient()
r = c.search_from_condition(CONDITION)
for it in r.get("items") or []:
print(it.get("price"), it.get("name"))

別名:

c.search(condition=CONDITION) # または search_condition=
c.search(condition=CONDITION, page_size=50) # 上書き

文字列/ファイル:

c.search_from_condition('{"category_id":[3833],"sort":1,"order":0,"status":[]}')

# パースだけ(kwargs を見る)
kw = mercari.parse_search_condition(CONDITION)
print(kw)

CLI

# ファイル
mercari search --condition-json ./cond.json --live

# インライン
mercari search --condition-json-inline '{"category_id":[3833],"sort":1,"order":0,"status":[]}'

webapp 相当の一発 API

# 検索 + ヒット正規化 + 価格 stats(/api/search に近い)
payload = c.search_with_stats(condition=CONDITION)
print(payload["count"], payload["stats"], payload["items"][:3])

# 売切寄り相場 + 中央値レコメンド(/api/market に近い)
m = c.market_search(keyword="iPhone 13", category_id=3833)
print(m["recommended_price"], m["stats"])

# 特徴 facet カタログ(/api/market/filters に近い)
facets = c.sample_facets(category_id=859, keyword="iPhone", max_items=8)

モジュール直:

mercari.run_search(c, condition=CONDITION)
mercari.run_market_search(c, keyword="iPhone", category_id=3833)

内部

  1. parse_search_conditionMercariClient.search kwargs
  2. build_search_dict → protobuf
  3. ゲスト DPoP で POST(または dry_run)

関連: dry_run · search / item · プロキシ