Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Rakuten Ichiba API page →
E-commerce & Marketplaces

Rakuten Ichiba API & Scraper

The Rakuten Ichiba API returns product data from Japan's largest e-commerce marketplace as clean JSON.

7 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

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

The primary search endpoint returns items with name, price (JPY), shop, points, shipping price, review URL and images, and you can pull an item, reviews, variants, a shop, a ranking and the genre tree. It is built for price intelligence, catalog enrichment and Japanese e-commerce analytics that need Rakuten data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

Rakuten Ichiba identifiers: which id is which, and where the prices come from

This is Rakuten Ichiba, the Japanese marketplace at rakuten.co.jp, not Rakuten's US, French or German storefronts. One field name, item_code, means two different things depending on the action, which is the single most likely thing to break a pipeline here. All values below were measured on 2026-08-27 against items seedcoms/10003515-198 and meisei/246.

Identifier or fieldWhat it holdsMeasured example
item_code in search rowsThe numeric item idSearch returned item_code "10000150" for the meisei cable; calling item on that URL returned item_id 10000150
item_code in item detailThe shop's own SKU string, which is not the same thingThe same meisei cable returned item_code "246"; the seedcoms supplement returned item_code "P6-1"
manage_numberThe path segment in item.rakuten.co.jp/<shop_code>/<manage_number>/"10003515-198" for seedcoms, "246" for meisei
shop_codeThe shop's urlCode, always a string"seedcoms", "meisei", "rakuten24"
shop_idNumeric shop id, typed inconsistently across actionsInteger 390372 in search rows, string "390372" in the item response for the same shop
review_urlreview.rakuten.co.jp/item/1/<shop_id>_<item_id>/1.1/270693_10006243 for the seedcoms item, 390372_10000150 for the meisei one
item_priceInteger JPY, no decimals, and no separate tax field anywhere in the response198, 258, 328, 1980
pointsCampaign reward points, not a flat percentage of price20 points on a 258 yen item, 10 on 328, 270 on 1980; one shop page ranged from 6 to 1,882
review_averageStar average, but not always presentnull on the seedcoms item despite review_count 684; 4.429999828338623 on the meisei item, which search reported as 4.43
Rows per responsesearch pages report page_size 45 but return a few more49 and 50 rows measured on two different keywords; ranking returns 80, reviews 30
genre_idNumeric category id, with genre_path giving the ancestrygenre_id "564278" with genre_path "/0/564500/564278"

There is no tax field and no tax-inclusive flag anywhere in the response. item_price is the single integer figure the listing displays, so carry it as-is rather than deriving a pre-tax number from it.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/rakuten/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "keyword": "ヘッドホン"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "rakuten",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1050.9,
    "record_count": 50,
    "bytes": 1000180,
    "cache_hit": false,
    "method": "embedded_ssr_state",
    "url": "https://search.rakuten.co.jp/search/mall/%E3%83%98%E3%83%83%E3%83%89%E3%83%9B%E3%83%B3/",
    "page": 1,
    "page_size": 45,
    "has_more": true,
    "total": 588939,
    "next_page": 2
  },
  "data": {
    "results": [
      {
        "item_code": "10002315",
        "item_name": "Anker Soundcore Q30i (Bluetooth5.3 ワイヤレス ヘッドホン)【ウルトラノイズキャンセリング/外音取り込みモード/Bluetooth対応/ハイレゾ対応(AUX接続時) / 最大80時間音楽再生 / マイク内蔵/専用アプリ対応】",
        "item_price": 9990,
        "currency": "JPY",
        "item_url": "https://item.rakuten.co.jp/anker/a3028n/",
        "shop_name": "アンカー・ダイレクト楽天市場店",
        "shop_code": "anker",
        "shop_id": 294713,
        "review_average": 4.76,
        "review_count": 41,
        "review_url": "https://review.rakuten.co.jp/item/1/294713_10002315/1.1/",
        "image_urls": [
          "https://thumbnail.image.rakuten.co.jp/@0_mall/anker/cabinet/listing/tmb/a3028n/a3028n_normal_v2.jpg"
        ],
        "availability": "in_stock",
        "genre_id": "502835",
        "genre_path": "/0/211742/100155/502835",
        "subtitle": "最大24ヶ月保証",
        "shipping_price": 0,
        "points": 90,
        "is_sold_out": false,
        "product_url": null
      },
      {
        "item_code": "10000135",
        "item_name": "★7/17AM10:00〜クーポン割!【公式限定】 JBL ワイヤレスヘッドホン TUNE770NC | ジェービーエル 高音質 ノイズキャンセリング ヘッドホン ヘッドフォン オーバーイヤー Bluetooth 5.3 アプリ対応 ブルートゥース 折り畳み マルチポイント接続",
        "item_price": 12980,
        "currency": "JPY",
        "item_url": "https://item.rakuten.co.jp/jblstore/tune-770nc/",
        "shop_name": "JBL・AKG公式ストア",
        "shop_code": "jblstore",
        "shop_id": 398768,
        "review_average": 4.7,
        "review_count": 393,
        "review_url": "https://review.rakuten.co.jp/item/1/398768_10000135/1.1/",
        "image_urls": [
          "https://thumbnail.image.rakuten.co.jp/@0_mall/jblstore/cabinet/event/2607m2_thumb/th_tune770_2607m2.jpg"
        ],
        "availability": "in_stock",
        "genre_id": "502835",
        "genre_path": "/0/211742/100155/502835",
        "subtitle": "「 詩羽 ヘッドホン 」JBL PURE BASSサウンドを再現する40mmドライバー搭載 JBL ヘッドホン ヘッドフォン ワイヤレス bluetooth 有線 ワイヤレス",
        "shipping_price": 0,
        "points": 118,
        "is_sold_out": false,
        "product_url": null
      },
      {
        "item_code": "10000021",
        "item_name": "EDIFIER W820NB PLUS Gen2 ワイヤレスヘッドホン Bluetooth 6.1 ノイズキャンセリング Hi-Res LDAC対応 最大88時間再生 マルチポイント接続 折りたたみ式 マイク付き 無線 軽量 オーバーイヤー ヘッドフォン PC スマホ iPhone Android テレビ かわいい",
        "item_price": 8980,
        "currency": "JPY",
        "item_url": "https://item.rakuten.co.jp/edifier-2022/w820nbplus/",
        "shop_name": "EDIFIER楽天市場店",
        "shop_code": "edifier-2022",
        "shop_id": 415727,
        "review_average": 4.59,
        "review_count": 997,
        "review_url": "https://review.rakuten.co.jp/item/1/415727_10000021/1.1/",
        "image_urls": [
          "https://thumbnail.image.rakuten.co.jp/@0_mall/edifier-2022/cabinet/09887945/12271860/imgrc[redacted-phone].jpg"
        ],
        "availability": "in_stock",
        "genre_id": "502835",
        "genre_path": "/0/211742/100155/502835",
        "subtitle": "ノイズキャンセリング・マルチポイント接続・ハイレゾ・LDAC対応・外音取り込み・風切り音低減・折り畳み可能・通話ノイキャン・USB-C急速充電・低遅延ゲームモード・専用アプリ",
        "shipping_price": 0,
        "points": 81,
        "is_sold_out": false,
        "product_url": null
      }
    ],
    "keyword": "ヘッドホン",
    "genre_id": null,
    "page": 1,
    "page_size": 45,
    "has_more": true,
    "total": 588939,
    "next_page": 2
  }
}
Actions

What the Rakuten Ichiba API does

ActionDescriptionConcrete use caseKey params
searchSearch Rakuten Ichiba by keyword or genre with sort and price filters — returns items with name, price (JPY), shop, points, shipping, rating and images. Paginated.Pricing teams call search to search Rakuten Ichiba by keyword or genre with sort and price filters.keyword, q, genre_id, page, sort, ...
itemGet a Rakuten Ichiba product's detail — title, price (JPY), brand, shop, rating, images, category breadcrumbs, spec attributes, shipping and points.Marketplace operators call item to get a Rakuten Ichiba product's detail.url, item_url, shop_code, item_path, manage_number
reviewsGet ALL buyer reviews for a Rakuten Ichiba item, paginated (30/page) — rating, body, reviewer nickname, post date and helpful count, plus the total review count.Catalog enrichment teams call reviews to get ALL buyer reviews for a Rakuten Ichiba item, paginated (30/page).url, item_url, shop_code, item_path, manage_number, ...
variantsGet a Rakuten Ichiba item's SKU variant matrix — every color/size/option combination with its price and images.Retail analysts call variants to get a Rakuten Ichiba item's SKU variant matrix.url, item_url, shop_code, item_path, manage_number
shopList a Rakuten Ichiba shop's catalog by shop_code — every item the shop sells, paginated.Pricing teams call shop to list a Rakuten Ichiba shop's catalog by shop_code.shop_code, sid, page
rankingGet the Rakuten Ichiba best-seller ranking — overall or for a genre, by day/week/realtime/month.Marketplace operators call ranking to get the Rakuten Ichiba best-seller ranking.genre_id, period, page
genresBrowse the Rakuten Ichiba category (genre) tree — top-level categories, or pass genre_id for a subtree.Catalog enrichment teams call genres to get browse the Rakuten Ichiba category (genre) tree.genre_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/rakuten/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"keyword":"ヘッドホン"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.rakuten.search with {"keyword":"ヘッドホン"}.
Use cases

Who uses this API and why

  • Pricing teams call search and ranking to track Rakuten prices and best-sellers by genre.
  • Catalog-enrichment tools use item and variants to fill listings with images and options.
  • Market analysts use genres and shop to map supply and top sellers in the Japanese market.
FAQ

Questions developers ask before integrating

Which Rakuten does this cover?

Rakuten Ichiba, the Japanese marketplace on rakuten.co.jp. Prices come back as integer JPY, item names and review bodies are in Japanese, shop names are Japanese, and images are served from thumbnail.image.rakuten.co.jp and tshop.r10s.jp. Keyword search accepts either Japanese or Latin text: "iphone" reported 8,254,515 matches and "ヘッドホン" reported 601,555.

Why does item_code mean something different in search than in item?

Because the two surfaces label their identifiers differently and the engine passes each through as found. A search row for the meisei cable returned item_code "10000150", which is the numeric item id; calling item on that same URL returned item_id 10000150 and item_code "246", which is the shop's SKU. The safe join key across actions is the pair shop_code plus manage_number, or the item_url itself, not item_code.

Do the prices include tax?

There is no way to tell from the response, because there is no tax field, no tax-inclusive flag and no pre-tax figure in search, item, variants or ranking. item_price is a single integer in JPY, exactly the number the listing shows, and currency is always "JPY". If your accounting needs a split, you have to apply Japanese consumption tax rules yourself against the displayed figure.

What are the points values?

Campaign reward points the buyer earns, and they are not a fixed percentage of the price. Measured examples: 20 points on a 258 yen cable, 10 on a 328 yen case, 270 on a 1,980 yen lotion, and one catalogue page spanning 6 to 1,882 points. points appears on search rows but not on the item detail response, so pull it from a listing row when you need it.

Why is review_average null when review_count is not zero?

The item detail surface does not always carry the aggregate. The seedcoms item returned review_average null alongside review_count 684, and the reviews action returned the same null in its summary while still paging 684 real reviews. Where it is present it can arrive with float artifacts: the meisei item returned 4.429999828338623 for an average that search reported as 4.43. Take the average from a search row and round it.

How do I page through every review on an item?

The reviews action returns 30 per page, with meta.total giving the real count and meta.next_page pointing forward, so 684 reviews is 23 pages. Each row carries rating as an integer 1 to 5, body, reviewer (a Japanese handle ending in さん), helpful_count, posted_at and, usefully, ordered_at, which is the purchase date rather than the review date, so you can measure the gap between buying and reviewing.

Why do search pages return more rows than page_size?

page_size reports 45 but the actual page carries a handful more: two different keyword searches returned 49 and 50 rows. Because the next_page cursor advances by the reported page size, consecutive pages can overlap. Deduplicate on item_url when you concatenate pages rather than assuming every row is new.

What does the variants action give me?

One row per selectable combination, each with variant_id, selector_values, item_price, currency and merchant_sku_id. A phone case returned 31 variant rows across two selectors, タイプ for model and カラー for color, all at the same 328 yen. Two things to expect: variant_id has no consistent format, mixing plain numbers like "24737" with strings like "r-sku00000009", and image_urls came back empty on every variant, so per-variant photos are not available.

What is the Rakuten Ichiba API?

Rakuten Ichiba API is a ReefAPI endpoint group for rakuten ichiba It returns live JSON through POST requests under /rakuten/v1.

Is the Rakuten Ichiba API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Rakuten Ichiba calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Rakuten Ichiba login or account?

No login to Rakuten Ichiba 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 Rakuten Ichiba 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 Rakuten Ichiba API use?

Rakuten Ichiba actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Rakuten Ichiba from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call rakuten actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / rakuten

Rakuten Ichiba

Rakuten Ichiba

base /rakuten/v17 endpoints
post/rakuten/v1/item1 credit

Get a Rakuten Ichiba product's detail — title, price (JPY), brand, shop, rating, images, category breadcrumbs, spec attributes, shipping and points.

ParameterAllowed / rangeDescription
urloptionalFull Rakuten item URL (the simplest input). Alternative: shop_code + item_path.
shop_codeoptionalRakuten shop code (pair with item_path as an alternative to url).
item_pathoptionalItem path within the shop (pair with shop_code).
Try in playground →
post/rakuten/v1/reviews1 credit

Get ALL buyer reviews for a Rakuten Ichiba item, paginated (30/page) — rating, body, reviewer nickname, post date and helpful count, plus the total review count.

ParameterAllowed / rangeDescription
urloptionalFull Rakuten item URL (the simplest input). Alternative: shop_code + item_path.
shop_codeoptionalRakuten shop code (pair with item_path as an alternative to url).
item_pathoptionalItem path within the shop (pair with shop_code).
page = 1optional1–Result page (1-based). Page forward with meta.next_page.
Try in playground →
post/rakuten/v1/variants1 credit

Get a Rakuten Ichiba item's SKU variant matrix — every color/size/option combination with its price and images.

ParameterAllowed / rangeDescription
urloptionalFull Rakuten item URL (the simplest input). Alternative: shop_code + item_path.
shop_codeoptionalRakuten shop code (pair with item_path as an alternative to url).
item_pathoptionalItem path within the shop (pair with shop_code).
Try in playground →
post/rakuten/v1/shop1 credit

List a Rakuten Ichiba shop's catalog by shop_code — every item the shop sells, paginated.

ParameterAllowed / rangeDescription
shop_coderequiredRakuten shop code (the shop's urlCode, e.g. 'rakuten24').
page = 1optional1–Result page (1-based). Page forward with meta.next_page.
Try in playground →
post/rakuten/v1/ranking1 credit

Get the Rakuten Ichiba best-seller ranking — overall or for a genre, by day/week/realtime/month.

ParameterAllowed / rangeDescription
genre_idoptionalGenre id to rank within ('0' = overall, the default).
period = dailyoptionaldaily · weekly · realtime · monthlyRanking time window.
page = 1optional1–Result page (1-based). Page forward with meta.next_page.
Try in playground →
post/rakuten/v1/genres1 credit

Browse the Rakuten Ichiba category (genre) tree — top-level categories, or pass genre_id for a subtree.

ParameterAllowed / rangeDescription
genre_idoptionalGenre id to read the subtree of (omit for the top-level tree).
Try in playground →