高度な検索(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)
内部
parse_search_condition→MercariClient.searchkwargsbuild_search_dict→ protobuf- ゲスト DPoP で POST(または dry_run)
関連: dry_run · search / item · プロキシ