# Tower Records Japan Prices — CD, Vinyl, In Stock (`jpmarketdata/tower-records-japan-price-checker`) Actor

Type an artist, album or catalog number and get what Tower Records Japan charges for it today. Returns the typical price and lowest–highest in yen, how many were found, the CD / vinyl / cassette mix, and how many are in stock or out of print. $0.02 per keyword, no results = no charge. Unofficial.

- **URL**: https://apify.com/jpmarketdata/tower-records-japan-price-checker.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 keyword analyzeds

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?

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

## Tower Records Japan Prices — CD, Vinyl, In Stock

> **Unofficial** — independent tool, **not affiliated with, endorsed by, or sponsored by Tower Records**. It reads only publicly visible pages. Support, reliability guarantees and the full disclaimer are at the bottom of this page.

**What it does:** Type an artist, album or catalog number and get what Tower Records Japan charges for it today, and whether the disc is still on the shelf or out of print.

**You enter:** one or more words — `山下達郎`, `YOASOBI`, or a catalog number like `WPCL-13825`.

**You get:** how many releases the shop has, typical price and lowest–highest in yen and USD, exact counts per price band, the CD / vinyl / cassette mix, Japanese pressings vs imports, release eras, and — from the listings read — how many are in stock or out of print.

**Price:** $0.02 per keyword. +$0.002 per row if you also want the list. No results = no charge.

**Example:** enter `山下達郎` → 1,248 releases found · typical ¥2,619 · range ¥440–31,680 · 583 CD, 219 on vinyl (18%), 29 cassette · 1,189 Japanese pressings vs 40 imports · of the 100 cheapest read, 13 out of print (real run, 2026-09-09)

> Unofficial — not affiliated with Tower Records. Reads public pages only.

### Pricing — $0.02 per keyword

| Event | Price | When |
|---|---|---|
| Keyword price summary | **$0.02** | Per keyword looked up |
| Individual listing | **$0.002** | Only if you turn on **Include individual listings** |

A default run (1 keyword, summary only) costs **$0.02** and takes about 13 seconds. You pay per keyword; there is no monthly fee. **A keyword that returns zero listings is never charged.**

### Input

| Field | Example | Notes |
|---|---|---|
| `keywords` | `["山下達郎"]` | Artist, album title or the catalog number on the disc. Japanese and romaji both work (measured 2026-09-09: `山下達郎` 1,248 releases, `YOASOBI` 386). Up to 10 per run, each charged $0.02 |
| `sortBy` | `price_asc` | `price_asc` (default) · `price_desc` · `newest` · `oldest` · `bestselling` · `recommended`. Only `price_asc` reads the price at exact positions in the shop's own cheapest-first order — see the next section |
| `formats` | `["121", "114"]` | Optional. Tower's own format codes: `121` CD, `114` LP, `111` 7-inch, `112` cassette, `131` CD single, `311` book, `331` magazine. Every code in `formatMix` works here |
| `importType` | `any` | `any` (default) · `domestic` · `import` · `import-domestic-spec` (an import sold in Japanese packaging) |
| `exactMatch` | `false` | Turn on to keep only exact text matches. Measured 2026-09-09: `山下達郎` drops from 1,248 to 229 |
| `maxItemsPerKeyword` | `100` | 10–500. How many of the cheapest listings are read — it sets the rows you can get back and what the stock, out-of-print, discount and record-label counts are measured over |
| `includeIndividualItems` | `false` | Turn on to also get one row per listing (+$0.002 each) |
| `convertToUsd` | `true` | Adds USD figures at the current exchange rate. A failed lookup never fails the run |

### Does a number cover every release, or only the ones read?

Every row says so in **`priceBasis`**, and the two kinds of number are kept apart:

| Number | Covers |
|---|---|
| `totalListingsFound`, `priceBands`, `formatMix`, `vinylCount`, `importMix`, `releaseEraMix`, `genreMix` | **Every matching release.** The shop prints these counts itself, and each of the five breakdowns adds up to the count exactly — checked on every run and reported as `facetSumCheck` |
| `priceJpy` (typical price, lowest–highest, middle 50%) | **Every matching release** when `priceBasis` is `population_rank_jump` or `population_all_read`; the listings read when it is `sampled` |
| `stockMixSampled`, `outOfPrintShareSampled`, `discountedCountSampled`, `discountedShareSampled`, `topLabelsSampled`, `sampledAverage` | **Only the listings read** (`sampledListings` says how many, `sampledRanks` where they sit in the cheapest-first order). The shop publishes no counts for stock state or discounts, so these cannot be more than that |

| `priceBasis` | What it means |
|---|---|
| `population_rank_jump` | The shop's cheapest-first order was read at the exact positions that mark the range — so ¥2,619 really is the middle price of all 1,248 releases, not of a sample. Checked two ways: the order must not go backwards (`monotonicityCheck`) and each price must fall inside the band the shop's own counts predict (`bandsVsRankCheck`) |
| `population_all_read` | The word matched few enough releases that every one was read |
| `population_bands` | The fallback, and every number in it is a **floor** — the least that price can be, never an invented one. The typical price and the middle 50% come from the band the shop's own counts put that position in, raised to the dearest listing actually read when the position sits beyond it, and any position that *was* read keeps its exact price. The lowest price stays exact even here: page 1 is always read, and in cheapest-first order its first listing is the cheapest of them all. `max` is empty unless the dearest-listing lookup happened. You get this when a long run's time budget cut the position lookups short (`truncatedForTimeLimit`) |
| `sampled` | The price numbers cover the listings read, not every release. You get this when you chose an order other than cheapest-first, or when the cheapest-first order came back out of order (`monotonicityCheck: violated`) so no position stands for the whole result any more |

### Output example (`type: "price_summary"`)

Measured on 2026-09-09 (real run, `{"keywords": ["山下達郎"], "maxItemsPerKeyword": 100, "includeIndividualItems": false}`). The whole row, nothing shortened.

```json
{
  "type": "price_summary",
  "keyword": "山下達郎",
  "keywordStatus": "ok",
  "site": "tower.jp",
  "currency": "JPY",
  "sortUsed": "SaleLow",
  "totalListingsFound": 1248,
  "sampledListings": 100,
  "sampledRanks": [[1, 100]],
  "priceJpy": {"min": 440, "p25": 1980, "median": 2619, "p75": 3300, "max": 31680, "average": null},
  "priceBasis": "population_rank_jump",
  "sampledAverage": 932,
  "priceBands": [
    {"from": 0, "to": 999, "count": 50},
    {"from": 1000, "to": 1999, "count": 272},
    {"from": 2000, "to": 2999, "count": 488},
    {"from": 3000, "to": 3999, "count": 220},
    {"from": 4000, "to": 4999, "count": 136},
    {"from": 5000, "to": 9999, "count": 61},
    {"from": 10000, "to": null, "count": 21}
  ],
  "formatMix": [
    {"code": "225", "label": "Blu-ray Disc", "labelEn": "Blu-ray", "count": 14},
    {"code": "121", "label": "CD", "labelEn": "CD", "count": 583},
    {"code": "131", "label": "CDシングル", "labelEn": "CD single", "count": 97},
    {"code": "191", "label": "Blu-spec CD2", "labelEn": "Blu-spec CD2", "count": 52},
    {"code": "120", "label": "SHM-CD", "labelEn": "SHM-CD", "count": 25},
    {"code": "132", "label": "8cmCDシングル", "labelEn": "8cm CD single", "count": 19},
    {"code": "190", "label": "UHQCD", "labelEn": "UHQCD", "count": 17},
    {"code": "12A", "label": "SACDハイブリッド", "labelEn": "SACD hybrid", "count": 11},
    {"code": "123", "label": "HQCD", "labelEn": "HQCD", "count": 3},
    {"code": "124", "label": "Blu-spec CD", "labelEn": "Blu-spec CD", "count": 3},
    {"code": "12G", "label": "LABEL ON DEMAND (旧MEG-CD)", "labelEn": "label-on-demand CD", "count": 2},
    {"code": "12E", "label": "CD-R", "labelEn": "CD-R", "count": 1},
    {"code": "221", "label": "DVD", "labelEn": "DVD", "count": 25},
    {"code": "112", "label": "カセットテープ", "labelEn": "cassette", "count": 29},
    {"code": "416", "label": "アパレル", "labelEn": "apparel", "count": 6},
    {"code": "411", "label": "グッズ", "labelEn": "goods", "count": 2},
    {"code": "215", "label": "VHS", "labelEn": "VHS", "count": 1},
    {"code": "114", "label": "LPレコード", "labelEn": "LP vinyl", "count": 138},
    {"code": "111", "label": "7\"シングルレコード", "labelEn": "7-inch vinyl", "count": 78},
    {"code": "115", "label": "12\"シングルレコード", "labelEn": "12-inch vinyl", "count": 3},
    {"code": "311", "label": "書籍", "labelEn": "book", "count": 95},
    {"code": "331", "label": "雑誌", "labelEn": "magazine", "count": 32},
    {"code": "321", "label": "ムック", "labelEn": "book-format magazine", "count": 11},
    {"code": "312", "label": "カレンダー", "labelEn": "calendar", "count": 1}
  ],
  "vinylCount": 219,
  "vinylShare": 0.1755,
  "importMix": [
    {"code": "0", "label": "国内", "labelEn": "domestic", "count": 1189},
    {"code": "1", "label": "輸入", "labelEn": "import", "count": 40},
    {"code": "2", "label": "輸入盤：国内流通仕様", "labelEn": "import, Japan-spec", "count": 19}
  ],
  "releaseEraMix": [
    {"label": "2026～2018", "value": "2026%7c2025%7c2024%7c2023%7c2022%7c2021%7c2020%7c2019%7c2018", "count": 611},
    {"label": "2017～2009", "value": "2017%7c2016%7c2015%7c2014%7c2013%7c2012%7c2011%7c2010%7c2009", "count": 328},
    {"label": "2008～2000", "value": "2008%7c2007%7c2006%7c2005%7c2004%7c2003%7c2002%7c2001%7c2000", "count": 179},
    {"label": "1999～1991", "value": "1999%7c1998%7c1997%7c1996%7c1995%7c1994%7c1993%7c1992%7c1991", "count": 104},
    {"label": "1990～1977", "value": "1990%7c1989%7c1988%7c1987%7c1986%7c1977", "count": 26}
  ],
  "genreMix": [
    {"code": "1", "label": "J-Pop", "labelEn": "J-Pop", "count": 809},
    {"code": "2", "label": "ロック / ポップス", "labelEn": "rock / pop", "count": 87},
    {"code": "5", "label": "ジャズ", "labelEn": "jazz", "count": 73},
    {"code": "3", "label": "ソウル / クラブ / ラップ", "labelEn": "soul / club / rap", "count": 56},
    {"code": "6", "label": "ヒーリング / ニューエイジ", "labelEn": "healing / new age", "count": 20},
    {"code": "7", "label": "ワールド / レゲエ", "labelEn": "world / reggae", "count": 8},
    {"code": "9", "label": "アニメ / キッズ / ゲーム", "labelEn": "anime / kids / game", "count": 5},
    {"code": "4", "label": "カントリー/ ブルース", "labelEn": "country / blues", "count": 3},
    {"code": "8", "label": "サウンドトラック", "labelEn": "soundtrack", "count": 3},
    {"code": "11", "label": "その他クラシック", "labelEn": "other classical", "count": 5},
    {"code": "10", "label": "オペラ", "labelEn": "opera", "count": 1},
    {"code": "12", "label": "ブラス", "labelEn": "brass", "count": 1},
    {"code": "15", "label": "DVD", "labelEn": "DVD", "count": 30},
    {"code": "16", "label": "書籍", "labelEn": "book", "count": 107},
    {"code": "17", "label": "雑誌", "labelEn": "magazine", "count": 32},
    {"code": "18", "label": "グッズ", "labelEn": "goods", "count": 8}
  ],
  "stockMixSampled": [
    {"label": "not sold online", "labelJa": "現在オンラインショップ取扱なし", "count": 43, "share": 0.43},
    {"label": "in stock", "labelJa": "在庫あり", "count": 21, "share": 0.21},
    {"label": "low stock", "labelJa": "在庫わずか", "count": 14, "share": 0.14},
    {"label": "out of print", "labelJa": "廃盤", "count": 13, "share": 0.13},
    {"label": "special order", "labelJa": "お取り寄せ", "count": 9, "share": 0.09}
  ],
  "outOfPrintShareSampled": 0.13,
  "discountedCountSampled": 0,
  "discountedShareSampled": 0.0,
  "topLabelsSampled": [
    {"label": "MOON", "count": 33},
    {"label": "ミュージック・マガジン", "count": 10},
    {"label": "オールデイズ・レコード", "count": 6},
    {"label": "マガジンハウス", "count": 5},
    {"label": "リットーミュージック", "count": 5}
  ],
  "monotonicityCheck": "ok",
  "bandsVsRankCheck": "ok",
  "facetSumCheck": "ok",
  "priceUsd": {"min": 2.86, "p25": 12.87, "median": 17.03, "p75": 21.45, "max": 205.95, "average": null},
  "exchangeRateJpyUsd": 0.006501,
  "truncatedForTimeLimit": false,
  "hint": null,
  "sourceUrl": "https://tower.jp/search/item/%E5%B1%B1%E4%B8%8B%E9%81%94%E9%83%8E?sort=SaleLow&limit=100",
  "checkedAt": "2026-09-09T11:57:31.951784+00:00"
}
```

Read that row from the top: 1,248 releases carry the name, half of them cost between ¥1,980 and ¥3,300, and 219 of them are on vinyl. The 95 books, 32 magazines and 11 book-format magazines in `formatMix` are the reason to look: a name search at this shop also matches print titles that merely feature the artist, and `formatMix` shows you exactly how many before you draw a conclusion from the price. Set `formats` to `["121", "114"]` to keep CD and LP only.

With **Include individual listings** on, each listing is one more row: `itemId`, `name`, `artist`, `artistId`, `format` (+ `formatEn`), `priceJpy`, `discountPct`, `points`, `stockStatus` (+ `stockStatusJa`), `importType` (+ `importTypeJa`), `releaseDate`, `catalogNumber`, `label`, `flags` and `url`.

### What this Actor does not do

- **No sold prices.** Tower Records is a shop: these are shelf prices you can pay today, not what a copy changed hands for. For second-hand sold prices use the Mercari or Yahoo! Auctions tools instead
- **No stock or discount counts covering every release.** The shop publishes counts for price, format, import, era and genre — not for stock state or discounts. Those are measured on the listings read and are labelled that way
- **No artist split.** The shop's artist filter counts 1,508 entries against 1,248 releases, because one release carries several artists, so it would not be a split of anything
- **No cover images, blurbs or reviews.** Only counts and plain facts — title, artist, catalog number, record label, format, price, stock state
- **No listing rows by default.** The product is the summary; the listing rows are opt-in and separately priced
- **No login-only pages, and nothing is kept.** Every run reads public search pages live and stores nothing between runs

### Notes on the data

- **UTF-8, server-rendered, no login.** One search page carries 100 listings (the shop offers 24, 48 or 100) plus its own sidebar counts, which is why a full keyword costs 5 requests and about 13 seconds. Requests are spaced at least 1.5 seconds apart; `robots.txt` sets no delay for general visitors
- **The counts stay exact far past the shop's display limit.** Search pages show 「3000件まで表示しています。」, but that is a display message: on a 68,975-hit search each of the five breakdowns still added up to 68,975 exactly (measured 2026-09-09)
- **The order and the page size are also kept in cookies.** The shop remembers them (`glue_search_item_page_sort` / `glue_search_item_page_limit`), so a reader that keeps cookies silently inherits the previous order. This Actor sends both on every request, keeps no cookies, and reports what it used in `sortUsed`
- **"Out of print" is the shop's own 廃盤 mark**, and it is the state a collector cares about most: the release exists in the catalogue but Tower Records can no longer get it. The other states are 在庫あり (in stock), 在庫わずか (low stock), お取り寄せ (special order), 予約受付中 (preorder) and 現在オンラインショップ取扱なし (not sold online)
- **Discounted listings look different on the page** — they drop the 通常価格 label and show `NN%OFF` in red. They are read the same as any other listing, and `discountPct` carries the number
- **`releaseDate` keeps the shop's precision.** Recent releases print a full date (`2026-04-08`); older catalogue entries print only a month (`1993-12`), and no day is invented for them
- **A field name ending in `Sampled` is measured on the listings read, not on every release.** `stockMixSampled`, `outOfPrintShareSampled`, `discountedCountSampled`, `discountedShareSampled` and `topLabelsSampled` cover the `sampledListings` this run actually read — with the default order, the cheapest 100. So `discountedCountSampled: 0` means *none of the cheapest 100 was marked down*, not *the shop has no sales*: the cheap end of a catalogue is where a markdown is least likely. Raise **Listings read per keyword** to widen what they cover
- **`sampledAverage` is the mean of the listings read, not of every release** — with the default 100 it is the mean of the 100 cheapest, which is why it sits far below the typical price. `priceJpy.average` is deliberately empty whenever the price numbers came from position lookups
- **The shop's own labels are kept alongside the English ones.** `formatMix`, `importMix`, `genreMix` and `stockMix` carry Tower's Japanese label plus a plain-English one, and `genreMix` is matched on the shop's genre code rather than its label text

### If something goes wrong

- **Wrong number or a failed run?** Open a ticket on the **Issues** tab. I read every one and reply within 2 business days (Japan time).
- **You never get a fake "empty" result.** If the site can't be read, the run fails and says so.
- **No results = no charge.** You only pay for results you actually get.
- **Checked every week.** An automatic test runs this tool weekly; if the site changes, I fix it.
- **Public pages only.** No login, no personal data, and it goes easy on the site.

### More tools by the same author

- [BookOff Japan Used Manga, Books, CDs — Price & Stock](https://apify.com/jpmarketdata/bookoff-market-checker)
- [@cosme Japan Beauty Ranking — Top 50 Ratings & Prices](https://apify.com/jpmarketdata/cosme-beauty-market-checker)
- [Digimart Japan Used Guitar & Instrument Prices](https://apify.com/jpmarketdata/digimart-instrument-market-checker)
- [Fujiya Camera Japan Used Camera Prices by Condition](https://apify.com/jpmarketdata/fujiya-camera-market-checker)
- [GU Japan Prices — Typical Price and Markdown Share](https://apify.com/jpmarketdata/gu-japan-price-checker)
- [HobbyLink Japan Gunpla & Figure Prices + Stock Status](https://apify.com/jpmarketdata/hlj-hobby-market-checker)
- [Hobby Search Japan Prices — What's In Stock and % Off](https://apify.com/jpmarketdata/hobbysearch-japan-stock-price-checker)
- [Iosys Japan Used iPhone & Phone Prices by Condition](https://apify.com/jpmarketdata/iosys-phone-market-checker)
- [Mercari Japan Sold Prices — What Items Really Sell For](https://apify.com/jpmarketdata/mercari-japan-price-checker)
- [Yahoo! Auctions Japan Sold Prices — Median, Range, Bids](https://apify.com/jpmarketdata/yahoo-auction-sold-comps)

All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): <https://apify.com/jpmarketdata>

### Disclaimer

Unofficial, independent tool — **not affiliated with, endorsed by, or sponsored by Tower Records**. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.

# Actor input Schema

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

What to look up at Tower Records Japan: an artist, an album title or the catalog number on the disc, in Japanese or romaji (measured 2026-09-09: `山下達郎` 1,248 releases, `YOASOBI` 386). Each word gets its own summary row and is charged $0.02; a word that finds nothing is not charged. Up to 10 per run, and a run stops at the $3.00 Maximum cost per run — raise it in the run options, or split the run.

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

Which order the shop is read in. `price_asc` (the default) is the only order whose typical price and lowest–highest range cover every matching release, because the cheapest-first order is read at exact positions. Any other order measures those on the listings read, and each row says which in `priceBasis`. The number found and the format, import, era and genre breakdowns are exact either way.

## `formats` (type: `array`):

Narrow the search to certain formats using Tower's own codes: `121` CD, `114` LP, `111` 7-inch, `115` 12-inch, `118` 10-inch, `112` cassette, `131` CD single, `120` SHM-CD, `221` DVD, `225` Blu-ray, `311` book, `331` magazine. Left empty it keeps everything the word matches — for an artist that often includes print titles that merely feature them. Every code in `formatMix` works here.

## `importType` (type: `string`):

Keep only Japanese pressings, only imports, or only imports sold in Japanese packaging. `any` (the default) keeps all three and still reports the split, so pick one here only when you want the price numbers themselves measured on that group alone.

## `exactMatch` (type: `boolean`):

Off by default, which is the shop's own broad match. Turn it on to keep only releases whose text matches the word exactly — it cuts the count sharply (measured 2026-09-09: `山下達郎` went from 1,248 to 229), so use it when a common word is pulling in releases you did not mean.

## `maxItemsPerKeyword` (type: `integer`):

How many of the cheapest listings are read for each word. It sets how many rows you can get back (with the toggle below, at +$0.002 per row) and how many listings the stock, out-of-print, discount and record-label counts are measured over. It does not change the number found or the price, format, import and era breakdowns. At 500 rows a word, three words reach the $3.00 Maximum cost per run.

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

Off by default: a run costs a flat $0.02 per keyword summary. Turn it on to also get one row per listing — title, artist, format, price in yen, discount, points, stock state, Japanese pressing or import, release date, catalog number, record label and the link — at +$0.002 per row. No image, description or review text is ever returned.

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

Adds USD figures next to the yen ones at the current exchange rate (open.er-api.com). A failed rate lookup never fails the run — the yen numbers come back on their own.

## Actor input object example

```json
{
  "keywords": [
    "山下達郎"
  ],
  "sortBy": "price_asc",
  "formats": [],
  "importType": "any",
  "exactMatch": false,
  "maxItemsPerKeyword": 100,
  "includeIndividualItems": false,
  "convertToUsd": true
}
```

# Actor output Schema

## `priceSummaries` (type: `string`):

One row per search word with the typical price and range in yen, how many items were found and read, the format mix, and how many of the items read are out of print or marked down.

# 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": [
        "山下達郎"
    ],
    "sortBy": "price_asc",
    "formats": [],
    "importType": "any",
    "exactMatch": false,
    "maxItemsPerKeyword": 100,
    "includeIndividualItems": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/tower-records-japan-price-checker").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": ["山下達郎"],
    "sortBy": "price_asc",
    "formats": [],
    "importType": "any",
    "exactMatch": False,
    "maxItemsPerKeyword": 100,
    "includeIndividualItems": False,
}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/tower-records-japan-price-checker").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 '{
  "keywords": [
    "山下達郎"
  ],
  "sortBy": "price_asc",
  "formats": [],
  "importType": "any",
  "exactMatch": false,
  "maxItemsPerKeyword": 100,
  "includeIndividualItems": false
}' |
apify call jpmarketdata/tower-records-japan-price-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/tower-records-japan-price-checker"
        }
    }
}

```

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/7JmXL75iDqADWD8ch/builds/7tULlcZ2g0gY2ZhcX/openapi.json
