# Yahoo! Auctions Japan Sold Prices Scraper (ヤフオク落札相場) (`jpopendata/japan-yahoo-auction-sold`) Actor

Yahoo Auctions Japan scraper for sold prices (落札相場): closed-auction search with title, sold price JPY, bid count, end time, condition and category — English schema for resale comps and price research. Item facts only, no seller data. Unofficial; not affiliated with LY Corporation.

- **URL**: https://apify.com/jpopendata/japan-yahoo-auction-sold.md
- **Developed by:** [JP Open Data](https://apify.com/jpopendata) (community)
- **Stats:** 6 total users, 4 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 per records

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Yahoo Auctions Japan Sold Prices (ヤフオク落札相場)

**Sold-item comps from Yahoo! Auctions Japan (ヤフオク!) — what items actually sold for: title, final price in JPY, bid count, end time, condition and category, in a clean English schema.**

This Actor searches the public closed-auction (sold items, 落札相場) listings on auctions.yahoo.co.jp by keyword — several keywords or pasted search URLs per run are supported, optionally narrowed by category — and returns each sold item as English-schema JSON: item title, sold price (JPY), buy-now price when the listing had one, bid count, end timestamp (ISO 8601), condition (new/used plus the site's condition grade code), category path and id, thumbnail image URL, item URL, fixed-price vs auction flag, flea-market flag, and watch count. Optional price-range and condition filters and end-time/price sorting are applied client-side. Optionally, sold prices are also given in USD and/or EUR at the European Central Bank's daily reference rates.

Yahoo! Auctions is Japan's largest auction marketplace and its sold-price history is the reference price database for Japanese collectibles, cameras, trading cards, figures, watches and electronics — but it is Japanese-only and invisible to most international tooling. This Actor is the bridge for price research, resale comps and authenticity/market analysis.

> **Unofficial tool.** Not affiliated with or endorsed by LY Corporation (LINEヤフー株式会社) or Yahoo! Auctions (ヤフオク!). It collects **publicly available data only** (no login, no paywall), politely (strictly serial requests, ≥1.2 s apart, hard per-run budget, no block evasion), fetches **only URLs the site's robots.txt allows**, and extracts **item facts only** — **no seller information of any kind** (no seller IDs, names, ratings or locations), no personal data (relevant e.g. under GDPR: no personal data is collected or processed). Users are responsible for ensuring their own use of the data complies with the source site's terms and applicable law.

***

### Quick start — verified input

Copy-paste this into the Actor's input (JSON tab) or pass it via API — it was run successfully on 2026-09-02 (10 most recently sold ポケモンカード items with prices, ~5 seconds):

```json
{
  "keyword": "ポケモンカード",
  "maxItems": 10
}
```

#### Common input mistakes

| Wrong | Right | Why |
|---|---|---|
| `{}` / `"keyword": ""` | `{"keyword": "ポケモンカード"}` | An empty keyword falls back to the default `フィギュア` with a warning — set the keyword you actually want. |
| `"keyword": "pokemon cards"` | `"keyword": "ポケモンカード"` | Japanese keywords match far more listings; English works only for brand/model names (`Nikon F3`). |
| `"category": "trading cards"` | `"category": "2084241343"` (or leave empty) | Numeric auccat id from a Yahoo Auctions category URL (the URL itself is accepted). |
| `"priceMin": "1,000円"` | `"priceMin": 1000` | Integers in JPY (via API a string with ¥/commas is tolerated). |
| `"condition": "mint"` | `"condition": "new"` | One of any / new / used. |
| `"sortBy": "cheapest"` | `"sortBy": "endTime"` or `"price"` (highest first) | Two sort orders; the price sort is descending. |
| `"keyword": "ポケモンカード, Nikon F3"` | `"keywords": ["ポケモンカード", "Nikon F3"]` | `keyword` is one search phrase; use `keywords` for several searches in one run. |
| `"currencyConversion": "usd"` via API | `"currencyConversion": "USD"` | One of `none`, `USD`, `EUR`, `USD_EUR` (exact spelling; the platform checks it). |

Every invalid value stops the run **immediately** (before any upstream request) with a message that names the field and lists the valid values. Fields with a fixed list of values are validated by the Apify platform before the run even starts.

#### Empty results?

A run that finishes with `items: 0` and `complete: true` is not an error. Typical causes: a keyword with no closed auctions in the site's recent window (very niche or English wording — try the Japanese product name), a `category` that does not contain the keyword's items, or a tight `priceMin`/`priceMax` window with the default request budget (filters are client-side — raise `maxApiRequests`). Widen the query and re-run.

***

### Who is this for?

- **Resellers & arbitrage** — real sold prices (not asking prices) for anything traded in Japan: trading cards, figures, retro games, camera gear, watches, denim.
- **Overseas collectors & proxy-buying services** — know the fair market price in Japan before bidding or quoting; Zenmarket/Buyee-style flows need exactly this data.
- **Authenticity & market research** — price distributions, bid activity and condition mix per item family; spot outliers and fakes by price.
- **Data teams** — a stable English schema over a Japanese-only source, with an analysis-ready shape (numeric prices, ISO timestamps, coarse + detailed condition).

### Sample output (dataset item)

```json
{
  "itemTitle": "ポケモンカード コイキング AR 080/073 ポケカ",
  "soldPriceJpy": 7645,
  "buyNowPriceJpy": null,
  "bidCount": 20,
  "endedAt": "2026-08-25T21:58:28+09:00",
  "condition": "used",
  "conditionDetail": "USED60",
  "categoryPath": ["おもちゃ、ゲーム", "ゲーム", "トレーディングカードゲーム", "ポケモンカードゲーム", "シングルカード"],
  "categoryId": 2084317608,
  "imageUrl": "https://auc-pctr.c.yimg.jp/i/auctions.c.yimg.jp/images.auctions.yahoo.co.jp/image/...",
  "itemUrl": "https://page.auctions.yahoo.co.jp/jp/auction/j1241577860",
  "isFixedPrice": false,
  "isFleaMarket": false,
  "watchCount": 43,
  "source": "ヤフオク! 落札相場 (auctions.yahoo.co.jp closed search)",
  "sourceUrl": "https://auctions.yahoo.co.jp/",
  "license": "Publicly available data — unofficial tool; users are responsible for compliance with the source site's terms",
  "retrievedAt": "2026-08-25T13:12:44.000Z"
}
```

`condition` is `new` / `used`; `conditionDetail` is the site's grade code (`NEW`, or `USED10`…`USED80` — lower number = better condition). `isFixedPrice` separates buy-it-now listings from true auctions; `bidCount` and `watchCount` signal demand.

### Input reference

```json
{
  "keyword": "ポケモンカード",
  "priceMin": 1000,
  "priceMax": 50000,
  "condition": "used",
  "sortBy": "price",
  "maxItems": 100,
  "maxApiRequests": 20
}
```

`keyword` (Japanese keywords match best; empty falls back to `フィギュア` with a warning). `category` takes a numeric Yahoo Auctions category id (the `auccat` value in category URLs). Price range, condition and sorting are applied **client-side after fetching** — the equivalent URL parameters are disallowed by the site's robots.txt, and this Actor strictly requests only robots-allowed URLs. Tight filters therefore discard part of what was fetched; raise `maxApiRequests` if a filtered run comes back incomplete.

#### Several keywords in one run

```json
{
  "keywords": ["ポケモンカード", "Nikon F3", "ガンプラ"],
  "maxItems": 50,
  "maxApiRequests": 10
}
```

Each keyword is a separate sold-items search. `maxItems` applies **per keyword** and `maxApiRequests` (up to 200) is shared fairly between them, with at least one request each. When `keywords` (or `searchUrls`) is used, every record gets two extra fields: `keyword` (the keyword it was found with) and `searchUrl` (the pasted URL, or `null` for keywords). If `keyword` still holds the form's pre-filled `フィギュア`, it is skipped (the log says so); type it into `keywords` if you want it. A classic run with only `keyword` returns exactly the same fields as before.

#### Paste a search URL

```json
{
  "searchUrls": ["https://auctions.yahoo.co.jp/closedsearch/closedsearch?p=%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89&va=%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89&aucminprice=1000&aucmaxprice=5000&istatus=2&select=6&n=100"],
  "maxItems": 10
}
```

A sold-items search URL from your browser works, and so do current-listings searches and category pages (their keyword and category are used to search sold items). The Actor keeps the keyword words (`p`, `va`, `vo`, `ve`) and the category (`auccat`). On the sold-items search, robots.txt disallows the price (`aucminprice`, `aucmaxprice`), condition (`istatus`), sort (`select`) and page-size (`n`) parameters, so they are **never sent**; the price range and condition are applied to the fetched items instead, and the sort is replaced by `sortBy`. Other parameters are ignored. The run log lists every dropped parameter, and the records carry the URL in `searchUrl`.

#### Prices in USD / EUR

```json
{
  "keyword": "ポケモンカード",
  "currencyConversion": "USD_EUR",
  "maxItems": 10
}
```

Adds `soldPriceUsd` and/or `soldPriceEur` (rounded to cents) and `fxRateDate` to every record. The rates are the European Central Bank's euro reference rates (eurofxref-daily.xml, free and public), fetched once per run; `RUN_SUMMARY` records the rates and date used. They are reference rates published on working days, not the rate a bank, card or proxy-buying service would charge. If the rates cannot be fetched, the run still succeeds and the records come **without** these three fields (a warning in the log says why). With the default `none`, nothing changes.

Sample record with `keywords` and `"currencyConversion": "USD_EUR"`:

```json
{
  "keyword": "ポケモンカード",
  "searchUrl": null,
  "itemTitle": "ポケモンカード まとめ売り 30枚セット コミヤトモカズ",
  "soldPriceJpy": 2800,
  "soldPriceUsd": 17.76,
  "soldPriceEur": 15.82,
  "fxRateDate": "2026-10-02",
  "...": "then buyNowPriceJpy, bidCount and the other fields as in the sample above"
}
```

### Pricing

Pay per result — see the pricing tab. One upstream page holds 50 sold items.

### FAQ

**Where does the data come from?**
Live from the public, login-free closed-auction search (落札相場) pages on auctions.yahoo.co.jp at run time. Every record embeds the source, source URL, a license note, and the retrieval timestamp.

**Is this an official Yahoo! / LY Corporation service?**
No. **Unofficial**, independently built and maintained, and **not affiliated with or endorsed by LY Corporation.** It reads only publicly available pages. (Yahoo's official auction API was discontinued in 2018; no API route exists.)

**Is seller information included?**
No — deliberately and verifiably not. Seller IDs, display names, ratings, store flags and item location are **never extracted** (the test suite asserts recursively that no seller-derived value can appear in any output field). Sold-price analysis needs the item and the price, not the person.

**Does it respect robots.txt?**
Yes, strictly. The closed-search page this Actor uses (`/closedsearch/closedsearch`) is expressly **allowed** by the site's robots.txt; several filter URL-parameters are disallowed there, so this Actor never sends them and applies those filters client-side instead. Before every request the URL is checked against a copy of the real robots.txt and refused if any rule disallows it, and pasted URLs are rebuilt from the allowed parts only.

**Can it split a big search into price bands to get more results?**
No. Some scrapers split a search by price range to get past result limits, but on the sold-items search the price parameters are disallowed by robots.txt, so this Actor does not do it. The sold-items search itself kept returning results beyond 15,000 in our tests (October 2026); a run is bounded by `maxItems` (2,000 per keyword) and `maxApiRequests` (200 per run).

**Who is responsible for how the data is used?**
You are. The Actor collects publicly available factual data politely, but the legality of your specific use (redistribution, database rights, the source site's terms) is your responsibility as the user.

**How fresh and complete are the results?**
Sold listings are what the site's closed search returns at retrieval time, most recently ended first (the site retains roughly the last 180 days of sold items). Treat each run as a snapshot; re-run for fresh comps.

**What about server load?**
Strictly serial requests, ≥1.2 s apart, 50 items per request, hard per-run request budget (max 200), exponential backoff, no CAPTCHA/login/block evasion. If the site changes its page format or refuses a request mid-crawl (403/429/5xx), the Actor stops instead of silently mis-parsing. A stop that happens after some items were already collected ends the run **successfully** with `complete: false` and a `stopReason` in `RUN_SUMMARY`, and you are billed only for the records actually delivered; a stop before the first item fails the run visibly.

### Search terms this Actor answers

yahoo auction japan sold prices · yahoo auctions japan scraper · japan auction comps · yahoo auction price history · yauction sold listings · ヤフオク 落札相場 データ · japan collectibles resale data · pokemon card sold prices japan · japan camera lens sold prices · yahoo japan auction closed search · japanese auction market data · resale price research japan

### More Japan data Actors by the same developer

- **Japan Government Tenders & Awards** — tender notices and award results from the kkj.go.jp portal.
- **Japan Medical Facilities** — every registered hospital, clinic, dental clinic, and pharmacy (MHLW open data).
- **Japan Care Facilities** — long-term care providers across 35 service types (MHLW open data, CC BY).
- **Japan Government Subsidies & Grants** — open subsidy calls from the official jGrants API.
- **Japan Renewable Energy FIT/FIP Facilities** — METI-certified renewable installations, privacy-safe schema.
- **Japan Financial Licenses & Registrations** — FSA-licensed banks, securities firms, crypto exchanges and more.
- **Japan Construction & Real-Estate Licenses** — licensed contractors and brokers from MLIT's official register.
- **Japan Trade Statistics** — monthly import/export flows by HS code and partner country, from Japan Customs.
- **Japan Hotels & Ryokan Prices (jalan.net)** — hotel/ryokan prices, plans and ratings by prefecture and area.
- **Japan Hobby & Collectibles Prices (駿河屋 Suruga-ya)** — new/used/marketplace asking prices from suruga-ya.jp; the perfect companion to compare current asking prices against these sold comps.
- **Yahoo Flea Market Japan Prices (Yahoo!フリマ / PayPayフリマ)** — live asking prices from paypayfleamarket.yahoo.co.jp; the fixed-price flea-market side of the same LY commerce ecosystem, ideal for comparing current listings against these sold comps.

***

*Unofficial tool; not affiliated with LY Corporation. Publicly available data only; users are responsible for compliance with the source site's terms and applicable law. No personal data and no seller data are collected.*

# Actor input Schema

## `keyword` (type: `string`):

Search keyword for sold (closed) items, e.g. "ポケモンカード", "Nikon F3", "ガンプラ". Japanese keywords match best. Default "フィギュア" (figures) so a run with no input succeeds; an empty keyword falls back to it with a warning. For several keywords in one run use Keywords below (if you fill Keywords or Search URLs and leave this at the pre-filled "フィギュア", it is skipped).

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

Optional. Several keywords in one run, one per line, e.g. "ポケモンカード", "Nikon F3". Each keyword is searched separately, Max records applies per keyword, and every record then carries a keyword field (and a searchUrl field, null for keywords). Up to 100 keywords + URLs per run.

## `searchUrls` (type: `array`):

Optional. Paste Yahoo! Auctions search URLs, one per line — a sold-items search (https://auctions.yahoo.co.jp/closedsearch/closedsearch?p=...), a current-listings search or a category page also work (their keyword and category are used to search sold items). The keyword and category are kept; a price range (aucminprice/aucmaxprice/min/max) and the condition (istatus) are applied after fetching. Every other parameter — including those robots.txt disallows on the sold-items search (aucminprice, aucmaxprice, istatus, select, n, ...) — is never sent; the run log lists what was dropped. Records from a URL carry it in the searchUrl field.

## `category` (type: `string`):

Optional. Numeric Yahoo Auctions category id to narrow the search (the auccat value in auctions.yahoo.co.jp category URLs — the URL itself is accepted too), e.g. 2084241343 = ポケモンカードゲーム. Leave empty to search all categories. Category NAMES are not accepted — put them in keyword.

## `priceMin` (type: `integer`):

Optional. Lower bound on the sold price in JPY (e.g. 1000). Applied client-side after fetching (the equivalent URL parameter is disallowed by the site's robots.txt), so tight ranges may need a higher request budget. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Optional. Upper bound on the sold price in JPY (e.g. 50000). Applied client-side after fetching. Leave empty for no maximum.

## `condition` (type: `string`):

Optional, default any. Filter by item condition (new = 未使用, used = 中古). Applied client-side after fetching.

## `sortBy` (type: `string`):

Optional, default endTime. endTime = most recently ended first (the source's native order). price = highest sold price first. Sorting is applied client-side to the collected records.

## `currencyConversion` (type: `string`):

Optional, default none. Adds soldPriceUsd and/or soldPriceEur (rounded to cents) plus fxRateDate to every record, converted from soldPriceJpy at the European Central Bank's daily euro reference rates (fetched once per run, free public source). These are reference rates, not a bank's or marketplace's rate. If the rates cannot be fetched, the run still succeeds and the records come without these fields (a warning says why).

## `maxItems` (type: `integer`):

Optional, default 10. Stop after this many dataset records (1..2000) — per keyword / URL when Keywords or Search URLs are used. One request = one 50-item result page, so 500 records need maxApiRequests >= 10 (more with client-side filters).

## `maxApiRequests` (type: `integer`):

Optional, default 10. Hard budget of HTTP requests to auctions.yahoo.co.jp for this run (1..200; one request = one 50-item result page), shared fairly between keywords / URLs. Requests are strictly serial with >= 1.2 s spacing. When the budget runs out the run still SUCCEEDS with the records collected so far and complete=false in RUN_SUMMARY (not an error).

## `proxyConfiguration` (type: `object`):

Optional. Apify proxy settings. Default: no proxy (direct connection works). Never used for rotation/evasion — one client identity per run.

## Actor input object example

```json
{
  "keyword": "ポケモンカード",
  "category": "2084241343",
  "priceMin": 1000,
  "priceMax": 50000,
  "condition": "any",
  "sortBy": "endTime",
  "currencyConversion": "none",
  "maxItems": 10,
  "maxApiRequests": 10
}
```

# Actor output Schema

## `records` (type: `string`):

Structured sold-item (落札) records with source attribution (source, sourceUrl, license, retrievedAt) on every item.

# 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 = {
    "keyword": "フィギュア",
    "currencyConversion": "none",
    "maxItems": 10,
    "maxApiRequests": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpopendata/japan-yahoo-auction-sold").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 = {
    "keyword": "フィギュア",
    "currencyConversion": "none",
    "maxItems": 10,
    "maxApiRequests": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jpopendata/japan-yahoo-auction-sold").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 '{
  "keyword": "フィギュア",
  "currencyConversion": "none",
  "maxItems": 10,
  "maxApiRequests": 10
}' |
apify call jpopendata/japan-yahoo-auction-sold --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpopendata/japan-yahoo-auction-sold"
        }
    }
}
```

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/plh7PtOciuGq1vtha/builds/2GBsUkd0N2HegUezL/openapi.json
