# Kakaku.com API — Japan's price comparison: search products, every shop's price for a product, price history, specs and category sales rankings

> Keyword search on kakaku.com (価格.com). Rows are kakaku catalogue products (`row_type: product`, with product_id for `product` / `offers` / `price_history`), smartphone model pages (`phone_model`, handset price), and Rakuten / Amazon.co.jp / Yahoo! Shopping listings that kakaku indexes (`mall_item`, with the shop and mall). Sponsored rows are returned apart in `sponsored[]`, never mixed into results. Filters: kakaku search category, mall, price range, price sort. Price sort, price range and the mall filter return mall listings (that is how kakaku answers them).
> ReefAPI engine `kakaku` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/kakaku/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/kakaku/v1/search — 3 credits
Keyword search on kakaku.com (価格.com). Rows are kakaku catalogue products (`row_type: product`, with product_id for `product` / `offers` / `price_history`), smartphone model pages (`phone_model`, handset price), and Rakuten / Amazon.co.jp / Yahoo! Shopping listings that kakaku indexes (`mall_item`, with the shop and mall). Sponsored rows are returned apart in `sponsored[]`, never mixed into results. Filters: kakaku search category, mall, price range, price sort. Price sort, price range and the mall filter return mall listings (that is how kakaku answers them).

**Parameters:**
- `query` (string, required) — Search words, in Japanese or English (e.g. `iphone`, `SSD 2TB`, `プレイステーション5`). Full-width letters are normalised (ｉｐｈｏｎｅ = iphone).
- `category` (string, optional) — Kakaku search category key, as returned in `category_facets` (e.g. `0001` パソコン, `0005_0011` スマートフォン). Digits in groups of four joined by `_`.
- `mall` (enum, optional) — Only listings from one shopping mall. [one of: rakuten, amazon, yahoo]
- `min_price` (integer, optional) — Minimum price in JPY (tax included).
- `max_price` (integer, optional) — Maximum price in JPY (tax included).
- `sort` (enum, optional, default "relevance") — Result order. `relevance` is kakaku's own popularity order; the price sorts return mall listings. [one of: relevance, price_asc, price_desc]
- `page` (integer, optional, default 1) — Result page (40 result rows per page, plus up to 10 sponsored rows).

**Returns:** results[]{row_type (product|phone_model|mall_item), product_id (K…, product rows), model_id (M…, phone_model rows), mall_item_id, title, maker, url, image, category, price_from (the card's '～' from-price, products), price (mall rows), price_text, price_label, price_is_from, currency=JPY, rating, review_count, bbs_count, release_date, release_date_text, spec_highlights[], summary, mall, shop_name} + sponsored[]{title, price_from, shop_name, url} + total, page, has_more, category_facets[]{category, name, count}, mall_facets[]{mall, name, count}

**Example request body:**
```json
{
  "query": "SSD 2TB"
}
```

### POST https://api.reefapi.com/kakaku/v1/product — 2 credits
One kakaku product page: title, maker, images, category path, the live lowest price (checked against the page's structured data and the first shop row), the average price across shops, the highest shop price, the maker's list price, release date, sales rank in its category (position of N, with the ranking key you can pass to `ranking`), review score and count, Q&A (クチコミ) count, favourites, how many shops and offers, and the spec highlights. Use `offers` for the per-shop table, `specs` for the whole spec sheet.

**Parameters:**
- `product_id` (string, optional) — Kakaku product id: `K` + 10 digits, the `product_id` of a search or ranking row (also the id in a product URL kakaku.com/item/K…/). Provide product_id OR url.
- `url` (string, optional) — A kakaku.com product URL; alternative to product_id.

**Returns:** product{product_id, title, maker, maker_id, url, image, images[], category_id, category_name, category_path[]{name, url}, lowest_price, lowest_price_label (最安価格, or 限定価格 on kakaku-exclusive models), average_price, highest_price, currency=JPY, price_mismatch, list_price, release_date, release_date_text, shop_count, offer_count, sales_rank{position, of, category, url}, rating, review_count, bbs_count, favorite_count, spec_highlights[]{label, value}, notice, offer_table, maker_direct_only (sold only on the maker's own site), status, price_history_url, spec_url, review_url}

**Example request body:**
```json
{
  "product_id": "K0001719316"
}
```

### POST https://api.reefapi.com/kakaku/v1/offers — 2 credits
Every shop selling one kakaku product, cheapest first, as kakaku lists them: position, price, gap to the cheapest, shipping (free / from / amount, as printed — kakaku varies it by prefecture), point reward, the effective price (price + shipping − points, only when shipping is one exact amount), stock and dispatch text, store pickup, the shop (id, name, page, the share of buyers who rated it positively and how many ratings in the last 6 months), the shop's own comment and payment methods. The whole table comes in one call.

**Parameters:**
- `product_id` (string, optional) — Kakaku product id: `K` + 10 digits, the `product_id` of a search or ranking row (also the id in a product URL kakaku.com/item/K…/). Provide product_id OR url.
- `url` (string, optional) — A kakaku.com product URL; alternative to product_id.

**Returns:** product{product_id, title, maker, url, lowest_price, average_price, currency=JPY, shop_count, offer_count} + offers[]{position, price, currency, price_diff_from_lowest, shipping_text, shipping_cost, shipping_cost_from, shipping_varies, points, effective_price, stock_text, in_stock, store_pickup, shop{id, name, url, rating_pct, rating_count}, shop_comment, payment_methods[], is_extra_listing} + count

**Example request body:**
```json
{
  "product_id": "K0001719316"
}
```

### POST https://api.reefapi.com/kakaku/v1/specs — 2 credits
The full spec sheet of one kakaku product (スペック・仕様), as group / label / value rows in the source's own Japanese wording.

**Parameters:**
- `product_id` (string, optional) — Kakaku product id: `K` + 10 digits, the `product_id` of a search or ranking row (also the id in a product URL kakaku.com/item/K…/). Provide product_id OR url.
- `url` (string, optional) — A kakaku.com product URL; alternative to product_id.

**Returns:** product{product_id, title, url} + specs[]{group, label, value} + count

**Example request body:**
```json
{
  "product_id": "K0001719316"
}
```

### POST https://api.reefapi.com/kakaku/v1/price_history — 2 credits
Daily price history of one kakaku product (価格推移グラフ): the lowest price and the average shop price for each day kakaku recorded, up to the last two years.

**Parameters:**
- `product_id` (string, optional) — Kakaku product id: `K` + 10 digits, the `product_id` of a search or ranking row (also the id in a product URL kakaku.com/item/K…/). Provide product_id OR url.
- `url` (string, optional) — A kakaku.com product URL; alternative to product_id.

**Returns:** product{product_id, title, url} + points[]{date, lowest_price, average_price} + count + first_date + last_date + all_time_lowest {price, date} + currency=JPY

**Example request body:**
```json
{
  "product_id": "K0001719316"
}
```

### POST https://api.reefapi.com/kakaku/v1/ranking — 3 credits
Kakaku's sales ranking (人気売れ筋ランキング) for one product category: rank, product_id, title, maker, lowest price, review score and count, release date, rank movement, spec highlights and favourites, 40 per page. The category key is the `sales_rank.category` of any `product` (e.g. `pc/ssd/ranking_0537`) or a kakaku ranking URL.

**Parameters:**
- `category` (string, required) — Ranking key `<category path>/ranking_<4-digit code>` (e.g. `pc/ssd/ranking_0537`, `game/game-console/ranking_2050`) or the full kakaku ranking URL. `product` returns it as `sales_rank.category`.
- `page` (integer, optional, default 1) — Ranking page (40 per page). A page past the last ranked product answers NOT_FOUND.

**Returns:** results[]{rank, product_id, title, maker, url, image, lowest_price, currency=JPY, rating, rating_count, release_date, previous_rank_text, rank_change, spec_highlights[]{label, value}, favorite_count} + title, category, page, has_more

**Example request body:**
```json
{
  "category": "pc/ssd/ranking_0537"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=kakaku
- Human docs page: https://reefapi.com/docs/kakaku
- Overview page: https://reefapi.com/kakaku-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
