# Iosys 日本二手手机 Japan Used Phone Price & Stock Stats (`jpmarketdata/iosys-phone-market-cn`) Actor

日本二手手机采购与跨境转卖必备：输入机型，一次调用即可拿到 Iosys（イオシス，日本大型二手手机与平板零售商）的行情——价格分位数、相邻成色等级（未使用品／中古A／B／C）之间的中位数溢价、运营商与容量构成、实际在库台数，以及「网络利用限制▲（红ROM风险）」与「电池低于80%」的库存占比。日本卖家用的成色分级，在这里被量化成可比价的数字。From $0.02 per model, no subscription.

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

## Pricing

from $20.00 / 1,000 model market summaries

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 Used Phone & Tablet Price & Stock Stats — for Chinese-Speaking Buyers

**中文 · English · 日本語** —— 输入一个机型，一次调用拿到 Iosys（イオシス）的日本二手手机行情：价格分位数、成色等级之间的中位数溢价、实际在库台数、运营商与容量构成，以及「红ROM风险」与「电池低于80%」的库存占比。

***

### 中文说明

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

**日本二手手机是一门实打实的跨境生意**——从日本收货、到国内出货，链路每一环都在问同一个问题：这台机器在日本现在到底值多少钱、便宜的那一档为什么便宜。

问题在于，给这些机器定价的那套词汇是**日文的、而且对中文买家不透明**：

- **中古A / 中古B / 中古C 等级（ランク，成色等级）**——同一台 iPhone14 Pro，差一个等级差多少钱？没有公开答案。
- **未使用品**——比全新便宜、比中古贵，但到底贵多少？
- **ネットワーク利用制限▲（网络利用限制▲，即红ROM预备军 / 红ROM风险）**——运营商分期未付清，随时可能被锁网。这是日本二手机最主要的折价来源之一。
- **バッテリー80%未満（电池低于80%）**——另一个折价来源。

中文买家看得懂价格，看不懂这套等级词汇背后的钱。**这个 Actor 做的正是把它量化**：`rankPremium`（相邻成色等级的中位数价格比）、`conditionFlags`（▲ 与电池标记在库存里的占比）、`unitsInStock`（在库台数，而不是挂牌件数）。

[Iosys](https://iosys.co.jp/)（イオシス）是日本较大的二手手机 / 平板零售商之一，全国范围收货与销售，共用一个线上目录。Apify Store 上**没有第二个 Iosys Actor**，而通用的「二手手机」爬虫只会把原始商品列表倒给你，统计要你自己做。这一个直接返回统计结果，按机型计费，约 8 秒出结果。

无需登录、无需 API key、无需代理，运行之间不存储任何数据。

本 Actor 是英文版 [Iosys Japan Used Phone & Tablet](https://apify.com/jpmarketdata/iosys-phone-market-checker) 的**中文语言包**：抓取逻辑与统计口径完全相同，只有标题、商店说明、文档和输入项标签改写成中文。

#### 概览 Overview

每个机型返回**一条 `model_summary` 汇总记录**：

- **`priceJpy`** —— 所有匹配商品的最低价 / 25分位 / 中位数 / 75分位 / 最高价 / 平均价（含税，这是 Iosys 唯一展示的价格口径）。
- **`rankPremium`** —— **相邻成色等级之间的中位数价格比**（未使用品 → 中古A → 中古B → 中古C）。这是任何单个页面都算不出来的数字，也正是买取柜台和出口商真正拿来定价的东西。
- **`byRank`** —— 每个等级的挂牌件数、在库台数、占比、中位数价格。
- **`inventory`** —— `listings`（挂牌件数）**与 `unitsInStock`（在库台数）**：Iosys 会逐件公开「在庫数」，所以「12 件挂牌」可能意味着 30 台实机。极少有二手平台会公开这个。
- **`conditionFlags`** —— 库存中被标记 **ネットワーク利用制限▲（网络利用限制▲ / 红ROM风险）** 与 **バッテリー80%未満（电池低于80%）** 的占比。这两个标记是日本二手机市场最主要的折价驱动。
- **`byCarrier` / `byCapacity`** —— 运营商构成（SIM-free 无锁 / docomo / au / SoftBank / Rakuten / 仅Wi-Fi）与容量构成，各自带自己的中位数价格。
- 可选：每一条匹配商品的明细（商品名、成色等级、价格、在库台数、运营商、容量、发售时期、标记、URL）。

价格以日元给出，可选附上美元换算。

#### 输入 Input

| 字段 | 示例 | 说明 |
|---|---|---|
| `models`（机型 Models） | `["iPhone 14 Pro 256GB"]` | 机型关键词，按你在店铺搜索框里输入的写法即可。空格与全角字符会自动规范化。每个机型收费 $0.02 |
| `strictNameFilter`（机型名严格过滤） | `true` | 默认开启，理由见下一节。关闭后使用店铺原始（较松）的结果集 |
| `maxPagesPerModel`（每个机型的最大页数） | `5` | 每页 24 条。5 页 = 120 条，对几乎所有具体机型来说就是全部结果 |
| `includeIndividualListings`（输出单件明细） | `false` | 开启后额外输出每一条匹配商品的记录 |
| `convertToUsd`（价格换算成美元） | `true` | 按当前汇率附上美元统计 |

```json
{
    "models": ["iPhone 14 Pro 256GB"],
    "strictNameFilter": true,
    "maxPagesPerModel": 5,
    "includeIndividualListings": false,
    "convertToUsd": true
}
```

机型写法示例：`iPhone 14 Pro 256GB` / `iPhone SE 第3世代` / `iPad Air4` / `Xperia 1 V` / `Pixel 8`。查询会被规范化成店铺自己的写法：`iPhone 14 Pro` → `iPhone14 Pro`、`Xperia 1 V` → `Xperia1 V`、`iPhone SE` → `iPhoneSE`。数字后面接单位时保留空格（`iPad Air 11インチ`、`256GB`）。

#### 为什么默认开启严格机型名过滤

**Iosys 自家的搜索很松。** 实测（2026-07-26）：搜 `iPhone14 Pro 256GB` 返回 **27 条命中，其中真正是 14 Pro 的只有 15 条**；剩下 12 条是普通 iPhone14 和 iPhone14 Plus 机身。把 27 条一起算，中位数是 ¥84,800——而这台机器真实的中位数是 **¥92,800**。

所以本 Actor 额外要求：**查询里的每一个词都必须出现在商品名中，且按词边界判定**。词边界这一条是必要的——它让 `Pro` 不会去匹配 `(PRODUCT)RED`（苹果目录里近一半机器带的颜色名），也让 `V` 不会去匹配 `Xperia1 VIII`。

**两个计数永远都会返回**，所以店铺搜索到底有多松，你自己看得见：

| 字段 | 含义 |
|---|---|
| `totalMatchedRaw` | Iosys 自家搜索返回了多少条 |
| `totalMatchedStrict` | 抓到的这些里，真正是该机型的有多少条 |
| `inventory.listings` | 统计实际是基于多少条算出来的（= strict，除非你关掉了过滤） |

**配件永远被排除**，无论过滤开关是开是关：手机壳、充电器、贴膜（Iosys 的 `smartphonegoods` 分类）。理由很具体——搜 `iPad Air4` 时，一张 ¥1,280 的贴膜会排在价格升序列表的最前面，放它进来会直接把中位数腰斩。

#### 精确 / 分散取样 —— 每个数字都注明口径

每条记录都带 **`priceBasis`** 字段：

| `priceBasis` | 含义 |
|---|---|
| **`exact`** | 结果集的每一页都读完了，统计覆盖的是**全体母集**。具体机型基本都是这种情况 |
| **`spread_sample`** | 结果集超过了 `maxPagesPerModel`。此时实际读取的页会**在价格区间内均匀散开**，而不是从最便宜的一端连读——店铺按价格从低到高排序，一个 13 页的结果只读第 1–5 页，描述的其实是最便宜的那 38% 市场，中位数会被低估。`pagesSampled` 会精确列出用了哪几页 |

多机型运行如果撞上 95 秒的时间软预算，受影响的记录还会带上 `truncatedForTimeLimit: true`。

#### 输出 Output

字段名保持英文，这是 API 接口。以下为 `type: "model_summary"`，数值实测于 2026-07-26：

```json
{
  "type": "model_summary",
  "query": "iPhone 14 Pro 256GB",
  "normalizedQuery": "iPhone14 Pro 256GB",
  "strictNameFilter": true,
  "totalMatchedRaw": 27,
  "totalMatchedStrict": 15,
  "listingsFetched": 27,
  "pagesFetched": 2,
  "pagesSampled": [1, 2],
  "priceBasis": "exact",
  "inventory": {"listings": 15, "unitsInStock": 17},
  "priceJpy": {"min": 77800, "p25": 90300, "median": 92800, "p75": 92800, "max": 109800, "average": 92667},
  "byRank": [
    {"rank": "中古Bランク", "listings": 13, "units": 15, "sharePct": 86.7, "medianJpy": 92800, "rankEn": "Used B"},
    {"rank": "中古Cランク", "listings": 2, "units": 2, "sharePct": 13.3, "medianJpy": 84800, "rankEn": "Used C"}
  ],
  "rankPremium": [
    {"betterRank": "中古Bランク", "worseRank": "中古Cランク", "betterMedianJpy": 92800,
     "worseMedianJpy": 84800, "medianRatio": 1.094, "premiumPct": 9.4}
  ],
  "byCarrier": [
    {"carrier": "SoftBank", "listings": 5, "units": 5, "sharePct": 33.3, "medianJpy": 92800},
    {"carrier": "SIM-free", "listings": 4, "units": 5, "sharePct": 26.7, "medianJpy": 88800},
    {"carrier": "au", "listings": 3, "units": 3, "sharePct": 20.0, "medianJpy": 92800},
    {"carrier": "docomo", "listings": 2, "units": 3, "sharePct": 13.3, "medianJpy": 92800},
    {"carrier": "Rakuten", "listings": 1, "units": 1, "sharePct": 6.7, "medianJpy": 87800}
  ],
  "byCapacity": [{"capacity": "256GB", "listings": 15, "units": 17, "sharePct": 100.0, "medianJpy": 92800}],
  "conditionFlags": {
    "networkRestrictionTriangle": {"count": 1, "sharePct": 6.7},
    "batteryUnder80": {"count": 1, "sharePct": 6.7}
  },
  "checkedAt": "2026-07-26T06:20:32+00:00",
  "sourceUrl": "https://iosys.co.jp/items?q=iPhone14+Pro+256GB&sort=l&page=1"
}
```

开启 `includeIndividualListings: true` 后，每一条匹配商品另外返回一条记录：

```json
{
  "type": "listing",
  "model": "iPhone 14 Pro 256GB",
  "id": "390409",
  "name": "【ネットワーク利用制限▲】iPhone14 Pro A2889 (MQ0Q3J/A) 256GB スペースブラック 【Rakuten版SIMフリー】",
  "rank": "中古Bランク",
  "rankEn": "Used B",
  "priceJpy": 87800,
  "unitsInStock": 1,
  "carrier": "Rakuten",
  "capacity": "256GB",
  "releaseDate": "2022年9月",
  "networkRestriction": "▲",
  "batteryUnder80": false,
  "url": "https://iosys.co.jp/items/smartphone/iphone/rakuten/iphone14_pro_a2889/390409"
}
```

怎么读：`priceJpy.median` 是**现在在日本买这台机器的价格水位**；`rankPremium[].premiumPct` 是**这一周、这个机型上，好一档成色比差一档贵多少**；`inventory.unitsInStock` 才是**量在不在**——12 条挂牌可能只有 12 台，也可能是 30 台。`conditionFlags` 告诉你这批货里有多大比例带着红ROM风险或衰减电池，也就是便宜货为什么便宜。

#### 本 Actor 不做什么

- **不给出成交价与成交时间，因此做不了时间序列。** Iosys 是**定价零售商**，不是交易平台：价格是「当前售价（含税）」，没有销售日期、没有成交历史。
- **不覆盖买取（回收）侧。** 买取站点 k-tai-iosys.com 的 robots 是 `Crawl-delay: 60` 且页面由 JS 渲染，**因此卖/收之间的价差（sell/buy spread）拿不到**。本 Actor 只有销售侧。
- **不是全站爬虫。** 它按机型关键词返回统计，不倾倒整个目录。
- **不代购、不下单、不查配送。** 只读公开页面。
- **不处理个人数据。** Iosys 是第一方零售商，没有个人卖家。

#### 价格 Pricing —— 每个机型 $0.02 起，无订阅

| 计费事件 | 价格 | 何时发生 |
|---|---|---|
| 机型行情汇总（`model-analyzed`） | **$0.02** | 每分析一个机型 |
| 单件商品记录（`listing-scraped`） | **$0.002** | 仅当开启「输出单件明细」时 |

默认运行（1 个机型、只要汇总）花费 **$0.02**，约 8 秒完成。**零结果的机型绝不收费。** 无需订阅。

#### 注意事项 Notes & limits

- Iosys 是**定价零售商**而非交易平台：价格是当前售价、含税。无成交日期、无成交历史，因此没有交易时间序列。
- **买取侧（k-tai-iosys.com）不在覆盖范围内**（`Crawl-delay: 60` 且 JS 渲染），销售/买取价差无法获取。
- 店铺搜索很松，见上面的严格过滤一节。`totalMatchedRaw` 是有意返回的，就是为了让这种「松」可见。
- **等级顺序沿用 Iosys 自己的定义**（新品 > 未使用品 > アウトレット > 中古A > 中古B > 中古C）。`rankPremium` 比较的是**结果集中实际存在的**相邻等级，所以一个只有 A 和 C 有货的机型，仍然能拿到一个诚实的「A 比 C 贵多少」。
- 某个等级的中位数**低于**下一档，是可能出现的，会以负的 `premiumPct` 如实返回——通常意味着**查询太宽泛，混进了别的机型**。请收紧查询（补上容量、补上 `Pro`），而不是怀疑这个数字。
- 只读且限速（1 请求 / 1.5 秒），每个机型 1–5 次请求。多机型运行有 95 秒软预算。
- 不涉及个人数据——Iosys 是第一方零售商，没有个人卖家。运行之间不存储任何数据。

#### 用途 Use cases

- **出口 / 跨境采购选品** —— 日本二手 iPhone 市场是整个亚洲的供给池。`priceJpy` 加 `byCarrier` 告诉你无锁机比运营商机贵多少，`unitsInStock` 告诉你量够不够。
- **回收 / 以旧换新定价** —— `rankPremium` 是「这一周、这个机型，A 级比 B 级值多少」的实测答案，可以替掉写死的内部等级表。
- **风险折价估值** —— `conditionFlags` 量化了供给里有多大比例带着红ROM标记（▲）或弱电池，这是日本二手机价格最主要的两个变量。
- **调价与监控** —— 把机型清单排成定时任务，跟踪中位数与等级溢价随时间的变化。
- **市场进入研究** —— 每个机型的运营商与容量构成，直接来自实时库存。

***

### English

#### Overview

Price and stock statistics for used smartphones and tablets at [Iosys](https://iosys.co.jp/) (イオシス — one of Japan's larger used phone / tablet retailers, buying and selling nationwide from a single online catalog). One call per model returns price quantiles, the **median price ratio between adjacent condition grades** (未使用品 → 中古A → 中古B → 中古C), real `unitsInStock` (Iosys publishes 在庫数 per listing, so "12 listings" can mean 30 handsets), the carrier and capacity mix, and the share of stock flagged ネットワーク利用制限▲ (carrier blacklist risk, the Japanese 赤ロム予備軍) or バッテリー80%未満 (degraded battery) — about 8 seconds per model, no login and no API key.

This listing is the **Chinese-language package** of our English Actor [Iosys Japan Used Phone & Tablet](https://apify.com/jpmarketdata/iosys-phone-market-checker). The scraping and the statistics are identical; the documentation, store copy and input labels are written for Chinese-speaking buyers, exporters and resellers of Japanese used phones (日本二手手机 / 成色等级 / 红ROM风险).

#### Input

| Field | Example | Notes |
|---|---|---|
| `models` | `["iPhone 14 Pro 256GB"]` | Model keywords as you would type them into the store. Spacing and full-width characters are normalized for you. $0.02 per model |
| `strictNameFilter` | `true` | On by default. Iosys' own search is loose — measured 2026-07-26, `iPhone14 Pro 256GB` returned 27 hits of which only 15 really are a 14 Pro, pulling the median to ¥84,800 for a phone whose real median is ¥92,800. Every query word must additionally appear in the product name on a word boundary. Accessories (`smartphonegoods`) are always excluded, filter on or off |
| `maxPagesPerModel` | `5` | 24 listings per page. 5 pages = 120 listings, the entire result set for nearly every specific model |
| `includeIndividualListings` | `false` | Enable to also get each matched listing as a record (+$0.002 each) |
| `convertToUsd` | `true` | Adds USD stats at the current exchange rate |

#### Output

One `type: "model_summary"` record per model (`priceJpy`, `rankPremium`, `byRank`, `inventory.listings` / `inventory.unitsInStock`, `byCarrier`, `byCapacity`, `conditionFlags`, and both `totalMatchedRaw` / `totalMatchedStrict` so the store's looseness stays visible) — see the JSON example in the Chinese section — plus optionally one `listing` record per matched item.

Every record carries **`priceBasis`**: `exact` means every page of the result set was read, so the statistics cover the whole population; `spread_sample` means the result set was larger than `maxPagesPerModel`, and the pages read were **spread evenly across the price range** rather than taken from the cheap end (the store sorts cheapest-first, so reading pages 1..5 of a 13-page result would describe the cheapest 38 % of the market and understate the median). `pagesSampled` lists exactly which pages were used. A multi-model run that hits the 95-second budget also carries `truncatedForTimeLimit: true`.

#### Pricing

| Event | Price |
|---|---|
| Model market summary (`model-analyzed`) | **$0.02** |
| Individual listing record (`listing-scraped`) | **$0.002** each |

Individual listings are OFF by default, so a default run is a flat **$0.02** per model. A model that matched nothing is never charged. No subscription.

#### Notes & limits

- Iosys is a **fixed-price retailer**, not a marketplace: prices are current asks, tax included. There is no sale date and no sold history, so no transaction time series.
- **The buy-back side (k-tai-iosys.com) is not covered** — `Crawl-delay: 60` and JavaScript-rendered — so the sell/buy spread is not obtainable. This Actor is the selling side only.
- The store's search is loose; see the strict-filter note above. `totalMatchedRaw` is deliberately reported so the looseness is visible.
- **Grade order is Iosys' own** (新品 > 未使用品 > アウトレット > 中古A > 中古B > 中古C). `rankPremium` compares grades that are adjacent **among those present** in the result set, so a model stocked only in A and C still gets one honest A-over-C figure.
- A grade with a lower median than the grade below it is possible and is reported as a negative `premiumPct` — it usually means the query is broad enough to mix models. Tighten the query (add the capacity, add `Pro`) rather than distrusting the number.
- Read-only and throttled (1 request / 1.5 s), 1–5 requests per model. Multi-model runs have a 95-second soft budget.
- No login, no personal data (Iosys is a first-party retailer, there are no individual sellers), nothing stored between runs.

***

### 日本語

#### 概要 Overview

イオシスの中古スマホ・タブレット相場を、機種1件につき1レコードで返します。**価格の分位点**（最安・25%・中央値・75%・最高値・平均）、**ランク間プレミアム**（未使用品 → 中古A → 中古B → 中古C の隣接ランク中央値比）、**在庫の実数**（イオシスは商品ごとに「在庫数」を公開しているため、出品件数 `listings` と実在庫台数 `unitsInStock` を分けて返せます）、**ネットワーク利用制限▲（赤ロム予備軍）とバッテリー80%未満の構成比**、キャリア別・容量別の内訳。輸出・買取の値付けに直結する数字を1コールで揃えるのが狙いです。

中国語圏の利用者（日本二手手机 / 成色等级 / 红ROM风险）向けに中国語で書き直したパッケージで、英語版は [Iosys Japan Used Phone & Tablet](https://apify.com/jpmarketdata/iosys-phone-market-checker)（取得・統計処理は同一）です。

#### 入力 Input

`models`（機種キーワード。例 `iPhone 14 Pro 256GB` / `iPad Air4` / `Xperia 1 V`。全角・スペースは自動正規化され、`iPhone 14` は店舗表記の `iPhone14` に直されます）／`strictNameFilter`（既定 ON）／`maxPagesPerModel`（既定 5、1ページ24件）／`includeIndividualListings`（既定 OFF）／`convertToUsd`（既定 ON）。

**厳密フィルタ（既定 ON）**: イオシスの検索は緩く、実測（2026-07-26）では `iPhone14 Pro 256GB` の27件中**実際に 14 Pro なのは15件**で、残りは無印 iPhone14 / 14 Plus でした。そのまま集計すると中央値が ¥92,800 → ¥84,800 にずれます。そこで**クエリの全単語が商品名に含まれること**を単語境界で追加判定しています（`Pro` が `(PRODUCT)RED` に、`V` が `Xperia1 VIII` に誤マッチしません）。`totalMatchedRaw`（店の検索結果）と `totalMatchedStrict`（実際に一致した件数）の両方を返すので、検索の緩さもそのまま見えます。ケース・フィルム等のアクセサリ（`smartphonegoods` カテゴリ）はフィルタの ON/OFF に関わらず常に除外します。

#### 出力 Output

機種ごとに `model_summary` を1件（`priceJpy` / `rankPremium` / `byRank` / `inventory` / `byCarrier` / `byCapacity` / `conditionFlags` / USD換算）。`includeIndividualListings` が ON のときは各商品の明細（商品名・ランク・価格・在庫数・キャリア・容量・発売時期・制限マーク・URL）も出力します。

**数値の根拠は必ず明示**: `priceBasis` が `exact`（結果全ページを取得＝母集団の統計）か `spread_sample`（`maxPagesPerModel` を超える件数のため、**価格帯全体に等間隔でページを散らして**サンプリング）かを示します。イオシスは価格の安い順ソートなので、先頭から数ページだけ読むと安値側に偏る——それを避けるための設計で、実際に読んだページ番号は `pagesSampled` に入ります。95秒の時間予算に達した場合は `truncatedForTimeLimit: true` が付きます。

#### 料金 Pricing

機種サマリー（`model-analyzed`）**$0.02**／個別リスティング（`listing-scraped`）**$0.002 / 件**。個別明細は**既定 OFF** なので既定実行は機種あたり $0.02 固定です。**該当0件の機種には課金されません。** サブスクリプション不要。

#### 注意 Notes

イオシスは定価販売の中古小売で、価格は「現在の販売価格（税込）」です。**成約履歴・販売日は取得できないため時系列分析はできません。** **買取側（k-tai-iosys.com）は robots の `Crawl-delay: 60` と JS 描画のため対象外**で、販売/買取スプレッドは取得できません。ランク順はイオシス自身の定義（新品 > 未使用品 > アウトレット > 中古A > 中古B > 中古C）で、`rankPremium` は**結果集合に存在するランクのうち隣接するもの**を比較します。ランク中央値が下位ランクを下回る（`premiumPct` が負）場合は、クエリが広すぎて別機種が混ざっているサインです——容量や `Pro` を足して絞り込んでください。リクエストは1.5秒間隔（機種あたり1〜5リクエスト）、ログイン不要・個人情報なし・実行間の保存なしです。

# Actor input Schema

## `models` (type: `array`):

一个或多个机型关键词，按你在店铺搜索框里输入的写法即可（iPhone 14 Pro 256GB、iPhone SE 第3世代、iPad Air4、Xperia 1 V、Pixel 8）。空格与全角字符会自动规范化（'iPhone 14' 会转写成 Iosys 使用的 'iPhone14'）。每个机型收费 $0.02。

## `strictNameFilter` (type: `boolean`):

默认开启。Iosys 自家的搜索很松——搜 'iPhone14 Pro' 也会返回普通 iPhone14 机身——所以额外要求查询里的每个词都出现在商品名中，商品才会进入统计。关闭后使用店铺原始的结果集（适合品牌名这类宽泛关键词）。配件（手机壳、充电器、贴膜）无论开启与否都会被排除。

## `maxPagesPerModel` (type: `integer`):

结果每页 24 条。若某机型的页数超过此值，实际读取的页会在价格区间内均匀散开（店铺按价格从低到高排序，只读前几页会低估行情），汇总记录会标注 priceBasis: 'spread\_sample'。5 页覆盖 120 条，对几乎所有具体机型来说就是全部结果。

## `includeIndividualListings` (type: `boolean`):

默认关闭：一次运行每个机型的汇总固定 $0.02。开启后还会输出每一条匹配商品（商品名、成色等级、价格、在库台数、运营商、容量、发售时期、网络利用限制标记、电池标记、URL），费用 +$0.002/条。

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

按当前汇率（open.er-api.com）在日元统计旁边附上美元统计。

## Actor input object example

```json
{
  "models": [
    "iPhone 14 Pro 256GB"
  ],
  "strictNameFilter": true,
  "maxPagesPerModel": 5,
  "includeIndividualListings": 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 = {
    "models": [
        "iPhone 14 Pro 256GB"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/iosys-phone-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 = { "models": ["iPhone 14 Pro 256GB"] }

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

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

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

```

## CLI example

```bash
echo '{
  "models": [
    "iPhone 14 Pro 256GB"
  ]
}' |
apify call jpmarketdata/iosys-phone-market-cn --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/iosys-phone-market-cn"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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