Rakuma API

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Rakuma endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
R
/rakuma/v1

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.

4 endpoints

search

3 cr

Search Rakuma listings by keyword, category or brand, with condition, availability, shipping-…

required
—
optional
query, exclude_query, category_id, brand_id, condition, availability, shipping_payer, listing_source, price_min, price_max, sort, order, page

item

2 cr

One full Rakuma listing.

required
item_id
optional
—

seller

3 cr

A Rakuma seller's shop.

required
seller_id
optional
page

categories

1 cr

Rakuma's category ids and names.

required
—
optional
category_id

Every parameter, every allowed value →

Rakuma API

1 of 4 endpoints, ready to run

View docs ↗

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.

3 credits0 required · 0 optional
POST/rakuma/v1/search
idle
// 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.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 438 engines.

02
Call
POST /rakuma/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01search
POST/rakuma/v1/search

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.

02item
POST/rakuma/v1/item

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.

03categories
POST/rakuma/v1/categories

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.

request
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}'
response envelope
{
  "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.

FieldTypeNotes (measured)
item_idstring32-character hex id — the only id that resolves to a listing page
item_numberstringRakuma'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_jpyintegerPrice 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_displaystringThe source's own rendered string, e.g. "¥2,080", so you can check our integer against it
is_soldbooleanRead 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
conditionenumnew · like_new · no_noticeable_flaws · slight_flaws · visible_flaws · poor. Verified against each item page's own condition text, 18/18 agreed
sizestringItem page only; 12/12 records carried one, including the seller's own answer "none"
brand_id / brand_namestringSparse and honestly so: filled on 26/40 womenswear rows but only 3/40 electronics rows — most private sellers do not pick a brand
category_idstringNumeric 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_typestringEvery row, 320/320. seller_type is business or individual
point_rebate_jpy / point_rebate_rate_pctnumberThe Rakuten point rebate the listing carries, every row. A rebate of 0 stays 0
imagesstring[]Item record only: 6 to 21 photos, median 13 across 12 records
seller.rating / rating_countnumberShop 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_countintegerItem record only
listed_atnullNot 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 / quantitynullNot 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.

Market

Japan (fril.jp, Japanese-language catalogue)

What people build with Rakuma

The jobs this data is most often used for.

4

endpoints

1/2/3

credits per call

01

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.

02

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.

03

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.

04

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 →
$0.67–$1.50 / 1,000 credits
  • 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
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}'
python
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"])
FAQ

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.

0/4000

No account needed · we reply from [email protected]

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.