# Japan Resale 日本二手代购 Cross-Market — Yahoo, Mercari, PayPay (`jpmarketdata/japan-resale-cross-market-cn`) Actor

日本代购与跨境卖家必备：一个关键词，一次调用同时比价日本三大二手市场——雅虎拍卖（成交价）、煤炉 Mercari（成交价／在售要价）、PayPay 跳蚤市场（在售要价），返回各市场的中位数、四分位与市场间价差。每个数字都标注是成交价还是要价，绝不混算。日本二手捡漏与转卖定价的底价依据。Cross-market price gap across 3 Japanese resale markets, from $0.02 per keyword.

- **URL**: https://apify.com/jpmarketdata/japan-resale-cross-market-cn.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 keyword analyzed across markets

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Japan Resale Cross-Market Checker for Chinese Cross-Border Buyers

**中文 · English · 日本語** — 一个关键词，一次调用，同时比价日本三大二手市场（雅虎拍卖 / 煤炉 Mercari / PayPay 跳蚤市场），并返回市场间价差。

***

### 中文说明

#### 这是给谁用的（Who this is for）

给**日本代购、日淘买手、日本二手转卖卖家**用的。你在日本二手市场收货，再卖到中国大陆、香港、台湾、新加坡的闲鱼 / 淘宝 / 微店 / 蝦皮 / eBay。问题永远是同一个：**这件东西在日本值多少钱，从哪个市场进最便宜？** 单独买三个单市场爬虫要 **$0.06**，而且拿到三套不同的字段结构还得自己对齐；这里是**一条 $0.02 的记录**，三个市场已经并排放好，价差也算好了。

| 市场 | 你能拿到什么 | 价格口径 |
|---|---|---|
| [雅虎拍卖 Yahoo! Auctions](https://auctions.yahoo.co.jp/)（ヤフオク） | 已结束且至少有 1 次出价的拍卖 | **成交价 sold** |
| [煤炉 Mercari](https://jp.mercari.com/)（メルカリ） | 已售出与／或在售商品 | **成交价** 与／或 **要价** |
| [PayPay 跳蚤市场](https://paypayfleamarket.yahoo.co.jp/)（PayPayフリマ） | 在售商品 | **要价 asking** |

#### 比数字更重要的是 `priceBasis` 标签

雅虎拍卖的落札价是**已经成交的价格**。PayPay 上挂着的是**要价**——卖家的期望值，还没有任何人同意过。PayPay 根本不公开已售商品，所以要价是这个市场唯一能诚实提供的东西。

不看口径就把两个中位数相减，算出来的「套利空间」是假的。因此本 Actor：

- 每个市场区块都带 **`priceBasis`**（`sold` / `asking`）和一句人类可读的 **`priceBasisLabel`**；
- **`comparison.pairs`** 的每一条都标注 **`basis`**：`sold_vs_sold`、`sold_vs_asking` 或 `asking_vs_asking`，并附布尔值 `sameBasis`；
- 煤炉选「两者都要」时，返回的是**两个独立区块**（`mercari_sold`、`mercari_on_sale`），而不是一个混合中位数——**一个数字只能有一种口径**；
- `comparison.mixedBasis` 和 `comparison.note` 会明说：这次的头条价差跨了口径。

`sold_vs_sold`（雅虎拍卖 ↔ 煤炉已售出）才是**可以照着下手的那一对**。`asking_vs_asking`（煤炉在售 ↔ PayPay）告诉你今天从哪儿买便宜。`sold_vs_asking` 只是背景信息，不是利润。

#### 价格 Pricing — 每个关键词 $0.02 起，无订阅

| 计费事件 | 价格 | 何时计费 |
|---|---|---|
| 跨市场分析一个关键词（`keyword-analyzed`） | **$0.02** | 每个关键词一次，与选了几个市场无关 |
| 单件商品记录（`item-scraped`） | **$0.002** | 仅在开启「输出单件明细」时 |

默认运行（1 个关键词、3 个市场、只要汇总）**$0.02**，约 10 秒完成。

**只有当所选市场中至少有两个真的返回了数据时，这个关键词才计费**（如果你只选了一个市场，那就是那一个）。只有一个市场的「跨市场记录」不算比较，因此免费。

#### 输入 Input

| 字段 | 示例 | 说明 |
|---|---|---|
| `keywords` | `["nintendo switch"]` | 日文关键词命中率通常高于英文。每个关键词 $0.02 |
| `markets` | `["yahoo_auction","mercari","paypay_flea"]` | 多选，默认全选三个。选几个都不改变每个关键词的价格 |
| `mercariStatus` | `"both"` | `both` / `sold_out`（成交价） / `on_sale`（要价） |
| `maxItemsPerMarket` | `100` | 每个市场（煤炉按状态各算一次）取样 30–300 件 |
| `priceMinJpy` / `priceMaxJpy` | `15000` | 可选价格窗口，**对所有市场使用完全相同的条件**，在客户端过滤 |
| `includeIndividualItems` | `false` | 开启后额外输出每一件取样商品，+$0.002/件 |
| `convertToUsd` | `true` | 附上美元统计（每次运行只查一次汇率） |

```json
{
    "keywords": ["nintendo switch"],
    "markets": ["yahoo_auction", "mercari", "paypay_flea"],
    "mercariStatus": "both",
    "maxItemsPerMarket": 100,
    "includeIndividualItems": false,
    "convertToUsd": true
}
```

常用日文关键词对照：宝可梦卡 = `ポケモンカード`／喷火龙 = `リザードン`／高达模型 = `ガンダム プラモデル`／劳力士 迪通拿 = `ロレックス デイトナ`／吉伊卡哇 = `ちいかわ`／手办 = `フィギュア`。

#### 输出 Output（`type: "cross_market_summary"`，节选，实测于 2026-07-26）

```json
{
  "type": "cross_market_summary",
  "keyword": "nintendo switch",
  "markets": {
    "yahoo_auction": {
      "market": "yahoo_auction",
      "marketName": "Yahoo! Auctions Japan (closed auctions)",
      "priceBasis": "sold",
      "priceBasisLabel": "Sold — winning bid of an ended auction (bidCount >= 1)",
      "available": true,
      "totalListingsFound": 229986,
      "sampledListings": 50,
      "pricedListings": 50,
      "priceJpy": {"min": 980, "p25": 3405, "median": 4540, "p75": 6520, "max": 62000, "average": 9026},
      "signals": {"soldListings": 50, "unsoldListings": 0, "sellThroughRatioSampled": 1.0,
                  "bidCount": {"min": 1, "median": 1, "max": 1}},
      "sourceUrl": "https://auctions.yahoo.co.jp/closedsearch/closedsearch?p=nintendo+switch&n=50&b=1"
    },
    "mercari_sold":    {"priceBasis": "sold",   "priceJpy": {"median": 4775},  "signals": {"medianDaysToSell": 0}},
    "mercari_on_sale": {"priceBasis": "asking", "priceJpy": {"median": 3474}},
    "paypay_flea":     {"priceBasis": "asking", "priceJpy": {"median": 14200},
                        "signals": {"likeCount": {"median": 4}}}
  },
  "comparison": {
    "marketsCompared": ["yahoo_auction", "mercari_sold", "mercari_on_sale", "paypay_flea"],
    "medianJpy": {"yahoo_auction": 4540, "mercari_sold": 4775, "mercari_on_sale": 3474, "paypay_flea": 14200},
    "listingsFound": {"yahoo_auction": 229986, "mercari_sold": 15000, "mercari_on_sale": 15000, "paypay_flea": 149999},
    "comparable": true,
    "cheapestMarket": "mercari_on_sale", "priciestMarket": "paypay_flea",
    "spreadJpy": 10726, "spreadPct": 308.8, "spreadBasis": "asking_vs_asking",
    "mixedBasis": true,
    "pairs": [
      {"from": "yahoo_auction", "to": "mercari_sold", "basis": "sold_vs_sold", "sameBasis": true,
       "diffJpy": 235, "diffPct": 5.2, "cheaperMarket": "yahoo_auction"},
      {"from": "mercari_on_sale", "to": "paypay_flea", "basis": "asking_vs_asking", "sameBasis": true,
       "diffJpy": 10726, "diffPct": 308.8, "cheaperMarket": "mercari_on_sale"}
    ],
    "note": "Bases are mixed. …"
  },
  "marketsWithData": ["mercari", "paypay_flea", "yahoo_auction"],
  "checkedAt": "2026-07-26T06:21:11+00:00"
}
```

开启 `includeIndividualItems: true` 后，还会额外输出每一件商品的记录，各自带上 `market`、`marketEntry` 与 `priceBasis`。

怎么读：先看 `pairs` 里 `sameBasis: true` 的那几对，再看 `diffPct`。`listingsFound` 是你要面对的供给量，`signals.sellThroughRatioSampled`（雅虎）与 `signals.medianDaysToSell`（煤炉）是流动性。

#### 用途 Use cases

- **跨市场进货** —— 在最便宜的市场买、最贵的市场卖；`sold_vs_sold` 那一对两端都是真实成交价
- **代购报价与出口** —— 一次请求就能给客户一个分市场、站得住脚的价格区间
- **动态调价** —— 定时运行，观察各市场中位数随时间的变化
- **决定在哪儿上架** —— `listingsFound` 是竞争供给，流动性看上面两个信号
- **市场研究** —— 日本各品类「要价对成交价」的溢价有多大

#### 注意事项 Notes & limits

- **宽泛的关键词比较的是商品构成，不是市场。** 实测 `nintendo switch` 在 PayPay 上以主机为主、在煤炉上以配件为主，所以上面那个 308% 的价差是真的数字，但它是商品构成造成的，不是套利空间。请把关键词缩窄，或设置 `priceMinJpy` / `priceMaxJpy`；加上 ¥15,000 的下限后，四个中位数收敛到 ¥16,990–¥31,000，那才是主机的真实价格带
- 相信中位数之前先看 **`pricedListings`**：价格窗口收得太紧会让某个市场只剩下很少几件
- **`totalListingsFound` 是各站点自己报告的命中数**，客户端的价格窗口不会改写它；各站点的计数口径也不同（煤炉的命中数上限为 15,000）
- **PayPay 跳蚤市场永远无法返回成交价** —— 它不做服务端渲染的已售页面。本 Actor 不会假装可以
- 雅虎的「成交」判定是出价 ≥ 1 次；结束但无人出价的拍卖会被取样但排除在价格统计之外（见 `signals.unsoldListings`）
- 煤炉的 `medianDaysToSell` 用「更新时间 − 上架时间」估算，改价也会更新时间，因此偏小 —— 当作流动性信号，不是精确成交时间
- **单个市场失败不会让整次运行失败**：它会以 `available: false` 加 `error` 的形式返回，其余市场照常比较。只有当某个关键词的**所有**市场都失败时才判定失败
- 只读、不登录、不用浏览器。请求间隔 1.5 秒；雅虎拍卖与 PayPay 跳蚤市场共用同一套后端，因此这两个是**顺序**请求的
- **不采集任何个人信息** —— 每条记录都不含卖家身份
- 只想单独查一个市场？请用姊妹 Actor：**Japan Auction Sold Comps for Cross-Border Buyers**（雅虎拍卖）与 **Mercari Japan Sold Price Checker for Cross-Border Buyers**（煤炉）

***

### English

#### Overview

**What is this worth in Japan, and where is it cheapest?** One call per keyword prices it on all three big Japanese resale marketplaces at once — Yahoo! Auctions (sold), Mercari (sold and/or asking), PayPay Flea Market (asking) — and returns the gap between them.

This listing is the **Chinese-language package** of our English Actor [Japan Resale Cross-Market Checker](https://apify.com/jpmarketdata/japan-resale-cross-market-checker). The scraping and statistics are the same; the documentation, store copy and input labels are written for Chinese-speaking cross-border buyers (日本代购 / daigou).

#### Why the `priceBasis` labels matter more than the numbers

A closed Yahoo! auction is a **realized sale price**. A live PayPay listing is an **asking price**. Subtract those two medians without noticing and your "arbitrage margin" is fiction. So every market block carries `priceBasis` (`sold` / `asking`), every entry of `comparison.pairs` is tagged `sold_vs_sold` / `sold_vs_asking` / `asking_vs_asking`, Mercari with **both** statuses comes back as two separate blocks, and `comparison.mixedBasis` says out loud when the headline spread crosses bases.

#### Input

| Field | Example | Notes |
|---|---|---|
| `keywords` | `["nintendo switch"]` | Japanese usually matches more listings than English. Each keyword costs $0.02 |
| `markets` | `["yahoo_auction","mercari","paypay_flea"]` | Multi-select, all three by default. The price per keyword does not change |
| `mercariStatus` | `"both"` | `both` / `sold_out` (sold comps) / `on_sale` (asking) |
| `maxItemsPerMarket` | `100` | 30–300 listings sampled per market (and per Mercari status) |
| `priceMinJpy` / `priceMaxJpy` | `15000` | Optional price window, applied **identically to all markets** client-side |
| `includeIndividualItems` | `false` | Enable to also get every sampled listing, +$0.002 each |
| `convertToUsd` | `true` | Adds USD stats at the current rate (one FX lookup per run) |

#### Output

One `cross_market_summary` record per keyword — see the JSON example in the Chinese section — with a block per market (`priceBasis`, `priceJpy`, `signals`, `sourceUrl`) plus a `comparison` object (`medianJpy`, `spreadJpy`, `spreadPct`, `spreadBasis`, `mixedBasis`, `pairs`). With `includeIndividualItems: true` you additionally get one record per listing, each tagged with `market`, `marketEntry` and `priceBasis`.

#### Pricing

| Event | Price | When |
|---|---|---|
| Keyword analyzed across markets (`keyword-analyzed`) | **$0.02** | Per keyword, whatever the number of markets |
| Individual listing (`item-scraped`) | **$0.002** | Only if you enable **Include individual listings** |

A default run (1 keyword, 3 markets, summary only) costs **$0.02** and takes about 10 seconds. **A keyword is only charged when at least two of the selected markets actually returned data** (or the single one, if you selected only one). No subscription.

#### Notes & limits

- **A broad keyword compares different products, not different markets** — the measured 308% spread on "nintendo switch" is a product-mix artifact. Narrow the keyword or set `priceMinJpy` / `priceMaxJpy`
- Check **`pricedListings`** before trusting a median; `totalListingsFound` is what each site reports and is never rewritten by the client-side price window (Mercari caps its hit count at 15,000)
- **PayPay Flea Market can never return sold prices** — they are not server-rendered
- Yahoo's sold filter is `bidCount >= 1`; Mercari's `medianDaysToSell` uses `updated − created` and skews low
- **A market that fails does not fail the run**: it comes back as `available: false` with an `error`. Only a keyword where *every* market failed fails the run
- Read-only, no login, no browser. Requests throttled to one per 1.5 s; Yahoo! Auctions and PayPay are queried **sequentially** because they share one backend. No personal data is collected

***

### 日本語

#### 概要 Overview

**キーワード1件につき、ヤフオク(落札)・メルカリ・PayPayフリマの3市場の相場を1レコードで比較する Actor です。** 中国語圏の**代購・輸出転売業者**向けに、中国語で書き直したパッケージです（英語版は [Japan Resale Cross-Market Checker](https://apify.com/jpmarketdata/japan-resale-cross-market-checker)、取得・統計処理は同一）。

各市場の価格統計（最安・p25・中央値・p75・最高・平均）に加えて、**市場間の価格差**（`comparison`）を返します。単体スクレイパー3本を買うと $0.06 かかり、スキーマの突き合わせも自分でやることになりますが、これは **$0.02 の1レコード**で揃った状態で返します。

#### 価格の「基準」が最重要

ヤフオクの落札価格は**実際に成約した価格（sold）**、PayPayフリマは\*\*出品価格（asking）\*\*です（PayPay は売却済み商品を公開していないため asking しか取得できません）。この2つを無自覚に引き算すると、存在しない利ざやが出ます。そこで全ブロックに `priceBasis`、全ペアに `basis`（`sold_vs_sold` / `sold_vs_asking` / `asking_vs_asking`）を必ず付けています。**メルカリで「両方」を選んだ場合は `mercari_sold` と `mercari_on_sale` の2ブロックに分けて返します**（1つの中央値が2つの基準を混ぜないため）。

#### 入力 Input

`keywords`（日本語の方がヒットしやすい）／`markets`（既定は3市場）／`mercariStatus`（既定 `both`）／`maxItemsPerMarket`（既定 100、30〜300）／`priceMinJpy`・`priceMaxJpy`（**3市場に同一条件で**適用）／`includeIndividualItems`（**既定 OFF**）／`convertToUsd`（既定 ON）。

#### 出力 Output

キーワードごとに `cross_market_summary` を1件（市場別ブロック＋`comparison`）。`includeIndividualItems` が ON のときは、各商品の明細も `market` / `marketEntry` / `priceBasis` 付きで出力します。

#### 料金 Pricing

キーワード1件 **$0.02**（`keyword-analyzed`。市場を何個選んでも同額）、個別明細は **$0.002/件**（`item-scraped`。既定 OFF なので既定実行は $0.02 固定）。**選択した市場のうち2市場以上（1市場だけ選んだ場合は1市場）からデータが返らなかったキーワードには課金されません** — 1市場だけの結果は「横断比較」ではないためです。サブスクリプション不要です。

#### 注意 Notes

広いキーワードは「市場の違い」ではなく「商品構成の違い」を比較してしまいます（実測: `nintendo switch` は価格差 308% と出ましたが、これは商品構成の差です）。キーワードを絞るか価格帯を指定してください。中央値を読む前に `pricedListings` を確認してください。ヤフオクの sold 判定は入札1件以上、メルカリの `medianDaysToSell` は出品〜更新の日数（値下げでも動くため短めに出ます）。1市場が失敗しても `available: false` として残り、他市場の比較は続行します。ブラウザ不使用・ログイン不要・1.5秒に1リクエスト、ヤフオクと PayPayフリマは同一基盤のため逐次取得しています。個人情報は取得しません。

# Actor input Schema

## `keywords` (type: `array`):

要比价的关键词，可一次填多个，每个关键词都会在所选的全部市场上查询。日文关键词命中率远高于英文（ポケモンカード、ロレックス、nintendo switch）。每个关键词计费 $0.02，与选了几个市场无关。One or more search keywords, compared across every selected market.

## `markets` (type: `array`):

选择要比价的日本二手市场。雅虎拍卖返回的是**成交价**（已结束且至少有 1 次出价的拍卖），煤炉 Mercari 两者都可以，PayPay 跳蚤市场只能返回**在售要价**（它不公开已售商品）。选几个市场都不改变每个关键词的价格。Which Japanese marketplaces to price; the price of a keyword is the same whichever markets you pick.

## `mercariStatus` (type: `string`):

煤炉要取哪一类商品。'已售出' = 真实成交价（可与雅虎拍卖直接对比）；'在售' = 当前要价（可与 PayPay 直接对比）；'两者都要' = 拆成两个独立区块返回，这样每个数字都只有一个价格口径。'Sold out' gives real sold comps, 'On sale' gives asking prices, 'Both' returns them as two separate blocks.

## `maxItemsPerMarket` (type: `integer`):

每个市场（煤炉再按状态各算一次）取样多少件后再做统计。样本越大越稳但越慢：雅虎每次返回 50 件、煤炉 120 件、PayPay 100 件，请求间隔 1.5 秒。How many listings to sample per market before computing the statistics.

## `priceMinJpy` (type: `integer`):

统计前先剔除低于此价的商品。对所有市场使用**完全相同**的条件，因此中位数仍然可比。常用来把配件、空盒、仿品从一个关键词里剔出去。Drop listings priced below this before computing the statistics; applied identically to every market.

## `priceMaxJpy` (type: `integer`):

统计前先剔除高于此价的商品，同样对所有市场使用相同条件。常用来把整套、批发出品从一个关键词里剔出去。Drop listings priced above this before computing the statistics; applied identically to every market.

## `includeIndividualItems` (type: `boolean`):

默认关闭：一次运行每个关键词固定 $0.02，与市场数量无关。开启后还会输出每个市场的每一件取样商品（标题、价格、状态、成色、链接），费用 +$0.002/件。Off by default: a run costs a flat $0.02 per keyword, whatever the number of markets.

## `convertToUsd` (type: `boolean`):

在日元统计旁附上美元统计，使用实时汇率（open.er-api.com，每次运行只查一次），方便和 eBay、闲鱼等海外行情对比。Adds USD statistics next to JPY using the current exchange rate.

## Actor input object example

```json
{
  "keywords": [
    "nintendo switch"
  ],
  "markets": [
    "yahoo_auction",
    "mercari",
    "paypay_flea"
  ],
  "mercariStatus": "both",
  "maxItemsPerMarket": 100,
  "includeIndividualItems": false,
  "convertToUsd": true
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "nintendo switch"
    ],
    "markets": [
        "yahoo_auction",
        "mercari",
        "paypay_flea"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/japan-resale-cross-market-cn").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["nintendo switch"],
    "markets": [
        "yahoo_auction",
        "mercari",
        "paypay_flea",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/japan-resale-cross-market-cn").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "nintendo switch"
  ],
  "markets": [
    "yahoo_auction",
    "mercari",
    "paypay_flea"
  ]
}' |
apify call jpmarketdata/japan-resale-cross-market-cn --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jpmarketdata/japan-resale-cross-market-cn",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mceUhwsFKfuVn4Qnq/builds/taolMZqTzJBGcXj7n/openapi.json
