# Yahoo Auctions Japan Scraper - Sold Prices & Live Listings (`scrapewise/yahoo-auctions-japan-scraper`) Actor

Scrape Yahoo! Auctions Japan (ヤフオク) without login: final sold prices of ended auctions (sold comps) and live listings, with bids, condition, category, filters and optional full item pages. No seller personal data. US$ 1.50 per 1,000.

- **URL**: https://apify.com/scrapewise/yahoo-auctions-japan-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.28 / 1,000 listing delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper: sold prices (sold comps) and live listings

Scrape [Yahoo! Auctions Japan](https://auctions.yahoo.co.jp/) (ヤフオク!), Japan's largest auction marketplace,
**without an account, cookies or a browser**. Get the **final sold price of ended auctions** (real sold comps, with
the number of bids and the end time) or the **live listings** open right now (current price, buy-now price, bids,
end time), from a keyword, a Yahoo! Auctions search link, a category link or an item link. Optionally open every
listing's page for the full description, all photos, exact condition, brand and category path, item specs and
shipping methods.

Built for resellers and proxy buyers pricing Japanese goods, sourcing teams, collectors (trading cards, watches,
cameras, games, figures), market researchers and anyone who needs "what does this really sell for in Japan".

**US$ 1.50 per 1,000 listings. Full item page +US$ 1.00 per 1,000. No start fee, no monthly fee. Error rows,
duplicates and listings outside your filters are free.**

### At a glance

- **Price per 1,000 listings, Free plan:** US$ 1.50
- **Fee per run start:** None
- **Sold (ended) auctions with final price:** Yes
- **Live listings:** Yes
- **Price, condition, category filters and sort:** Yes, plus exclude words
- **Full item page (description, photos, specs, shipping):** Optional, +US$ 1.00 / 1,000
- **Seller id or nickname:** Never (store flag and rating only)
- **Resumes after a platform restart without charging twice:** Yes

### What you can do with it

- **Price anything with real sold comps.** Search "seiko 5" or "ポケモンカード 30th" in sold mode and get the final
  price, bids and end time of up to 15,000 ended auctions, newest first.
- **Find underpriced live auctions.** Live mode with `sortBy: endingSoon`, a price cap and `excludeKeywords: ["ジャンク"]`
  (junk) lists what is about to close cheap.
- **Track a category.** Paste a category link (`/category/list/2084041921/`) or a search link with Yahoo's own
  filters; this Actor keeps them.
- **Enrich a list of auctions.** Paste item links (`https://auctions.yahoo.co.jp/jp/auction/x1234567890`) and get the
  full page for each.
- **Feed a spreadsheet or an app.** Export CSV, Excel or JSON, or call it through the Apify API and schedule it.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Keywords, one per line, Japanese or English (nintendo switch, ポケモンカード, seiko 5). |
| `listingStatus` | `sold` (default, ended auctions with final price), `active` (live listings) or `both`. |
| `startUrls` | Search links (`/search/search?p=...`, `/closedsearch/closedsearch?p=...`), category links or item links. |
| `maxResultsPerSearch` | Listings per search, 100 per page. Default 100, up to 15,000. |
| `maxItems` | Hard cap on charged listings for the whole run. |
| `sortBy` | `default`, `newest`, `endingSoon` (live), `priceLow`, `priceHigh`. |
| `minPrice`, `maxPrice` | Price range in yen (Yahoo's own filter). |
| `condition` | `any`, `new` or `used` (Yahoo's own filter). |
| `categoryId` | The number from a category link. |
| `excludeKeywords` | Skip listings whose title has any of these words (free). |
| `storeSellersOnly` | Keep only registered Yahoo! stores (sold listings; live listings with the full item page). |
| `includeDetails` | Open each listing's page: description, all photos, condition, brand, specs, shipping. |

Example: the last 300 used Nintendo Switch consoles sold between 10,000 and 30,000 yen, without junk.

```json
{
  "searchTerms": ["nintendo switch 本体"],
  "listingStatus": "sold",
  "condition": "used",
  "minPrice": 10000,
  "maxPrice": 30000,
  "excludeKeywords": ["ジャンク", "junk"],
  "maxResultsPerSearch": 300
}
```

An empty input runs a small example (20 sold listings for "nintendo switch"), so the Actor never fails on a blank
form.

### Output

#### Sold listing (search), one real row

From a local test run on 2026-09-29 (sold search "ポケモンカード"):

```json
{
  "type": "item",
  "listingStatus": "sold",
  "auctionId": "z694968008",
  "url": "https://auctions.yahoo.co.jp/jp/auction/z694968008",
  "title": "ポケモンカードゲーム 30th CELEBRATION 拡張パック 10パックセット",
  "priceJpy": 6200,
  "buyNowPriceJpy": 6200,
  "startPriceJpy": 6200,
  "bids": 1,
  "watchCount": 7,
  "isFixedPrice": true,
  "isFleaMarket": true,
  "isFreeShipping": true,
  "condition": "new",
  "conditionJa": "新品",
  "startTime": "2026-09-30T01:49:35+09:00",
  "endTime": "2026-09-30T06:55:51+09:00",
  "categoryId": 25826,
  "categoryName": "トレーディングカードゲーム",
  "categoryPath": ["おもちゃ、ゲーム", "ゲーム", "トレーディングカードゲーム"],
  "categoryIdPath": [25464, 27727, 25826],
  "imageUrl": "https://auc-pctr.c.yimg.jp/i/auctions.c.yimg.jp/images.auctions.yahoo.co.jp/image/...jpg",
  "sellerIsStore": false,
  "sellerGoodRatingPercent": 98.9,
  "isFeatured": false,
  "searchTerm": "ポケモンカード",
  "position": 1,
  "source": "sold:ポケモンカード",
  "detailsLoaded": false,
  "scrapedAt": "2026-09-29T21:57:29Z",
  "errorCode": null
}
```

Times are Japan time with the offset (`+09:00`). `condition` uses Yahoo's scale: `new`, `unused`, `like_new`,
`no_visible_damage`, `minor_damage`, `visible_damage`, `poor`; `conditionJa` keeps the Japanese label. Live
listings carry the same fields; in live search results the category comes as ids only (`categoryIdPath`) and the
exact condition only when Yahoo shows it on the card (the full item page always has it).

#### Extra fields with the full item page (`includeDetails`, and every item link)

From the same test run (live search "seiko", shortened):

```json
{
  "title": "★激レア★SEIKO NAVIGATOR TIMER AUTOMATIC セイコー　ナビゲータータイマー",
  "priceJpy": 51000,
  "startPriceJpy": 1000,
  "bids": 47,
  "watchCount": 81,
  "condition": "no_visible_damage",
  "conditionJa": "目立った傷や汚れなし",
  "endTime": "2026-10-01T21:38:25+09:00",
  "categoryPath": ["アクセサリー、時計", "ブランド腕時計", "さ行", "セイコー", "その他"],
  "detailsLoaded": true,
  "description": "1970年代製 SEIKO ナビゲータータイマー稼働品です。 ムーブメント 自動巻  ケースサイズ41ミリ ...",
  "images": ["https://auctions.c.yimg.jp/images.auctions.yahoo.co.jp/image/dr000/auc0209/user/...jpg"],
  "brandPath": ["SEIKO"],
  "itemSpecs": {},
  "keywords": ["その他", "セイコー", "アクセサリー、時計"],
  "quantity": 1,
  "biddersCount": 15,
  "isAutomaticExtension": true,
  "isEarlyClosing": true,
  "returnsAccepted": false,
  "shippingPaidBy": "buyer",
  "shippingMethods": ["おてがる配送宅急便コンパクト"],
  "shipsWithin": "支払い手続きから2～3日で発送",
  "worldwideDelivery": false,
  "auctionStatus": "open",
  "sellerGoodRatingPercent": 92.3,
  "sellerRatingCount": 66
}
```

The run also saves `SEARCH_SUMMARY` in its key-value store: for each sold search, how many sold listings Yahoo has
on record and their average, lowest and highest price (free).

#### Error rows (never charged)

| errorCode | When |
|---|---|
| `NO_RESULTS` | The search found nothing. |
| `NOT_FOUND` | The item link points to an auction that was removed (ended flea-market items often are) or a wrong id. |
| `INVALID_URL` | The link is not a Yahoo! Auctions search, category or item link. |
| `NO_DATA` | The page opened without listing data (retry later). |
| `BLOCKED` | Yahoo! Auctions refused every attempt for that request. |
| `NOT_REACHED` | The run timeout arrived before this item. |
| `INVALID_INPUT` | A field has a value the Actor cannot use (the message says which). |
| `UNEXPECTED` | Anything else; the rest of the run continues. |

### Pricing

Pay per event, no start fee:

| Event | Price per 1,000 (Free plan) | Charged for |
|---|---|---|
| Listing delivered | **US$ 1.50** | each unique sold or live listing |
| Full item page added | **US$ 1.00** | each listing whose page was read (`includeDetails`, item links) |

Examples: 1,000 sold comps cost US$ 1.50. 200 live listings with full pages cost US$ 0.50. Error rows, duplicates,
excluded words and filtered-out listings are free, and `maxItems` is a hard stop.

### How it works and limits

- It reads the same search pages the Yahoo! Auctions website serves, over plain HTTP, through the Apify datacenter
  proxy with a fresh IP for every page (a Japanese residential IP only as a reserve). No login, no browser.
- Yahoo! Auctions shows up to **100 listings per page** and up to **15,000 per search**. Sold search covers the
  auctions Yahoo keeps in its ended-auction search.
- Live search results include up to 3 paid "featured" listings at the top; they are flagged with `isFeatured: true`.
- Ended flea-market (フリマ) items are often removed from Yahoo soon after they sell: their search data is still
  delivered, but the full item page may be gone (then `detailsLoaded` is `false` and the page is not charged).
- **Seller personal data is left out on purpose.** Most sellers are individuals: no seller id, nickname, profile
  link or prefecture is returned, only whether the seller is a registered store and its positive-rating percentage.
  Bidders and Q\&A are not returned either, and emails or phone numbers inside descriptions are replaced by
  `[contact removed]`.

### FAQ

**Do I need a Yahoo! JAPAN account?** No. Everything comes from public pages.

**Can I search in English?** Yes. Yahoo expands many English words (for example "nintendo switch" also matches
ニンテンドースイッチ), but Japanese keywords usually find more.

**Why is the sold price sometimes equal to the buy-now price?** Fixed-price and flea-market listings end at the
buy-now price; `isFixedPrice` and `isFleaMarket` tell them apart from real auctions.

**What if the run is restarted by the platform?** Listings already in the dataset are not charged again: the Actor
reads its own dataset when it starts and skips what was delivered.

**How fast is it?** In our tests: 150 sold listings in 8 s, 50 live listings in 2 s, 8 live listings with full pages
in 7 s.

### Changelog

- **0.1 (2026-09-29):** first version: sold and live search, links, filters, sort, full item page, resume after
  restart.

Independent tool, not affiliated with Yahoo! JAPAN or LY Corporation.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords, one per line, in Japanese or English (for example: nintendo switch, ポケモンカード, seiko 5). Each term runs one Yahoo! Auctions search and returns up to 'Max results per search' listings.

## `listingStatus` (type: `string`):

Sold listings come from Yahoo! Auctions' ended-auction search (recently ended auctions) with the final price and number of bids. Live listings show the current price, buy-now price and end time.

## `startUrls` (type: `array`):

Search links (https://auctions.yahoo.co.jp/search/search?p=... or /closedsearch/closedsearch?p=...), category links (/category/list/2084041921/) or item links (https://auctions.yahoo.co.jp/jp/auction/x1234567890). Search links keep their own filters. Item links always return the full item page.

## `maxResultsPerSearch` (type: `integer`):

How many listings to take from each search, in the chosen order (100 per page). Empty = 100. Yahoo! Auctions shows at most 15,000 per search.

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

Hard cap on charged listings for the whole run, across all searches and links. Empty or 0 = no cap besides the per-search limit.

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

Order of the results. Applies to search terms; search links keep their own order unless you set one here.

## `minPrice` (type: `integer`):

Only listings at or above this price in yen (final price for sold, current price for live).

## `maxPrice` (type: `integer`):

Only listings at or below this price in yen.

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

Yahoo! Auctions' own new / used filter. Empty = any.

## `categoryId` (type: `string`):

The number in a Yahoo! Auctions category link, for example 2084041921 (trading cards) from auctions.yahoo.co.jp/category/list/2084041921/. Empty = all categories.

## `excludeKeywords` (type: `array`):

Words, one per line (for example: ジャンク, junk, 部品取り). Listings with any of them in the title are skipped and not charged.

## `storeSellersOnly` (type: `boolean`):

Keep only listings from registered Yahoo! stores (not individuals). Sold listings carry this flag; live listings need 'Include full item page' on to know it. Skipped listings are not charged.

## `includeDetails` (type: `boolean`):

Open each listing's page and add the description, all photos, exact condition, category and brand path, item specs, shipping methods and seller rating count. Adds US$ 1.00 per 1,000 listings, only when the page is still online (ended flea-market items are often removed).

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

Apify datacenter proxy is the default and works for Yahoo! Auctions. Every page is fetched from a fresh IP; refused requests are retried on another IP, then on a Japanese residential IP.

## Actor input object example

```json
{
  "searchTerms": [
    "nintendo switch"
  ],
  "listingStatus": "sold",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# 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 = {
    "searchTerms": [
        "nintendo switch"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/yahoo-auctions-japan-scraper").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 = {
    "searchTerms": ["nintendo switch"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/yahoo-auctions-japan-scraper").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 '{
  "searchTerms": [
    "nintendo switch"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/yahoo-auctions-japan-scraper --silent --output-dataset

```

## MCP server setup

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

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/oE0d56WL29kSMQhpU/builds/TeuaJNKNbFNXcTD6P/openapi.json
