Kakaku.com API & Scraper
Kakaku.com (価格.com) is Japan's largest price-comparison site: for each product it lists the shops selling it, cheapest first, and keeps a daily price history.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
This API reads it as JSON. `search` takes Japanese or English words and returns kakaku catalogue products with a product_id, smartphone model pages, and the Rakuten, Amazon.co.jp and Yahoo! Shopping listings kakaku indexes, each marked with its row_type; sponsored rows come back separately. `offers` returns every shop for one product in one call: price, gap to the cheapest, shipping as printed, point reward, stock text, store pickup, the shop's rating share and payment methods. `product` adds the lowest, average and highest price, the maker's list price, release date, sales rank in its category, review score and counts. `price_history` returns the daily lowest and average price for up to two years, `specs` the full spec sheet, and `ranking` a category's sales ranking.
What a Kakaku.com field actually contains
Fields that read differently from how they look. Every row was measured against live Kakaku.com pages on 2026-10-14.
| Field | What it holds |
|---|---|
| product_id | Kakaku's product number, K followed by 10 digits (K0001719316), as in kakaku.com/item/K…/. Pass it unchanged to product, offers, specs and price_history; a product URL works too. Search to product returned the same id and title on 9 of 9 products. |
| row_type | search mixes four kinds of rows: product (a kakaku catalogue product with a product_id), phone_model (a smartphone model page, priced as the handset), mall_item (a Rakuten, Amazon.co.jp or Yahoo! Shopping listing kakaku indexes) and sponsored rows, which are returned in sponsored[] and never in results. The price sorts and the mall filter answer with mall listings. |
| price_from (search) | The from-price printed on the search card. It comes from kakaku's search index and can lag the product page: 1 of 9 cards differed on 2026-10-14 (52,455 on the card, 52,344 on the product page). For the live price use product or offers. |
| lowest_price, average_price | lowest_price is the cheapest shop price on the product page; it matched the page's structured data and the first shop row on 9 of 9 products. average_price is kakaku's average across shops, not a price anyone sells at. Both are yen including consumption tax. |
| shipping_text, shipping_cost | Kakaku sets shipping per prefecture. shipping_text is what the table prints: 無料 (free), 無料~ (free to some prefectures, more to others) or an amount. shipping_cost is set only when the text is one exact amount; effective_price (price + shipping - points) only then too. |
| points | The point reward the shop prints next to its price, in yen (550円相当 = 550). |
| shop.rating_pct, shop.rating_count | The share of buyers who rated the shop positively over the last six months and how many ratings that is, as kakaku's shop page prints it (98 % of 351). It is not a 5-star score; null when the shop has no rating yet. |
| sales_rank.category | The key of the product's own category ranking (game/game-console/ranking_2050). Pass it to ranking unchanged: the product sat at the same rank in that ranking on 4 of 4 checks. |
Kakaku shows the same shops, prices and shipping text to every visitor: one product read from three different countries in the same minute returned identical offers. Prices are in yen including Japanese consumption tax.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/kakaku/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "SSD 2TB"
}
}{
"ok": true,
"meta": {
"api": "kakaku",
"endpoint": "search",
"mode": "live",
"latency_ms": 2051.8,
"record_count": 40,
"bytes": 211073,
"cache_hit": false,
"total": 20463,
"row_types": {
"product": 40
},
"sponsored_count": 0,
"price_basis": "JPY, consumption tax included (総額表示; the spec page labels it 最安価格(税込))",
"pagination": {
"page": 1,
"has_more": true
},
"upstream_requests": 1,
"charged_credits": 3,
"version": "0.1.0",
"request_id": "42c977c043004f35",
"queue_ms": 1.6,
"fetched_at": "2026-10-14T18:57:24.868Z"
},
"data": {
"query": {
"query": "SSD 2TB",
"sort": "relevance",
"page": 1
},
"total": 20463,
"page": 1,
"has_more": true,
"results": [
{
"row_type": "product",
"product_id": "K0001233856",
"model_id": null,
"title": "BX500 CT2000BX500SSD1JP",
"image": "https://img1.kakaku.k-img.com/images/productimage/ll/K0001233856.jpg",
"category": "SSD",
"price_from": 37980,
"price_text": "37,980~",
"currency": "JPY",
"maker": "crucial",
"url": "https://kakaku.com/item/K0001233856/",
"price_is_from": true,
"price_label": null,
"not_yet_released": false,
"rating": 4.12,
"review_count": 11,
"bbs_count": 34,
"release_date": "2020-01",
"release_date_text": "2020年1月",
"spec_highlights": [
"2000GB",
"2.5インチ",
"Serial ATA 6Gb/s"
],
"summary": null
},
{
"row_type": "product",
"product_id": "K0001223692",
"model_id": null,
"title": "PCIe Gen3x4 P34A60 SP002TBP34A60M28",
"image": "https://img1.kakaku.k-img.com/images/productimage/ll/K0001223692.jpg",
"category": "SSD",
"price_from": 44980,
"price_text": "44,980~",
"currency": "JPY",
"maker": "Silicon Power",
"url": "https://kakaku.com/item/K0001223692/",
"price_is_from": true,
"price_label": null,
"not_yet_released": false,
"rating": 5,
"review_count": 1,
"bbs_count": null,
"release_date": null,
"release_date_text": null,
"spec_highlights": [
"2000GB",
"M.2 (Type2280)",
"PCI-Express Gen3"
],
"summary": null
},
{
"row_type": "product",
"product_id": "K0001467995",
"model_id": null,
"title": "WD_Black SN850X NVMe SSD WDS200T2X0E",
"image": "https://img1.kakaku.k-img.com/images/productimage/ll/K0001467995.jpg",
"category": "SSD",
"price_from": 59980,
"price_text": "59,980~",
"currency": "JPY",
"maker": "Sandisk",
"url": "https://kakaku.com/item/K0001467995/",
"price_is_from": true,
"price_label": null,
"not_yet_released": false,
"rating": 4.62,
"review_count": 32,
"bbs_count": 160,
"release_date": null,
"release_date_text": null,
"spec_highlights": [
"2000GB",
"M.2 (Type2280)",
"PCI-Express Gen4"
],
"summary": null
}
],
"sponsored": [],
"category_facets": [
{
"category": "0001",
"name": "パソコン",
"count": 20275
},
{
"category": "0003",
"name": "カメラ",
"count": 52
},
{
"category": "0017",
"name": "インテリア・家具",
"count": 31
}
],
"mall_facets": [
{
"mall": "rakuten",
"name": "楽天市場",
"count": 3741
},
{
"mall": "amazon",
"name": "Amazon.co.jp",
"count": 11172
},
{
"mall": "yahoo",
"name": "Yahoo!ショッピング",
"count": 648
}
]
}
}What the Kakaku.com API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | 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). | Pricing teams call search to get keyword search on kakaku.com (価格.com). | query, category, mall, min_price, max_price, ... |
| product | 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. | Marketplace operators call product to get one kakaku product page. | product_id, url |
| offers | 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. | Catalog enrichment teams call offers to get every shop selling one kakaku product, cheapest first, as kakaku lists them. | product_id, url |
| specs | The full spec sheet of one kakaku product (スペック・仕様), as group / label / value rows in the source's own Japanese wording. | Retail analysts call specs to get the full spec sheet of one kakaku product (スペック・仕様), as group / label / value rows in the sou…. | product_id, url |
| price_history | 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. | Pricing teams call price_history to get daily price history of one kakaku product (価格推移グラフ). | product_id, url |
| ranking | 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. | Marketplace operators call ranking to get kakaku's sales ranking (人気売れ筋ランキング) for one product category. | category, page |
Call search from your stack
curl -X POST https://api.reefapi.com/kakaku/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"SSD 2TB"}'import requests
r = requests.post(
"https://api.reefapi.com/kakaku/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "SSD 2TB"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/kakaku/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "SSD 2TB"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.kakaku.search with {"query":"SSD 2TB"}.Who uses this API and why
- Monitor the cheapest Japanese shop price and the number of shops for a list of products every day.
- Build a price-history dataset from two years of daily lowest and average prices per product.
- Compare shop prices, shipping and point rewards for one product across all Japanese shops.
- Track category sales rankings (SSD, game consoles, cameras, notebooks) and rank movement.
- Map Japanese product specs and release dates for a category from the full spec sheet.
Questions developers ask before integrating
Do I need a Kakaku.com account?
No. Everything is read logged out, and you call reefapi.com from anywhere.
Can I search in Japanese?
Yes. Japanese and English words both work, and full-width letters are normalised: "iphone" and "iphone" returned the same 11,281,255 results on 2026-10-14.
How many shops does offers return?
All of them, in one call. The most measured on 2026-10-14 was 50 shops for one camera; a product sold only on its maker's own site has one row and product says maker_direct_only.
Which search filters are there?
Category, mall, price range and price sort. Each was checked against the unfiltered count in the same run: "SSD 2TB" 20,444 → category パソコン 20,254, Rakuten 3,722, Amazon.co.jp 11,172, 10,000 to 20,000 yen 143, from 50,000 yen 14,517.
How far back does price_history go?
Up to two years of daily points (731 days measured). Days before kakaku listed the product are left out, so a product launched in February starts in February.
Does the price depend on where I call from?
No. The same product read from three countries in the same minute returned the same shops, prices and shipping text.
Do you return the review texts?
Not yet. product returns the review score and the number of reviews and Q&A threads; the review texts themselves are not returned.
How deep does ranking go?
As deep as kakaku ranks the category, 40 per page: the SSD ranking had 77 products on 2026-10-14 (page 2 = 41 to 77). A page past the end answers NOT_FOUND.
What is the Kakaku.com API?
Kakaku.com API is a ReefAPI endpoint group for japan's largest price comparison: every shop's price for a product, daily price history, specs and category sales rankings. It returns live JSON through POST requests under /kakaku/v1.
Is the Kakaku.com API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Kakaku.com calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Kakaku.com login or account?
No login to Kakaku.com is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Kakaku.com data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Kakaku.com API use?
Kakaku.com actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Kakaku.com from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call kakaku actions with the same key, credit pool and JSON envelope used by normal REST requests.