Rakuma listing data from Japan's Rakuten-run flea market
Rakuma (楽天ラクマ, formerly Fril) is Rakuten's consumer-to-consumer flea market and one of Japan's two big secondhand marketplaces alongside Mercari.
4 active endpoints, on 1, 2 and 3 credit tiers.
- POST/rakuma/v1/search
- POST/rakuma/v1/item
- POST/rakuma/v1/seller
- POST/rakuma/v1/categories
What Rakuma endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Rakuma API
1 of 4 endpoints, ready to run
The newest brand-new NIKE listings on Rakuma right now — 40 rows, price in yen, sold state, seller kind and the Rakuten point rebate per listing.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Rakuma API works
Rakuma is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 438 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
From a keyword to a seller's whole shop in three calls
Three calls: search, then item, then categories.
Call `search` with `query` (or `category_id`, or `brand_id`) plus any of the 13 filters — `condition`, `availability`, `shipping_payer`, `listing_source`, `price_min`/`price_max`, `exclude_query`, `sort`/`order`. Read `total_results` for the size of the market and `reachable_rows` for how much of it you can page through.
Take any row's `item_id` — the 32-hex one, not `item_number` — and call `item` for the full record: the seller's description, condition grade, size, all photos, shipping terms, dispatch region, like and comment counts, and the seller's shop id.
Call `seller` with that `seller.shop_id` for the shop's rating, its rating count, how many items it has listed and a page of its live stock. Use `categories` to turn any numeric `category_id` into a name.
Six credits for the 3 calls: search 3, item 2, categories 1. Failed calls are free: a timeout, a block or a capacity error costs nothing.
curl -X POST https://api.reefapi.com/rakuma/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"nike","max_results":20}'{
"ok": true,
"data": { … },
"meta": {
"api": "rakuma",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a Rakuma search row and item record contain
Every number below was measured on live fril.jp pages on 2026-10-02, including the ones that work against us. Fields the source does not publish are listed as not published rather than filled with nulls.
| Field | Type | Notes (measured) |
|---|---|---|
| item_id | string | 32-character hex id — the only id that resolves to a listing page |
| item_number | string | Rakuma's second, numeric id for the same listing. It is NOT an address (requesting it returns 404); it is the key inside the photo URLs. Both are returned so you never resolve the wrong one |
| price_jpy | integer | Price in yen. Yen has no minor unit; verified against three separate values the page itself prints, 160/160 search rows and 12/12 item pages agreed |
| price_display | string | The source's own rendered string, e.g. "¥2,080", so you can check our integer against it |
| is_sold | boolean | Read from the page's own sold ribbon. Rakuma's structured data claims "InStock" on sold listings — 8 of 8 sold items measured — so that value is not republished |
| condition | enum | new · like_new · no_noticeable_flaws · slight_flaws · visible_flaws · poor. Verified against each item page's own condition text, 18/18 agreed |
| size | string | Item page only; 12/12 records carried one, including the seller's own answer "none" |
| brand_id / brand_name | string | Sparse and honestly so: filled on 26/40 womenswear rows but only 3/40 electronics rows — most private sellers do not pick a brand |
| category_id | string | Numeric Rakuma category. Names come from the categories endpoint or an item record's category_path; the search surface publishes the id only, so we publish the id only |
| seller_user_id / seller_type | string | Every row, 320/320. seller_type is business or individual |
| point_rebate_jpy / point_rebate_rate_pct | number | The Rakuten point rebate the listing carries, every row. A rebate of 0 stays 0 |
| images | string[] | Item record only: 6 to 21 photos, median 13 across 12 records |
| seller.rating / rating_count | number | Shop endpoint: average out of 5 and the number of transaction ratings behind it. Cross-checked — one shop's three per-outcome counters (1290 good, 29 neutral, 7 bad) summed exactly to its published count of 1,326 |
| likes_count / comments_count | integer | Item record only |
| listed_at | null | Not published. Nothing on the card, the item page or its structured data carries a listing date, so we return null instead of inventing one — you can still sort newest-first |
| stock / quantity | null | Not published and not invented. Rakuma is C2C: every listing is a single copy |
Paging is honest about its ceiling: 40 rows a page, page 100 is the last one that answers (101 is a 404), so at most 4,000 rows are reachable for one query however large the result total is. Nine sampled pages returned 360 rows with zero duplicates. Narrow with the filters rather than paging deeper. One more caveat worth knowing: Rakuma matches keywords loosely, and for a keyword with no real match it reports an approximate total of 200 and still returns token-level matches — the response flags that with total_results_is_approximate.
What is covered, measured
Every figure below was read off the live source in the run recorded for this page.
Japan (fril.jp, Japanese-language catalogue)
What people build with Rakuma
The jobs this data is most often used for.
endpoints
credits per call
Resale price research for Japanese fashion: pull the sold side of the market for a brand or model, with condition grade and size, to see what items actually closed at rather than what sellers are asking.
Cross-marketplace arbitrage between Rakuma and Mercari Japan: the same brand and category on both, with the Rakuten point rebate included so the effective price is comparable.
Sneaker and streetwear comps: filter by brand id and condition new, sort by newest, and track asking prices and how fast listings disappear into the sold-out side.
Seller and shop intelligence: resolve a listing to its shop, then read the shop's rating, how many ratings back it, how many items it has listed and its current stock — useful for sourcing from Rakuten-vetted official shops.
What Rakuma data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 438 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/rakuma/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"nike","max_results":20}'import requests
r = requests.post(
"https://api.reefapi.com/rakuma/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "nike",
"max_results": 20
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Rakuma.
Get a free key →What is Rakuma and how is it different from Mercari?▾
Rakuma (楽天ラクマ) is Rakuten's consumer-to-consumer flea-market app, formerly called Fril, and it runs on fril.jp. Like Mercari Japan it is dominated by secondhand fashion, sneakers, bags and cosmetics sold by private individuals, but because it is Rakuten's it carries Rakuten point rebates on listings and has a vetted "official shop" tier of business sellers. This API returns the rebate per listing and tells you which tier a seller is in — on one keyword measured 2026-10-02, 4.1% of listings came from official shops and 95.9% from private sellers.
Can I get sold listings, not just active ones?▾
Yes, and that is most of the catalogue. Set availability to sold_out. On the keyword measured 2026-10-02 the split was 253,340 on sale and 1,017,357 sold, and the two add up to the unfiltered total of 1,270,699. Sold listings keep their price and come back with is_sold true — they are an answer, not an error.
How many listings can I actually page through for one search?▾
4,000. Page size is a fixed 40 rows and page 100 is the last page that answers; page 101 returns a 404 upstream, so the API rejects it with a clear message instead. Nine sampled pages gave 360 rows with zero duplicates between them, so the 4,000 are 4,000 distinct listings. If a query reports more results than that, split it with the category, brand, price or condition filters.
Are the condition grades reliable?▾
They are Rakuma's own six seller-declared grades, and we checked the mapping rather than assuming it: for each grade we filtered on it and then read three of the returned items' own condition text from their item pages — 18 of 18 agreed. The six grades' result counts also add up to the unfiltered total to within 0.005%. Note these are the seller's declaration, not an inspection by Rakuten.
Is the price in yen or in some sub-unit?▾
Plain yen as an integer: 2080 means ¥2,080. Yen has no minor unit, but we verified it anyway against three different values the page prints for the same listing plus the structured data on the item page. 160 of 160 search rows and 12 of 12 item pages agreed, and we return the source's own rendered string in price_display so you can check ours. If the witnesses ever disagree, the row carries price_disagrees_with_source.
Why is brand often empty?▾
Because most private sellers do not select one. Measured across four departments: 26/40 rows in womenswear, 15/40 in cosmetics, 17/40 in sport, and as few as 3/40 in electronics. We report it as null rather than guessing a brand from the title. If you need brand-complete data, filter by brand_id — then every row carries it by definition.
Can I search by size?▾
Not as a filter. Rakuma's own size parameters were probed: the per-size one returns a 404 for every value we tried, and the size-group one does change results but Rakuma publishes no readable list of its values. We do not ship a filter we cannot explain, so size is returned as a field on every item record instead — 12 of 12 records carried one — and you filter on it yourself.
Does the API do Japanese or English keywords?▾
Both, with Japanese working better because that is what sellers write. Katakana brand names (ナイキ) and Latin ones (NIKE) both resolve, and you can exclude words too — excluding GOLF took one keyword from 1,270,699 results to 1,226,515 in the same run. Titles, descriptions, condition labels and category names come back in Japanese, as the source publishes them.
What is the Rakuma API?▾
Rakuma API is a ReefAPI endpoint group for japan's rakuten-run c2c resale marketplace — fril.jp listings, items and seller shops It returns live JSON through POST requests under /rakuma/v1.
Is the Rakuma API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Rakuma calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Rakuma login or account?▾
No login to Rakuma 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 Rakuma 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 Rakuma API use?▾
Rakuma actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Rakuma from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call rakuma actions with the same key, credit pool and JSON envelope used by normal REST requests.
99 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Rakuma, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 437 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-02.